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

标签 ios objective-c xcode cocoa-touch nslocale

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

我希望这是一个完全拼写格式的 NSString。 (不是@"en_US")

编辑:对于那些路过的人来说,这里有很多有用的评论,因为答案随着新的 iOS 版本而发展。

最佳答案

提供的解决方案实际上会返回设备的当前区域,而不是当前选择的语言。这些通常是相同的。但是,如果我在北美并且我将语言设置为日语,我的地区仍将是英语(美国)。为了检索当前选择的语言,您可以这样做:

NSString * language = [[NSLocale preferredLanguages] firstObject];

这将返回当前所选语言的两个字母代码。 “en”表示英语,“es”表示西类牙语,“de”表示德语等。更多示例,请参阅此 Wikipedia 条目(特别是 639-1 列):

List of ISO 639-1 codes

然后将两个字母代码转换为您想要显示的字符串是一件简单的事情。所以如果是“en”,就显示“English”。

编辑

值得引用来自 NSLocale.h 的头信息:

+ (NSArray *)preferredLanguages NS_AVAILABLE(10_5, 2_0); // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information

对应用语言感兴趣的人看看@mindvision's answer

关于ios - 在 iOS 中获取当前设备语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3910244/

相关文章:

ios - 动画期间无法获取 CALayer 的当前位置

iphone - 按钮圆角上的 UIImage

xcode - Osx Lion : Xcode 4. 1 如何设置 c++0x 项目

xcode - 当我在 git 中重命名它时,我的项目消失了

ios - 在 Swift 3 中从 UserDefaults 读取存储数组时出现问题

ios - 如何隐藏启动图像而不使其淡出?

ios - 如何更改 UIAlertController 的背景颜色?

objective-c - 验证用户 - Objective-C/Cocoa/Sandboxing

xcode - 船舶与硬币相撞无法正常工作

ios - 我如何将数组元素搜索到文本字段中,当每个单词仅从数组中按下 textField 时,将建议其文本字段?