未从基文件检索iOS Localizable.strings

未从基文件检索iOS Localizable.strings,ios,ios7,localization,ios6.1,localizable.strings,Ios,Ios7,Localization,Ios6.1,Localizable.strings,我在iOS上进行本地化时遇到了一个问题,我认为这是我第一次尝试本地化,所以我可能误解了 我有三个可本地化的.strings文件: 基础 "TAB_TITLE_Camera" = "CAMERA"; 英语 "TAB_TITLE_Camera" = "Camera"; "TAB_TITLE_Camera" = "Cámara"; 西班牙语 "TAB_TITLE_Camera" = "Camera"; "TAB_TITLE_Camera" = "Cámara"; iOS 6.1 在Xco

我在iOS上进行本地化时遇到了一个问题,我认为这是我第一次尝试本地化,所以我可能误解了

我有三个可本地化的.strings文件:

基础

"TAB_TITLE_Camera" = "CAMERA";
英语

"TAB_TITLE_Camera" = "Camera";
"TAB_TITLE_Camera" = "Cámara";
西班牙语

"TAB_TITLE_Camera" = "Camera";
"TAB_TITLE_Camera" = "Cámara";


iOS 6.1

Xcode 5上,运行iOS 6.1的第四代iPod Touch英语和西班牙语似乎可以工作,但如果我换成德语(或没有本地化文件的任何其他语言),它不会拉 从Base Localizable.strings,而是从English文件中提取

为什么它不从基文件中提取

为什么会从英语文件中提取


iOS 7.1


另外,第五代iPod Touch运行的是iOS 7.1,当我切换到德语时,它似乎是从上一个选择的语言中提取的,该语言有本地化文件,英语西班牙语。啊

找到了一种方法来确定我是否拥有当前所选语言的本地化文件,如果没有,我可以从基础本地化文件中提取

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

没有本地化文件的任何其他内容都将返回摄影机

简单的解决方案,我需要的一切


可以在iOS 6.1和iOS 7.1上运行。也许我可以使用NSLocalizedStringFromTable来选择基本文件。我会调查一下的。就缺几把钥匙怎么样?