我遇到了这个问题,主屏幕中的应用程序名称显示错误的语言.仅当应用程序不支持用户的首选语言时才会发生这种情况.我已经在Xcode 8和iOS 10中使用模拟器和真实设备中的多个项目对此进行了测试.
如果应用程序不支持用户的首选语言,则使用应用程序的开发区域(CFBundleDevelopmentRegion)显示界面语言,如本文档中所述.到现在为止还挺好.但是,主屏幕中的应用程序名称不符合此标准,它似乎.lproj按字母顺序选择英语或第一个文件夹(如果英语不存在).
假设我的应用支持以下语言:
我的设备设置如下所示:
以下声明:
[NSLocale preferredLanguages]
Run Code Online (Sandbox Code Playgroud)
返回预期结果:
<__NSArrayM 0x79da6b30>(
en
)
Run Code Online (Sandbox Code Playgroud)
而这另一个声明:
[[NSBundle mainBundle] preferredLocalizations]
Run Code Online (Sandbox Code Playgroud)
也返回预期的结果:
<__NSArrayM 0x79716630>(
zh
)
Run Code Online (Sandbox Code Playgroud)
但是,主屏幕中的应用程序名称使用了错误的本地化:
我错过了什么吗?有没有人遇到过这个问题?
重现步骤:
预期成绩:
用户界面和应用程序名称应以应用程序开发语言显示(示例中为中文).
观察结果:
用户界面以应用程序开发语言(示例中为中文)显示,而应用程序名称以日语显示.
首先,这是一个典型的问题,包含很多细节,是重现您的问题的良好指南;)
分析
此行为似乎是从 iOS 10 开始的错误。我无法在 iOS9.3 上重现它,其中显示了预期的捆绑包显示名称“中文”。iOS 11 Beta 4 似乎也有这个 bug。您应该向 Apple 提交错误(请参阅他们的BugReporter)
我已经使用 Xcode8.3.3 和 iOS 10.3 SDK 构建的应用程序测试了所有这些。
解决方法
作为一个简单的解决方法,您可以将 Info.plist 中的 CFBundleDisplayName 设置为 DevelepmentRegion-Language(“中文”)的本地化值,该值将充当默认值。
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |