我很困惑,为什么在iOS 9 beta中语言代码的返回值与iOS 8.4不同?
功能:
NSUserDefaults.standardUserDefaults().objectForKey("AppleLanguages")
只需将语言设置为“简体中文”,将区域设置为“中国”。
在iOS 8.4中,返回“zh-Hanz”,但在iOS 9 beta 4中返回“zh-Hanz-CN”。 语言ID语法更像是
“[语言指示符] - [脚本指示符] - [区域指示符]”。
Is different with apple document:
这是iOS 9中的新规则吗?有人可以帮我证实这一点。
感谢您的帮助。
答案 0 :(得分:3)
您应该使用componentsFromLocaleIdentifiert来拆分语言环境标识符并查找语言代码。像这里:
+ (NSString*)currentLanguage
{
NSLocale* locale = [NSLocale currentLocale];
NSString* identifier = locale.localeIdentifier;
NSDictionary* components = [NSLocale componentsFromLocaleIdentifier:identifier];
NSLog(@"components:\n%@", components);
return [components valueForKey:NSLocaleLanguageCode];
}
答案 1 :(得分:2)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *allLanguage = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [allLanguage objectAtIndex:0];
NSLog(@"The current language is : %@", currentLanguage);
iOS 9之前:返回:语言ID。例如:“zh-Hans”
iOS 9:返回:语言ID +区域ID。例如:“zh-Hans-US”
注意:
1.不要使用以下方法检查当前语言。
if ([currentLanguage isEqualToString:@"zh-Hans"])
您可以改用以下方法:
if ([currentLanguage hasPrefix:@"zh-Hans"])
另外:如果你关心中文,你必须注意这些:
注意:在某些情况下,我们会有不同的结果,特别是当你处理中文时。这有点奇怪。例如:
我的手机是:中国大陆/中国电信/ A1533 / 16GB 当我选择语言为台湾时,该地区就是 中国,香港或台湾,结果是“zh-TW”,当你设置了 区域为非中国区域,语言将改为 繁体中文。
所以请特别注意语言,尤其是在处理中文语言时!
您还可以在此处查看iOS 9适配详情:https://github.com/ChenYilong/iOS9AdaptationTips