我们有如下所示的代码来获取用户的语言首选项:`NSLocale preferredLanguages`包含 “美”,因为iOS的9
NSString *language = [[NSLocale preferredLanguages] firstObject];
的iOS 8.4之前,language
是 “ZH-汉斯”, “德” ,“ru”,“ja”等。但是从iOS 9开始,我注意到在language
之后还有三个字符“-US”。例如,“zh-Hans”变为“zh-Hans-US”
我可以找到有关此更改的任何文档。我认为我可以做下面的事情来解决这个问题。
NSRange range = [language rangeOfString:@"-US"];
if (range.location!=NSNotFound && language.length==range.location+3) {
// If the last 3 chars are "-US", remove it
language = [language substringToIndex:range.location];
}
但是,我不确定这样做是否安全。看起来“-US”是用户使用应用程序的位置?但是这并没有意义,因为我们在加拿大。来自世界其他地区的任何机构都试过这个吗?
业,谢谢〜这也能发挥作用。但是,在这种情况下,我倾向于使用@Bill L的方法[自动回退](https://developer.apple.com/library/ios/technotes/tn2418/_index.html)等。而且,自定义代码越少, 更好。我们不能保证Apple会在iOS 10中再次将格式更改为“zh-Hans,US”:P –