【问题标题】:"Español (México)" language setting uses "Spanish" strings instead of "Spanish (Latin America)" strings“Español (México)”语言设置使用“Spanish”字符串而不是“Spanish (Latin America)”字符串
【发布时间】:2014-05-08 19:15:30
【问题描述】:

我们的 iOS 项目为“Spanish”(es.lproj) 和“Spanish (Latin America)”(es-419.lproj) 提供了本地化字符串,这些字符串是在 Xcode 中创建的。

但是,在 iPhone(美国,最新的 iOS 7)上,西班牙语的唯一语言选项是“Español”和“Español(墨西哥)”,没有“Latin America”。当您选择“Español (México)”时,它会使用我们应用程序中的“Spanish”字符串,而不是预期的“Spanish (Latin America)”字符串。

在进一步调查中,[[NSBundle mainBundle] preferredLocalizations] 返回@[@"es"]。即使[[NSBundle mainBundle] localizations] 返回一个包含“es”和“es-419”的数组也是如此。

但是,[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] 返回一个包含“es-MX”的数组。

然后是下面的表达式:

[NSBundle preferredLocalizationsFromArray:@[@"es-419", @"es"]
                           forPreferences:@[@"es-MX"]]

返回@[@"es"]

为什么 Xcode 会为我们提供“西班牙语(拉丁美洲)”本地化,而您实际上在手机上选择了唯一的拉丁美洲西班牙语选项时并没有使用它?

【问题讨论】:

  • 你找到答案了吗?我对 es_CL 有类似的问题(它只返回 es)

标签: ios localization localizable.strings


【解决方案1】:

这在 iOS 9 和 10 中有所改变,应该可以正常工作。但是,如果您的项目中不存在您的本地化,它将选择 Base 本地化(如果存在)。只有一个 Base 可用;如果您的用户选择“es-MX”作为他的电话语言,而您只有“es”,它将从基础本地化中选择字符串,而不是从“es”基础西班牙语翻译中选择。

【讨论】:

    【解决方案2】:

    Xcode 列出的语言比 iOS 支持的多得多。 iOS 支持的语言列表是一个不断变化的目标,随着每个 iOS 版本的发布而扩展。您几乎必须从当时可用的列表中选择与您的真实目标语言最接近的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 2018-03-30
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      相关资源
      最近更新 更多