How*_*ear 7 objective-c nslocalizedstring ios
NSLocalizedString只有一半的时间可以恢复所引用键的预期值.其他时候我回到NSLocalizedString中指定的密钥名称,并且在每次其他运行时都会一直发生.
目前,我目前只支持英语.
我打电话给:
NSString *someText = NSLocalizedString(@"mystring.keyname", nil);
Run Code Online (Sandbox Code Playgroud)
en.lproj/Localizable.strings的内容:
"mystring.keyname" = "Hello there!";
Run Code Online (Sandbox Code Playgroud)
当它不能正常工作时,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 Code Online (Sandbox Code Playgroud)
这会在每次运行时打印出预期值:
Run #1:
Local Dict: (null)
localizedStringForKey: Hello there!
Localized String: Hello there!
Run #2:
Local Dict: (null)
localizedStringForKey: Wha happened?
Localized String: mystring.keyname
Run Code Online (Sandbox Code Playgroud)
我的文件是这样布局的:
WORKSPACE_DIR/
my_workspace_name.xcworkspace
PROJECT_DIR/
- my_project_name.xcodeproj
RESOURCES_DIR/
- en.lproj/
Localizable.strings
Run Code Online (Sandbox Code Playgroud)
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'
Run Code Online (Sandbox Code Playgroud)
Localizable.strings配置为UTF-16虽然我没有在文件检查器中看到选中了字符串文件的文本设置选项.但我已经通过在TextWrangler中打开文件验证了编码类型,该文件使用Unix LF显示编码为Unicode(UTF-16).
关于如何让这个工作一直有效的任何建议?
小智 1
您的目标中应该有多个名为“Localized.strings”的文件。Xcode 无法处理这个问题。您可以重命名一个,并使用“NSLocalizedStringFromTable”从中加载。详细信息,您可以参考: 本地化字符串并不总是可以在项目中使用 ShareKit
| 归档时间: |
|
| 查看次数: |
1785 次 |
| 最近记录: |