昨天Xcode更新到v6.1。
现在,[NSLocale preferredLanguages]在iPhone中返回一个空数组,但仅适用于IOS 8 - 在iPhone 5和6模拟器中。 IOS 7模拟器仍然正常工作。
物理iPhone 6设备似乎没有受到影响 - 它只是模拟器。
通常的尝试 - 清理项目,重启Xcode,重启Mac - 没有任何区别。那么,什么是最好的策略 - 等待Xcode 6.1.1,或者向Apple列表(哪一个)发送投诉?
答案 0 :(得分:7)
您可以按照here中的说明使用currentLocale
方法调整类别。该类别允许一次性覆盖项目中所有目标的一般语言和区域设置。
您也可以单独使用每个目标的方案设置。 如果您的应用中有很多本地化,
您可以在每个目标的方案设置中更改Application language
和Application region
。您甚至可以为每个本地化创建单独的目标,以便更快地进行语言测试。
Product -> Scheme -> Edit scheme...
答案 1 :(得分:0)
首先,他们是模拟器,而不是模拟器。其次,我没有看到在Xcode 6.1(6A1052c)和任何iOS 8.1模拟器下为[NSLocale preferredLanguages]
返回一个空数组,但我总是看到"en"
返回,无论系统设置中选择何种语言。正如您所注意到的,我确实看到了任何iOS 7模拟器的正确行为。
如果尚未提交错误,我会提交错误投诉:Changing language on iOS 8.1 simulator does not work的更多信息。
答案 2 :(得分:0)
我已经将此标记为愚蠢行为。全局首选项不适用于iOS 8.1模拟器。本地化就是这样的全球偏好。参见:
请参阅iOS8.1 Simulator always uses US keyboard layout despite german hardware keyboard
至于"策略" ...您可以注意到它是发行说明中记录的已知问题并等待修复,或者您可以在http://bugreport.apple.com提交雷达
答案 3 :(得分:0)
设定产品 - >方案 - >偏好...没有帮助我,所以我做了一个简单的解决方法:
NSString *language = [[NSLocale preferredLanguages] count] > 0 ?
[[NSLocale preferredLanguages] objectAtIndex:0] :
@"en";