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