在iOS中获取最新的设备语言?
我想显示设备用户界面正在使用的当前语言。 我会使用哪些代码?
我想把它作为一个完全拼出格式的NSString
。 (不是@“en_US”)
编辑:对于那些开车来说,这里有很多有用的评论,因为答案已经随着新的iOS版本发展。
所提供的解决方案实际上会返回设备的当前区域 - 而不是当前选择的语言。 这些往往是一样的。 但是,如果我在北美,并且我的语言是日语,我的地区仍然是英语(美国)。 为了检索当前选择的语言,你可以这样做:
NSString * language = [[NSLocale preferredLanguages] firstObject];
这将返回当前所选语言的双字母代码。 “en”表示英语,“es”表示西班牙语,“de”表示德国人等。更多示例请参见维基百科条目(特别是639-1栏):
ISO 639-1代码列表
然后,将两个字母代码转换为您想要显示的字符串很简单。 所以如果它是“en”,则显示“英语”。
希望这可以帮助那些希望区分地区和当前所选语言的人。
编辑
值得引用来自NSLocale.h的头文件信息:
+ (NSArray *)preferredLanguages NS_AVAILABLE(10_5, 2_0); // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information
对app语言感兴趣的人可以看看@ mindvision的答案
所选答案返回当前设备语言,但不是应用程序中使用的实际语言。 如果您没有在您的应用中为用户的首选语言提供本地化,则可以使用按用户的首选订单排序的第一个本地化版本。
发现您的本地化中使用的当前语言
[[NSBundle mainBundle] preferredLocalizations];
例:
NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
迅速:
let language = NSBundle.mainBundle().preferredLocalizations.first as NSString
iOS 9解决方案:
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
language =“en-US”
NSDictionary *languageDic = [NSLocale componentsFromLocaleIdentifier:language];
languageDic将拥有所需的组件
NSString *countryCode = [languageDic objectForKey:@"kCFLocaleCountryCodeKey"];
countryCode =“美国”
NSString *languageCode = [languageDic objectForKey:@"kCFLocaleLanguageCodeKey"];
languageCode =“en”
链接地址: http://www.djcxy.com/p/47377.html上一篇: Getting current device language in iOS?
下一篇: What is the difference between #import and #include in Objective