2013-01-23 38 views
6

NSLocalizedString只有一半的時間返回預期的引用鍵值。其他時候,我找回在NSLocalizedString中指定的密鑰名稱,並且每隔一次運行就會一直髮生。NSLocalizedString有時加載字符串,並不總是

目前,我目前只支持英文。

我打電話:en.lproj/Localizable.strings的

NSString *someText = NSLocalizedString(@"mystring.keyname", nil); 

內容:

"mystring.keyname" = "Hello there!"; 

當它不能正常工作,someText'smystring.keyname

以下是我正在測試的可靠性:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSBundle *bundle = [NSBundle bundleForClass:[self class]]; 
    NSLog(@"Strings file: %@", [bundle pathForResource:@"Localizable" ofType:@".strings"]); 
    NSLog(@"Localizations: %@", [bundle localizations]); 
    NSLog(@"Local Dict: %@", [bundle localizedInfoDictionary]); 
    NSLog(@"localizedStringForKey: %@", [bundle localizedStringForKey:@"mystring.keyname"value:@"Wha happened?" table:nil]); 
    NSLog(@"Localized String: %@", NSLocalizedString(@"mystring.keyname", @"Are you sure you want to start a new game?")); 
} 

此打印出每次其他運行的預期值:

Run #1: 
Local Dict: (null) 
localizedStringForKey: Hello there! 
Localized String: Hello there! 

Run #2: 
Local Dict: (null) 
localizedStringForKey: Wha happened? 
Localized String: mystring.keyname 

我的文件奠定了這樣:

WORKSPACE_DIR/ 
    my_workspace_name.xcworkspace 
    PROJECT_DIR/ 
    - my_project_name.xcodeproj 
    RESOURCES_DIR/ 
     - en.lproj/ 
      Localizable.strings 

XCode的項目級設置:

1) Build Phases has Localizable.strings listed in the "Copy Bundle Resources". 

2) Build Settings: 
    Convert Copied Files => YES 
    Property List Output Encoding => binary 
    Strings file Output Encoding => UTF-16   

3) Info.plist's: CFBundleDevelopmentRegion => 'en' 

Localizable.strings配置爲UTF-16雖然我沒有看到這個文件檢查器與選擇的字符串文件的文本設置選項。但是我通過在TextWrangler中打開文件來驗證編碼類型,該文件使用Unix LF顯示編碼爲Unicode(UTF-16)。

關於如何在任何時候都能正常工作的建議?

+0

你有沒有找到這個解決方案?有同樣的問題,其他運行本地化不起作用。 –

回答

1

請求解決方案後幾分鐘,我找到了它。 我已經包含來自第三方的另一個Localizable.strings。一旦我刪除了,每隔一次運行就不會丟失翻譯。

3

如果您的localisable文件中有任何額外的分號,它將生成但它無法本地化。

相關問題