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

我想显示设备 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

https://stackoverflow.com/questions/3910244/

相关文章:

objective-c - Objective-C 中的#import 和#include 有什么区

objective-c - 比较浮点值有多危险?

objective-c - 关闭键盘的简单方法?

ios - 文件是通用的(三个切片),但它不包含 iOS 上静态库的(n)ARMv7-s 切片错误,

objective-c - 在objective-c/cocoa中抛出异常

iphone - 如何使用返回键关闭 UITextView 的键盘?

c - 是否可以使用 NSLog C 结构(如 CGRect 或 CGPoint)?

objective-c - 如何按字母顺序对 NSArray 进行排序?

ios - 如何隐藏 UINavigationBar 1px 底线

ios - 应用程序在应用程序启动结束时应该有一个 Root View Controller