所以在我的应用程序中,我试图让设备当前设置语言及其首字母缩略词。所以我这样做:
NSString *fullLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale preferredLanguages] objectAtIndex:0]];
NSString *abrlanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
然而,有些用户报告该语言返回的内容类似于:en_UK或类似内容,这反过来又搞乱了我的应用程序的功能。
无论如何,无论设备区域设置如何,都有办法获取设备的当前设置语言?
谢谢!
答案 0 :(得分:22)
要获取语言代码,请使用:
NSString *languageCode = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
NSLog(@"%@", languageCode); // Prints "en"
获取该语言的全名:
NSString *languageName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:languageCode];
NSLog(@"%@", languageName); // Prints "English"
请注意,您使用的是区域代码(提供语言的区域变体),并且可以更加轻松:
NSString *regionCode = [[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];
NSLog(@"%@", regionCode); // Prints "en_US"
区域代码以语言代码开头,后跟下划线,然后是区域变体。 (这是根据Apple的文档标准化的。)
此外,如果您使用currentLocale
,请知道它未更新,因为用户首选项已更改。如果您希望在更改时保持同步,请使用autoupdatingCurrentLocale
。