ios 9 + Xcode 7的升级破坏了iOS本地化
我使用Localizable.strings
文件和NSLocalizedString macro
将我的应用程序以意大利语和英语Localizable.strings
。 我也启用了base localization
。 一切工作正常,在模拟器和iOS 8设备上,但在iOS 9上,应用程序始终是英语,即使在iPhone设置中select意大利语言为默认设备的设备上。 iOS 9是否改变了本地化的东西?
以下是Xcode本地化设置的屏幕截图
1
和用于testing的设备
提前致谢
解决了,“问题”是info.plist文件中关键的“Localization native development region”。 它被设置到意大利,所以当应用程序运行在默认意大利语言的设备上时,它显示了string的基本本地化版本(英文版本)。 改变价值到美国解决了这个问题。
我有另一个解决scheme,只需删除info.plist中的关键“本地化”。 它适用于我的情况。
我find了一个解决方法。 这个问题的根源是苹果改变了iOS 9的“语言标识符”,请参考这个 。
由于NSLocalizedString()
(及其变体)访问NSLocalizedString()
的"AppleLanguages"
键以确定用户对首选语言的设置。 我强制NSLocalizedString
使用一种特定的语言,一旦我发现他们的语言标识是新的格式,在旧的iOS版本中将其标记为旧的语言标识符。 换句话说,我做了一个"AppleLanguages"
键值的映射。
为此,请参考: 如何强制NSLocalizedString使用特定的语言
我认为苹果在兼容性方面做得很糟糕!