iOS Localizable.strings未从BASE文件中检索

时间:2014-09-05 07:40:42

标签: ios ios7 localization ios6.1 localizable.strings

我在 iOS 上进行本地化工作的问题与我认为的方式有关,但这是我第一次尝试本地化,所以也许我误解了。

我有三个 Localizable.strings 文件:

"TAB_TITLE_Camera" = "CAMERA";

英语

"TAB_TITLE_Camera" = "Camera";

西班牙语

"TAB_TITLE_Camera" = "Cámara";

NSLocalizedString(@"TAB_TITLE_Camera", nil)

iOS 6.1

Xcode 5 上使用第4代iPod Touch iOS 6.1 英语西班牙语似乎有效,但如果我改为德语(或没有本地化文件的任何其他语言),它就不会拉 来自 Base Localizable.strings ,而不是来自英语文件。

为什么 BASE 文件中提取?

为什么 DOES 来自英文文件?


iOS 7.1

此外,当第5代iPod Touch 运行 iOS 7.1 时,当我更改为德语时,它似乎从最后选择的语言中提取具有本地化文件,英语西班牙语。咦?!

1 个答案:

答案 0 :(得分:2)

找到一种方法来确定我是否有当前所选语言的本地化文件,如果没有,我可以从 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], @"");

如果当前语言是:

英文,它会返回相机

西班牙语它会返回Cámara

其他没有本地化文件的内容会返回 CAMERA

简单的解决方案,可以完成我需要的一切。

适用于 iOS 6.1 iOS 7.1