首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLocale语言问题

NSLocale语言问题
EN

Stack Overflow用户
提问于 2012-12-16 15:19:37
回答 1查看 6K关注 0票数 7

因此,在我的应用程序中,我正在尝试获取设备当前设置的语言及其缩写。所以我这样做:

代码语言:javascript
复制
NSString *fullLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale preferredLanguages] objectAtIndex:0]];
NSString *abrlanguage = [[NSLocale preferredLanguages] objectAtIndex:0];

然而,一些用户报告说,该语言返回了类似于: en_UK或类似的内容,这反过来又搞乱了我的应用程序的功能。

无论如何,有没有一种方法可以获得设备的当前设置语言,而不考虑设备的区域设置?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-17 12:49:11

要获取语言代码,请使用:

代码语言:javascript
复制
NSString *languageCode = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
NSLog(@"%@", languageCode);  // Prints "en"

要获取语言的全名,请执行以下操作:

代码语言:javascript
复制
NSString *languageName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:languageCode];
NSLog(@"%@", languageName);  // Prints "English"

请注意,您使用的是区域代码(它提供了语言的区域变体),并且可以像这样变得更容易:

代码语言:javascript
复制
NSString *regionCode = [[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];
NSLog(@"%@", regionCode);  // Prints "en_US"

区域代码以语言代码开头,然后是下划线,然后是区域变体。(这是根据Apple的文档进行标准化的。)

此外,如果您使用currentLocale,请注意它不会随着用户首选项的更改而更新。如果希望在它们发生更改时保持同步,请改用autoupdatingCurrentLocale

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13899379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档