如何在 Objective-C 中获取用户的语言环境?

Posted

技术标签:

【中文标题】如何在 Objective-C 中获取用户的语言环境?【英文标题】:How to get language locale of the user in Objective-C? 【发布时间】:2010-11-08 07:14:48 【问题描述】:

我正在为 Mac OS X 开发应用程序。我想通过应用程序用户的语言区域(英语、西班牙语等)更改指示内容,我如何获取使用哪种语言的信息?

【问题讨论】:

【参考方案1】:
NSLog(@"localeIdentifier: %@", [[NSLocale currentLocale] localeIdentifier]);

【讨论】:

[[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale currentLocale] localeIdentifier]] 可用于获取 localeIdentifier 的纯英文版本【参考方案2】:

您可以使用 NSLocale API 来获取该信息,但不必做您想做的事情。 OS X 在操作系统中内置了support for localization——您需要做的就是提供适当的语言文件,用户可以选择他想要的语言。

【讨论】:

非常感谢!我很高兴,如果你能给我一些示例代码 这并不完全是您可以提供示例代码的事情,因为 Mac 用户界面通常存储在 nib 中,因此实际上没有任何代码负责。基本上,您的应用程序的资源需要遵循一个目录结构,操作系统将为您处理其余的。阅读我给你的链接中的本地化文档,你会看到它是如何工作的。对于以编程方式呈现文本的情况,通常会使用 NSLocalizedString() 函数。【参考方案3】:

代码sn-p

 NSLocale *locale = [NSLocale currentLocale]; 
 [locale objectForKey:NSLocaleLanguageCode]

【讨论】:

【参考方案4】:

您可以使用以下两种方式中的任何一种方式:

NSString *language = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"Language: %@", language);

输出:语言:en_US

或者这个:

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@"Language: %@", language);

输出:语言:en

【讨论】:

【参考方案5】:

您希望“本地化”您的应用程序。要开始使用,请在此处查看 Apple 文档:Internationalization - Apple Developer Docs。如果不了解您的特定应用程序的更多信息,很难在这里提出更多建议!

【讨论】:

【参考方案6】:

确切地说,ios 9 和更高版本有一个变化,现在 [NSLocale preferredLanguages] 返回 - 而不是 only 。所以最好这样做:

NSString *languageOS = [[NSLocale preferredLanguages] objectAtIndex:0];

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) 
    languageOS = [[languageOS componentsSeparatedByString:@"-"] objectAtIndex:0];

【讨论】:

以上是关于如何在 Objective-C 中获取用户的语言环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在c++中,调用objective-c

objective-c 中如何在一个函数中调用自己类中的另外一个函数

如何在 Objective-C 中获取当前工作目录的绝对路径?

如何在 Objective-C 中使用符号断点获取参数

Objective-C中如何创建构造函数呢?

在 Objective-C 中无法使用 CoreLocation 获取纬度和经度