NSLocalizedString只有一半的時間返回預期的引用鍵值。其他時候,我找回在NSLocalizedString中指定的密鑰名稱,並且每隔一次運行就會一直髮生。NSLocalizedString有時加載字符串,並不總是
目前,我目前只支持英文。
我打電話:en.lproj/Localizable.strings的
NSString *someText = NSLocalizedString(@"mystring.keyname", nil);
內容:
"mystring.keyname" = "Hello there!";
當它不能正常工作,someText's
值mystring.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)。
關於如何在任何時候都能正常工作的建議?
你有沒有找到這個解決方案?有同樣的問題,其他運行本地化不起作用。 –