ios 9 + Xcode 7的升级破坏了iOS本地化

我使用Localizable.strings文件和NSLocalizedString macro将我的应用程序以意大利语和英语Localizable.strings 。 我也启用了base localization 。 一切工作正常,在模拟器和iOS 8设备上,但在iOS 9上,应用程序始终是英语,即使在iPhone设置中select意大利语言为默认设备的设备上。 iOS 9是否改变了本地化的东西?

以下是Xcode本地化设置的屏幕截图
http://i.imgur.com/xc20yjj.png 1

和用于testing的设备
http://i.imgur.com/QCjn52u.png

提前致谢

解决了,“问题”是info.plist文件中关键的“Localization native development region”。 它被设置到意大利,所以当应用程序运行在默认意大利语言的设备上时,它显示了string的基本本地化版本(英文版本)。 改变价值到美国解决了这个问题。

我有另一个解决scheme,只需删除info.plist中的关键“本地化”。 它适用于我的情况。

我find了一个解决方法。 这个问题的根源是苹果改变了iOS 9的“语言标识符”,请参考这个 。

由于NSLocalizedString() (及其变体)访问NSLocalizedString()"AppleLanguages"键以确定用户对首选语言的设置。 我强制NSLocalizedString使用一种特定的语言,一旦我发现他们的语言标识是新的格式,在旧的iOS版本中将其标记为旧的语言标识符。 换句话说,我做了一个"AppleLanguages"键值的映射。

为此,请参考: 如何强制NSLocalizedString使用特定的语言

我认为苹果在兼容性方面做得很糟糕!