2015-09-22 164 views
5

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

这里的Xcode的截图本地化设置
http://i.imgur.com/xc20yjj.png1

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

在此先感谢

+0

你有什么建议,应该是什么问题? 该应用程序今天上午被批准并从App Store下载,仅显示英文版本的内容 – lorenzoliveto

+0

@lorenzoliveto您能展示两件事:Xcode项目本地化的屏幕截图以及您的测试的设备语言+区域设备设置为? – wakachamo

+0

我添加了问题的截图。 – lorenzoliveto

回答

8

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

+0

我遇到了同样的问题。但是我把价值改变成'Unite States'并没有帮助。我的第二语言是中国传统。 –

+0

但是,如果我将iOS设备的“区域”设置更改为“统一国家”,则可以在我的应用程序中看到中文。为什么“区域”设置很重要? –

+0

您的基本字符串文件是英文还是中文? – lorenzoliveto

1

我找到了解决方法。 此问题的根本原因是Apple在iOS 9中更改了“语言标识符”,请参阅this

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

要做到这一点,请参考:How to force NSLocalizedString to use a specific language

我认为苹果在兼容性做了一个非常糟糕的工作!

+0

注意,我无法找到一个方法来添加本地化的资源与代码‘ZH-TW’,我只能添加‘ZH’,‘ZH-汉特’或只有“zh-Hant-TW”。不知道它是否是苹果的错误。 –

2

我有另一种解决方案,只需删除info.plist中的'Localizations'键即可。 它适用于我的情况。

+0

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