我想获得当前选择的iphone语言。如果使用“NSLocale”,它将始终返回相同的语言。看来这不是你在iphone设置中选择的那个。
NSLocale * locale = [NSLocale currentLocale];
NSString * localLanguage = [locale objectForKey:NSLocaleLanguageCode];
NSLog (@"Language : %@", localLanguage); // Returns always : "en_US"
如何获取当前语言?
答案 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)
添加SteamTrout的建议:
要让您的语言响应iPhone设置的更改,您将要使用autoupdatingCurrentLocale: https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSLocale_Class/Reference/Reference.html#//apple_ref/occ/clm/NSLocale/autoupdatingCurrentLocale
如果您仔细阅读currentLocale参考,那么您将看到此值不会从设置面板更新: https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSLocale_Class/Reference/Reference.html#//apple_ref/occ/clm/NSLocale/currentLocale
答案 4 :(得分:-1)
尝试[[NSLocale autoupdatingCurrentLocale] objectForKey:NSLocaleLanguageCode]