【发布时间】:2017-07-25 23:54:05
【问题描述】:
我遇到了这个问题,主屏幕中的应用名称以错误的语言显示。仅当应用程序不支持用户的首选语言时,才会发生这种情况。我已经在 Xcode 8 和 iOS 10 中使用模拟器和真实设备中的多个项目对此进行了测试。
当应用不支持任何用户的首选语言时,界面语言将使用应用的开发区域 (CFBundleDevelopmentRegion) 显示,如this document 中所述。到目前为止,一切都很好。但是,主屏幕中的应用名称不支持这一点,它似乎按字母顺序选择英文或第一个 .lproj 文件夹(如果不存在英文)。
假设我的应用支持以下语言:
我的设备设置如下所示:
以下声明:
[NSLocale preferredLanguages]
返回预期结果:
<__NSArrayM 0x79da6b30>(
en
)
还有这句话:
[[NSBundle mainBundle] preferredLocalizations]
也返回预期的结果:
<__NSArrayM 0x79716630>(
zh
)
但是,主屏幕中的应用名称使用了错误的本地化:
我错过了什么吗?你们中有人遇到过这个问题吗?
重现步骤:
- 创建一个新的 iOS 项目。
- 转到项目设置 -> 信息 -> 本地化并添加第二语言,例如日语。
- 将 CFBundleDisplayName 添加到 Info.plist 文件中。
- 将 CFBundleDevelopmentRegion 更改为 zh_CN。
- 创建新的 InfoPlist.strings 文件。在检查器选项卡中,在本地化下单击“本地化...”按钮。从下拉列表中选择将其移动到中文 lproj 文件夹中。
- 在检查器选项卡中,在本地化下选中日语复选框。
- 编辑 InfoPlist.strings 文件并添加 "CFBundleDisplayName" = "Chinese";或“CFBundleDisplayName”=“日语”;分别。
- 在模拟器或真实设备中运行应用程序,并将其语言和区域设置设置为不同于中文或日语的设置,例如英语和美国
预期结果:
用户界面和应用名称应以应用开发语言(示例中为中文)显示。
观察结果:
用户界面以应用开发语言(示例中为中文)显示,而应用名称以日语显示。
【问题讨论】:
标签: ios localization