iOS9 AppleLanguages与旧版iOS不同

我现在如何获得实际的系统语言?似乎他们在最后一次冲刺后放置了区域后缀.所以在cs之前现在是cs-DE,如果语言是捷克语,区域设置是德语.但有些语言没有像GB语言这样的后缀是en-GB,但区域设置是德语.
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* language = [defs objectForKey:@"AppleLanguages"];
Nsstring* preferredLang = [language objectAtIndex:0];
NSLog(@"localeIdentifier: %@",preferredLang);

解决方法

使用NSLocale类中的componentsFromLocaleIdentifier方法

Here is the documentation

你可以这样做:

Nsstring* localeID = [NSLocale currentLocale].localeIdentifier;
NSDictionary* components = [NSLocale componentsFromLocaleIdentifier:localeID];
Nsstring* languageID = components[NSLocaleLanguageCode];

编辑

如果当前翻译的应用程序语言不是设备的语言,那么以这种方式获取语言会产生一些问题.确实,
组件[NSLocaleLanguageCode]将返回设备的语言.

获取应用程序的当前语言,您应该使用[[NSBundle mainBundle] preferredLocalizations] .firstObject.

获取设备的区域,您仍然可以使用组件[NSLocaleCountryCode]

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...