NSLocale始终返回en_US

时间:2010-08-02 10:49:38

标签: iphone localization

我想获得当前选择的iphone语言。如果使用“NSLocale”,它将始终返回相同的语言。看来这不是你在iphone设置中选择的那个。

NSLocale * locale = [NSLocale currentLocale];
NSString * localLanguage = [locale objectForKey:NSLocaleLanguageCode];
NSLog (@"Language : %@", localLanguage); // Returns always : "en_US"

如何获取当前语言?

5 个答案:

答案 0 :(得分:16)

答案是检查首选语言:

NSString *preferredLang = [[NSLocale preferredLanguages] objectAtIndex:0];

答案 1 :(得分:7)

这个问题很老,但是因为升级到Xcode 6.1,原因很新 由于存在错误,iOS8模拟器的[NSLocale currentLocale]始终返回" en_US"。虽然它在设备上没问题。 因此,我建议在真实设备上进行测试,然后沮丧地将头撞在墙上。


资料来源:https://stackoverflow.com/a/26510914/3099609
https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc6_release_notes.html#//apple_ref/doc/uid/TP40001051-CH4-DontLinkElementID_23

答案 2 :(得分:3)

Locales封装了有关语言,文化和技术惯例和标准的信息。 您的代码返回“Region Format”信息,如果设置为“China”,则返回“zh”。 设置|一般|国际|区域格式

有关详细信息,请参阅“NSLocale Class Reference”。

答案 3 :(得分:2)

答案 4 :(得分:-1)

尝试[[NSLocale autoupdatingCurrentLocale] objectForKey:NSLocaleLanguageCode]