iOS Localizable.strings未从BASE文件中检索
我在iOS上进行本地化工作时遇到的问题就像我认为的那样,但这是我第一次尝试本地化,所以也许我误解了。
我有三个Localizable.strings文件:
基础
"TAB_TITLE_Camera" = "CAMERA";
英语
"TAB_TITLE_Camera" = "Camera";
西class牙语
"TAB_TITLE_Camera" = "Cámara";
NSLocalizedString(@"TAB_TITLE_Camera", nil)
iOS 6.1
在运行iOS 6.1的第4代iPod Touch的 Xcode 5上, 英语和西class牙语似乎有效,但是如果我改为德语 (或没有本地化文件的任何其他语言),它不会从Base Localizable.strings中提取,而是从英文文件。
为什么它不从BASE文件中提取?
为什么它会从英文文件中提取出来?
iOS 7.1
此外,对于运行iOS 7.1的第5代iPod Touch ,当我更改为德语时,它似乎从最后选择的具有本地化文件( 英语或西class牙语)的语言中提取。 咦?
找到一种方法来确定我是否有当前所选语言的本地化文件,如果没有,我可以从Base本地化文件中获取。
NSString *path = [[NSBundle mainBundle] pathForResource:[[NSLocale preferredLanguages] objectAtIndex:0] ofType:@"lproj"]; if (path == nil) { path = [[NSBundle mainBundle] pathForResource:@"Base" ofType:@"lproj"]; } NSLocalizedStringFromTableInBundle(@"TAB_TITLE_Camera", @"Localizable", [NSBundle bundleWithPath:path], @"");
如果当前语言是:
英文它返回相机
西class牙语它返回Cámara
任何没有本地化文件的东西都会返回CAMERA
简单的解决方案,完成我需要的一切
适用于iOS 6.1和iOS 7.1 。