2014-09-05 48 views
1

我在iOS上以本地化的方式工作,但這是我第一次嘗試本地化,因此可能是我誤會了。從BASE文件中檢索不到iOS Localizable.strings

我有三個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第四代iPod Touch運行的iOS 6.1英語西班牙似乎工作,但如果我更改爲德國(或任何其他語言沒有本地化文件),它不會從基地Localizable.strings拉 ,而不是它拉從英語文件。

爲什麼它不是BASE文件?

爲什麼DOES它從英文文件?


的iOS 7.1

而且,與第5代iPod Touch運行的iOS 7.1,當我更改爲德國它似乎來自具有最後選定的語言拉本地化文件英文西班牙語。咦?

+0

也許我可以使用NSLocalizedStringFromTable來選擇基本文件。我會研究一下。 – GRW 2014-09-18 17:26:39

回答

2

找到一種方法來確定我是否擁有當前所選語言的本地化文件,如果沒有,我可以從基地拉本地化文件。

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], @""); 

如果當前的語言是:

英語返回相機

西班牙返回卡馬拉

別的不具有本地化文件返回CAMERA

簡單的解決方案,做我需要的一切。

適用於iOS 6.1iOS 7.1

+0

只是一些關鍵缺席? – c0ming 2017-09-30 02:55:28