2010-12-08 34 views
2

有人可以給我一個想法如何找到問題。 我有一個名爲「MyApp」的應用程序。我想將應用程序名稱本地化爲德語。我在主項目目錄中有一個目錄de.lproj。它包含一個文件Localizable.strings並且工作正常。 我添加了一個InfoPlist.strings文件,並在那裏我把:CFBundleDisplayName的本地化無法工作,無論我嘗試

CFBundleDisplayName =「Applikationsname」;

但它不會顯示已翻譯的名稱,它會保留在「MyApp」上。以下是我試過到目前爲止:

  • 三重檢查拼寫和大小寫
  • 清潔從設備上的所有
  • 刪除應用程序,並在 模擬器
  • 在模擬器
  • 刪除用戶目錄
  • 改變了英語應用在MyApp-Info.plist中的名稱 - 工作。
  • 重讀任何我能找到的 蘋果文檔和大量的谷歌搜索,確認 它應該工作。

無論我嘗試過什麼,應用程序名稱都是MyApp-Info.plist中的一個。 我也是在應用程序委託記錄此:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSString *currentLanguage = [languages objectAtIndex:0]; 
NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"]; 
NSLog(@"Product Name:%@",prodName); 
NSLog(@"Current Locale: %@", [[NSLocale currentLocale] localeIdentifier]); 
NSLog(@"Current language: %@", currentLanguage); 

輸出是:

2010-12-08 12:51:00.886 MyApp[25148:207] Product Name:MyApp 
2010-12-08 12:51:00.946 MyApp[25148:207] Current Locale: de_DE 
2010-12-08 12:51:00.946 MyApp[25148:207] Current language: de 

所以語言設置是正確的,但應用程序將無法讀取InfoPlist.strings文件? 任何想法如何從這裏繼續?

在此先感謝您的回覆。

回答

1

好吧,它似乎終於工作。我想我錯誤地創建了InfoPlist.strings: 從資源選項卡中選擇字符串文件,並指定de.lproj作爲目標文件夾。

刪除文件並在項目根目錄中創建一個新文件後,創建可本地化的版本就完成了。 如果有人絆倒這一點,請注意,您還必須在en.lproj中編輯相應的文件。

1

我今天解決了這個問題。您應該使用NSBundle-localizedInfoDictionary方法得到字典,因此,你可以得到本地化的字符串CFBundleDislplayName

3

就我而言,我的Xcode項目只有用於本地化:

  • 英語(開發語言)
  • 日本

(和 「使用基地國際化」 選中)

...但是我的InfoPlist。字符串文件只有本地化:

  • 基地
  • 日本

當我添加的文件的英語版本,它開始工作。 在此之前,無論我嘗試什麼,應用程序圖標都會顯示目標名稱(產品名稱)。

我是「基地」作爲默認值(即「所有的語言不明確支持」)的假設下,但似乎實際行爲更爲複雜...

希望這有助於有人。

+1

Nicolas:我注意到了。我認爲當應用程序打開時(即接口),Base本地化爲默認啓動。你有沒有深入一點? – allaire 2016-12-04 15:42:42

相關問題