iOS 本地化因升级而中断 iOs 9 + Xcode 7
iOS localization is broken with the upgrade iOs 9 + Xcode 7
我使用 Localizable.strings
文件和 NSLocalizedString macro
将我的应用本地化为意大利语和英语。我还启用了 base localization
。在模拟器和 iOS 8 的设备上一切正常,但在 iOS 9 上,应用程序始终为英语,即使在 iPhone 设置中选择意大利语作为默认语言的设备上也是如此.
iOS 9 是否通过本地化改变了什么?
这是 Xcode 本地化设置的屏幕截图
1
以及用于测试的设备
提前致谢
已解决,"problem" 是 info.plist 文件中的键 "Localization native development region"。它被设置为意大利,因此当应用程序在默认使用意大利语的设备中 运行 时,它会显示字符串的基本本地化版本(英语版本)。
将值更改为美国解决了问题。
我找到了解决方法。
这个问题的根本原因是Apple在iOS 9中更改了"Language Identifiers",请参考this。
由于 NSLocalizedString()
(及其变体)访问 NSUserDefaults
中的 "AppleLanguages"
键以确定用户对首选语言的设置。一旦我发现他们的语言 ID 是新格式,我就强迫 NSLocalizedString
使用一种特定的语言,并在旧 iOS 版本中将其标记为旧语言标识符。也就是说,我做了一个"AppleLanguages"
键值的映射。
具体操作请参考:How to force NSLocalizedString to use a specific language
我觉得苹果在兼容性方面做得很差!!
我有另一个解决方案,只需删除 info.plist 中的密钥 'Localizations' 即可。
它适用于我的情况。
我使用 Localizable.strings
文件和 NSLocalizedString macro
将我的应用本地化为意大利语和英语。我还启用了 base localization
。在模拟器和 iOS 8 的设备上一切正常,但在 iOS 9 上,应用程序始终为英语,即使在 iPhone 设置中选择意大利语作为默认语言的设备上也是如此.
iOS 9 是否通过本地化改变了什么?
这是 Xcode 本地化设置的屏幕截图
以及用于测试的设备
提前致谢
已解决,"problem" 是 info.plist 文件中的键 "Localization native development region"。它被设置为意大利,因此当应用程序在默认使用意大利语的设备中 运行 时,它会显示字符串的基本本地化版本(英语版本)。 将值更改为美国解决了问题。
我找到了解决方法。 这个问题的根本原因是Apple在iOS 9中更改了"Language Identifiers",请参考this。
由于 NSLocalizedString()
(及其变体)访问 NSUserDefaults
中的 "AppleLanguages"
键以确定用户对首选语言的设置。一旦我发现他们的语言 ID 是新格式,我就强迫 NSLocalizedString
使用一种特定的语言,并在旧 iOS 版本中将其标记为旧语言标识符。也就是说,我做了一个"AppleLanguages"
键值的映射。
具体操作请参考:How to force NSLocalizedString to use a specific language
我觉得苹果在兼容性方面做得很差!!
我有另一个解决方案,只需删除 info.plist 中的密钥 'Localizations' 即可。 它适用于我的情况。