在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