如何在 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 中获取用户的语言环境?的主要内容,如果未能解决你的问题,请参考以下文章
objective-c 中如何在一个函数中调用自己类中的另外一个函数