iOS 是不是依赖另一个区域本地化字符串?

Posted

技术标签:

【中文标题】iOS 是不是依赖另一个区域本地化字符串?【英文标题】:Does iOS fall back on another regional localized string?iOS 是否依赖另一个区域本地化字符串? 【发布时间】:2017-09-11 18:41:28 【问题描述】:

ios 应用程序有一个 Localizable.strings 文件,用于带有区域的语言 es-MX(西班牙语-墨西哥),但没有该语言的通用本地化文件,例如es(西班牙语)。

设备区域设置为es-PE(西班牙语-秘鲁)的用户会看到es-MX 的翻译,还是会退回到基本语言en

【问题讨论】:

好问题。我不知道答案。但无论哪种方式,都不需要很长时间就可以建立一个实验来测试它。最多只需要一个小时左右。您只需要一个标签和不同语言的不同字符串。 @Fogmeister 我希望有人参考文档,因为测试只能告诉我这么多。请参阅下面的答案。 【参考方案1】:

我在模拟器上用iOS 10.3试了一下,结果是:

如果存在es-MX 翻译,但没有es 翻译,则区域设置为es-PE 的用户的Localizeable.strings 会退回到基本语言,在我的情况下为en

如果有人对文档有参考,请发表评论,我会将其添加到答案中。因为如果当前未定义行为,它可能会在未来的 iOS 版本中发生变化,甚至可能取决于语言和地区。有些地区可以作为其他地区的“父母”,例如es-419(西班牙拉丁美洲)代表es-MX(西班牙-墨西哥),所以如何定义回退行为会很有趣。

但是,由于es-419 是一种可以在 iOS 设置中选择的独特语言,我假设后备层次结构是:

base
↑
|- es
   ↑
   |- es-MX
   |- es-PE
   |- es-419
   |- es-ES

【讨论】:

以上是关于iOS 是不是依赖另一个区域本地化字符串?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UILabel 在使用另一种语言时没有初始化? (iOS 本地化)

找出 iOS 中的实际本地化(相对于当前区域)?

应用程序本地化显示 iOS 中的键而不是值

ios 中用于 DateFormatters 的“区域”设置的目的

LFS 系列从零开始 DIY Linux 系统:基本系统配置 - 系统区域设置

第九章:配置本地项目依赖