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/

相关文章:

iphone - 如何为iPhone制作部分透明的png图像按钮?

ios - 导航 Controller 后退按钮

iphone - 如何在不使用开放图谱API的情况下在Facebook墙上发布图像和文本

iphone - 在 xcode 4.2 上播放时没有背景音乐

ios - 在 iOS 中解析 excel 文件

objective-c - NSXMLParser 创建节点和 NSMutableArray

cocoa - Xcode Cocoa QTKit - 创建引用文件

ios - 旋转时自定义 UIView 调整大小

ios - MPMoviePlayerController 仅在调用两次时播放。仅在 iOS 4 中出现

xcodebuild 给出 “profiling: invalid magic number” ,不生成覆盖文件