gpt4 book ai didi

ios - NSBundle 的首选语言环境返回错误的本地化

转载 作者:行者123 更新时间:2023-11-28 19:53:34 26 4
gpt4 key购买 nike

我们有一个支持英语和法语本地化的应用程序,我们使用 NSBundle 的首选本地化来检索当前设备区域设置

    NSArray *prefLocalizations = [NSBundle preferredLocalizationsFromArray:[NSArray arrayWithObjects:@"English", @"French",nil]];

因此,对于英语,它返回英语,而法语返回法语,数组只有一个元素。将语言从法语更改为西类牙语时,应用程序将本地化为英语,因为它不受支持。这里的问题是我们希望 prefLocalization 返回英语,但它返回法语。知道为什么会发生这种情况以及如何解决它吗?

编辑:CFBundleDevelopmentRegion 设置为 en

最佳答案

原因

当您将操作系统的主要语言设置为西类牙语时,默认情况下首选语言的顺序是:

  1. 西类牙语
  2. 法语
  3. 英语
  4. ...

我在其他操作系统上发现了相同的行为,比如 f.e.在Xbox。我实际上是在西类牙长大的,我发现大多数人都将英语作为第二语言,所以,这对我来说真的没有任何意义(也许是因为西类牙语更接近法语而不是英语?)。

如何修复

在 iOS 8 中,您可以在 设置 > 通用 > 语言和地区 中的 首选语言顺序 标题下更改语言顺序(参见 this post)。

另一种选择是检查主要语言并自行选择本地化:

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *languageToSelect;
if([language isEqualToString:@"fr"])
{
languageToSelect=@"fr";
}
else
{
languageToSelect=@"en";
}

关于ios - NSBundle 的首选语言环境返回错误的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com