为什么localizedStringForKey
首先返回开发语言的本地化而不是iPhone的语言? documentation中的“捆绑搜索模式”说:
如果首选语言存在.lproj文件夹,则使用该本地化。否则,捆绑包将搜索与下一个首选语言匹配的.lproj文件夹,依此类推,直到找到一个。如果首选语言没有本地化,则捆绑包会选择开发语言本地化。
然后捆绑包按以下顺序[...]
搜索资源
但这对我没有意义。
测试iPhone采用中文,法语键盘,捆绑包含32种语言,开发语言本地化为英文。我不明白为什么首先返回英语本地化是有道理的。为什么不是中文这个iPhone语言?
NSArray* arr = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
// ( zh-Hant-FR, en-FR, fr-FR )
NSArray* localizations = [bundle localizations];
// ar,bg,ca,cs,da,de,el,en,es,fr,he,hu,id,it,ja,ko,ms,nb,nl,nn,pl,pt,pt_BR,ro,ru,sv,th,tr,uk,vi,zh-Hans,zh-Hant
NSArray* preferredLocalizations = [bundle localizations];
// same output
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
NSString* str = [bundle localizedStringForKey:@"hello" value:@"" table:@"mytable"];
// hello
我该如何解决这个问题?无论开发语言如何,我都希望localizedStringForKey
始终返回iPhone语言本地化。
答案 0 :(得分:0)
使用它
NSLocalizedStringWithDefaultValue("requiredTranslationKey", @"StringFileName", [NSBundle mainBundle], @"", @"");