iOS:如何获取设备当前的语言设置?

我的应用程序中有一些function应该基于设备运行的语言设置。

我想获得实际的语言,而不是一些国家的设置。 例如,如果语言是英语,我不在乎是否是美国,英国,澳大利亚等等。

我熟悉NSLocale对象,但它似乎与Region Format设置,而不是语言设置(请参阅下面的屏幕截图),所以当我尝试使用[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]检索语言[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]我得到像English (United States)而不是English ; 另外,我认为我所需要的是语言数据,而不是区域格式 (我是吗?)。

任何人都可以指导我如何检索语言设置?

在这里输入图像说明

用户首选的语言存储可以作为数组从当地语言检索,当前语言标识符是该数组中的第一个对象:

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

如果你希望语言更具可读性,那么使用displayNameForKey:value: NSLocale方法:

 NSString *langID = [[NSLocale preferredLanguages] objectAtIndex:0]; NSString *lang = [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:langID]; 

尝试这个:

 NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; NSArray* arrayLanguages = [userDefaults objectForKey:@"AppleLanguages"]; NSString* currentLanguage = [arrayLanguages objectAtIndex:0]; 

Swift获取语​​言和区域:

  LF.log("language", NSLocale.preferredLanguages()) LF.log("locale", NSBundle.mainBundle().preferredLocalizations) 

在我的情况下,我得到:

 language: '( "zh-Hans" )' locale: '( en )' 

迅速:

 let language = NSBundle.mainBundle().preferredLocalizations[0] as NSString 
 NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 

在XCode的帮助文档中find解决scheme,它写道:

获取当前的语言

要从主应用程序包获取应用程序使用的语言,请使用NSBundle类中的preferredLocalizations方法:

NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;

要了解在本地化中使用的当前语言

 [[NSBundle mainBundle] preferredLocalizations] 

例:

 NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]; 

得到两个字母的单词

 NSString *language = [[[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0] substringToIndex:2]; 

迅速:

 let language = NSBundle.mainBundle().preferredLocalizations.first as NSString 

使用下面的代码来获取本地化语言,而不会对en-india,en-us等造成困扰。

  NSString *Ph = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]; 

在ios9之后,这个代码需要考虑

工作scheme:

  let language = NSLocale.preferredLanguages()[0] let languageDic = NSLocale.componentsFromLocaleIdentifier(language) as NSDictionary //let countryCode = languageDic.objectForKey("kCFLocaleCountryCodeKey") let languageCode = languageDic.objectForKey("kCFLocaleLanguageCodeKey") as! String print(languageCode)