从iOS 11.0开始,以下代码返回" de_US"而不是" en_US" :
// => Returns "de_US"
NSString *regionCode = [[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];
NSLog(@"Region code: %@", regionCode);
在iOS 11下面,它会返回" en_US"。
我的设备适用于语言和地区英语/美国。 首选语言(尽管我不在我的代码中使用它们)按顺序排列:
这是iOS 11的已知问题吗? API有变化吗?
答案 0 :(得分:9)
这是从iOS 11开始的更改行为。
在iOS 11下, [NSLocale currentLocale]仅返回应用程序本地化支持的语言。如果您的应用仅支持英语(作为基本本地化),那么无论用户在设备上选择何种语言,currentLocale将始终返回英语。
在iOS 10及更早版本中,currentLocale将直接代表 用户选择的语言和区域,无论本地化是什么 你的应用支持。
此处提供更多信息: