在iOS中获取当前设备语言?

落花浮王杯 提交于 2020-02-26 01:44:17

我想显示设备UI使用的当前语言。 我将使用什么代码?

我希望它作为NSString以完全拼写的格式显示。 (不是@“ en_US”)

编辑:对于那些继续前进的人,这里有大量有用的评论,因为答案随着新的iOS版本的发展而发展。


#1楼

对于MonoTouch C#开发人员,请使用:

NSLocale.PreferredLanguages.FirstOrDefault() ?? "en"

注意:我知道这是一个iOS问题,但是由于我是MonoTouch开发人员,因此此页面上的答案将我引向了正确的方向,我认为我会分享结果。


#2楼

所选答案返回当前设备语言,但不返回应用程序中使用的实际语言。 如果您未在应用中提供用户首选语言的本地化版本,则使用按用户首选顺序排序的第一个可用本地化版本。

要发现您的本地化语言中选择的当前语言,请使用

[[NSBundle mainBundle] preferredLocalizations];

例:

NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

迅速:

let language = NSBundle.mainBundle().preferredLocalizations.first as NSString

#3楼

我用这个

    NSArray *arr = [NSLocale preferredLanguages];
for (NSString *lan in arr) {
    NSLog(@"%@: %@ %@",lan, [NSLocale canonicalLanguageIdentifierFromString:lan], [[[NSLocale alloc] initWithLocaleIdentifier:lan] displayNameForKey:NSLocaleIdentifier value:lan]);
}

忽略内存泄漏。

结果是

2013-03-02 20:01:57.457 xx[12334:907] zh-Hans: zh-Hans 中文(简体中文)
2013-03-02 20:01:57.460 xx[12334:907] en: en English
2013-03-02 20:01:57.462 xx[12334:907] ja: ja 日本語
2013-03-02 20:01:57.465 xx[12334:907] fr: fr français
2013-03-02 20:01:57.468 xx[12334:907] de: de Deutsch
2013-03-02 20:01:57.472 xx[12334:907] nl: nl Nederlands
2013-03-02 20:01:57.477 xx[12334:907] it: it italiano
2013-03-02 20:01:57.481 xx[12334:907] es: es español

#4楼

根据Apple 文档

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];

#5楼

为了获得用户设备当前的语言,请使用以下代码对我有用。

NSString * myString = [[NSLocale preferredlanguage]objectAtIndex:0];
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!