我们有一个支持英语和英语的应用程序法语本地化,我们使用NSBundle的首选本地化来检索当前的设备区域设置
NSArray *prefLocalizations = [NSBundle preferredLocalizationsFromArray:[NSArray arrayWithObjects:@"English", @"French",nil]];
所以对于英语,它返回英语,法语返回法语,数组有一个元素。将语言从法语更改为西班牙语时,应用程序已本地化为英语,因为它不受支持。这里的问题是我们希望prefLocalization返回英语,但它返回法语。知道为什么会这样,以及如何解决它?
编辑:CFBundleDevelopmentRegion设置为en
答案 0 :(得分:3)
原因
当您将操作系统主要语言设置为西班牙语时,默认情况下首选语言的顺序为:
我在其他操作系统上发现了相同的行为,比如f.e.在Xbox上。我实际上在西班牙长大,我发现大多数人都有英语作为第二语言,所以,这对我来说没有任何意义(可能因为西班牙语比法语更接近英语?)。
如何修复
在iOS 8中,您可以在设置>中更改语言的顺序。一般>标题Preferred Language Order
下的语言和地区(请参阅this post)。
另一种选择是检查主要语言并自己选择本地化:
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *languageToSelect;
if([language isEqualToString:@"fr"])
{
languageToSelect=@"fr";
}
else
{
languageToSelect=@"en";
}