iOS 9 + Xcode 7 升级后,iOS 本地化出现问题

7
我使用Localizable.strings文件和NSLocalizedString宏将我的应用本地化为意大利语和英语。我还启用了基本本地化。在模拟器和iOS 8设备上一切正常,但在选择意大利语作为iPhone设置中的默认语言的设备上,iOS 9上的应用程序始终是英文。 iOS 9在本地化方面有什么变化吗?
以下是Xcode本地化设置的屏幕截图:
http://i.imgur.com/xc20yjj.png1 以下是用于测试的设备的屏幕截图:
http://i.imgur.com/QCjn52u.png 提前感谢。

1
你的Scheme运行在哪种语言中?在Xcode的面包屑导航中选择你的应用程序标题(位于模拟器选择器旁边)-> 编辑Scheme... -> 运行 -> 选项 -> 应用程序语言? - wakachamo
应用程序语言已设置为系统语言。 实际上一切似乎都很正常,但我不知道该看哪里。 - LorenzOliveto
似乎英语有4个本地化文件,但意大利语只有2个 - 这可能是原因吗?您的项目中哪些文件被本地化了? - wakachamo
我删除了英文本地化,因为它是基础版的副本,但应用仍然是英语。 我将在接下来的几天内调查这个奇怪的问题。 似乎它忽略了设置中的默认语言,并加载了基础字符串。 - LorenzOliveto
4个回答

9

问题已解决,“问题”是info.plist文件中的“本地化原生开发区域”键。它被设置为意大利,因此当应用在默认语言为意大利语的设备上运行时,它显示了字符串的基本本地化版本(英文版)。 将该值更改为美国即可解决问题。


我遇到了同样的问题。但是将值更改为“美国”并没有帮助。我的第二语言是繁体中文。 - Ducky Chen
然而,如果我将iOS设备的“地区”设置更改为“美国”,那么我就可以在我的应用程序中看到中文。为什么“地区”设置很重要呢? - Ducky Chen
你的基础字符串文件是英文还是中文? - LorenzOliveto
我的基础字符串文件是英文的。 - Ducky Chen
抱歉,我无法提供帮助,这是一种非常奇怪的行为。 - LorenzOliveto
我检查了[NSLocale preferredLanguages]的返回值,它显示3个对象..'zh-TW'、'en-TW'和'zh-Hans-TW'。第一个应该是'zh-Hant-TW'。在iOS 8.x中,它将返回'zh-Hant'。我的设备语言设置为繁体中文,我的地区是台湾。 - Ducky Chen

2

我有另一种解决方案,只需在info.plist中删除键“Localizations”即可。这对我的情况有效。


这对我有用。在我的情况下,Project-Info-Localization和info.plist-Localization是不同的。 - Minsu

1
我找到了一个解决方法。这个问题的根本原因是苹果在iOS 9中更改了“语言标识符”,请参考this
由于NSLocalizedString()(及其变体)访问NSUserDefaults中的"AppleLanguages"键,以确定用户对首选语言的设置,因此一旦发现他们的语言ID处于新格式中,我就强制NSLocalizedString使用特定的语言,该语言在旧版本的iOS中被记录为其旧语言标识符。换句话说,我创建了一个"AppleLanguages"键值的映射。
要做到这一点,请参考:如何强制NSLocalizedString使用特定的语言 我认为苹果在兼容性方面做得非常糟糕!

请注意,我找不到一种方法来添加代码为“zh-TW”的本地化资源,我只能添加“zh”,“zh-Hant”或“zh-Hant-TW”。不确定这是否是苹果的一个错误。 - Ducky Chen

0

所以我发现你必须添加你想要应用程序支持的语言。你必须手动选择本地化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接