作者:丿氵小柒柒2502894463 | 来源:互联网 | 2023-01-06 09:00
从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有变化吗?
1> hico..:
找到了!
这是从iOS 11开始的变化行为.
在iOS 11下,[NSLocale currentLocale]仅返回应用程序本地化支持的语言.如果您的应用仅支持英语(作为基本本地化),则无论用户在设备上选择何种语言,currentLocale将始终返回英语.
在iOS 10及更早版本中,currentLocale将直接表示用户选择的语言和区域,无论您的应用支持哪些本地化.
更多信息:
https://jaanus.com/ios-11-changes-localized-date-handling/
Maddy的堆栈溢出答案:https://stackoverflow.com/a/46206511/1226963