iOS本地化随着iOs 9 + Xcode 7的升级而被打破

3pmvbmvn  于 2023-04-08  发布在  iOS
关注(0)|答案(4)|浏览(154)

我使用Localizable.strings文件和NSLocalizedString macro将我的应用本地化为意大利语和英语。我还启用了base localization。在模拟器和iOS 8设备上一切正常,但在iOS 9上,应用始终为英语,即使在iPhone设置中默认选择意大利语的设备上也是如此。iOS 9是否会在本地化方面有所改变?
下面是Xcode本地化设置的截图


1
以及用于测试的装置的名称

先谢谢你了

yrwegjxp

yrwegjxp1#

解决了,“问题”是info.plist文件中的关键字“本地化本地开发区域”。它被设置为意大利,因此当应用程序在默认使用意大利语的设备上运行时,它会显示字符串的Base本地化版本(英语版本)。将值更改为美国解决了这个问题。

p1tboqfb

p1tboqfb2#

我有另一个解决方案,只需删除info.plist中的“Localizations”键。它适用于我的情况。

zz2j4svz

zz2j4svz3#

我已经找到了解决方法。这个问题的根本原因是Apple在iOS 9中更改了“语言标识符”,请参阅this
由于NSLocalizedString()(及其变体)访问NSUserDefaults中的"AppleLanguages"键以确定用户对首选语言的设置。我强迫NSLocalizedString使用特定的语言,当我发现他们的语言ID是新格式时,在旧的iOS版本中将其标记为旧的语言标识符。换句话说,我对"AppleLanguages"键值进行了Map。
为此,请参阅:How to force NSLocalizedString to use a specific language
我认为苹果在兼容性方面做得非常糟糕!!

j2qf4p5b

j2qf4p5b4#

所以我发现你已经添加了你想让应用支持的语言。你必须手动选择它进行本地化。

相关问题