【问题标题】:How to get system locale and system language in cocoa如何在可可中获取系统区域设置和系统语言
【发布时间】:2012-11-26 19:32:28
【问题描述】:

我想获取系统默认语言和系统区域设置。

我已尝试使用以下代码 sn-p 来获取系统当前语言环境,如下所示

NSLocale *locale;
locale = [NSLocale systemLocale];

NSString * localLanguage = [locale objectForKey:NSLocaleIdentifier];
NSLog (@"Language : %@", localLanguage); 

NSLog(@"System locale Identifier %@",[locale localeIdentifier]);

但是系统语言环境标识符没有显示任何内容。如果是当前语言环境,则给出正确的结果。为什么系统语言环境没有给出任何值以及如何获取系统默认语言而不是用户首选语言?请帮助

【问题讨论】:

    标签: objective-c macos cocoa nslocale


    【解决方案1】:

    您可以简单地使用: NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];

    【讨论】:

      【解决方案2】:

      默认NSLocaleIdentifier 有意为@"" 表示当前没有选择。根据 Apple 的说法,systemLocale 只是未在用户选择的区域设置 (currentLocale) 中实现的键的后备,并且由于它始终处于设置状态并且始终在用户的控制之下,因此它是有意义的。

      如果您想关注用户的首选语言列表,您想使用+ preferredLanguages,它会返回用户喜欢的语言列表,按用户喜欢的顺序排列。这适用于 OSX 和 iOS,并在选择语言时为系统提供适当的回退。

      为了进行测试,您可以使用命令行开关-AppleLanguages 和一个逗号分隔、括号括起来的数组(例如:(DE,FR,EN)),Xcode 将模拟用户的首选语言列表.

      由于用户设置了首选语言(至少在 OSX 中),操作系统在为用户选择本地化数据时将遵循该列表。通常,由于这个事实,除了使用宏之外的任何操作都被认为是不必要的。但是,如果您有需要本地化的非资源信息,则可以手动查看该值。

      【讨论】:

      • 感谢您的回复。您知道如何获取系统语言。
      • OS X 真的没有。这完全由用户决定。你想用它做什么?也许我可以指出另一种机制。
      • 我的要求。是以用户首选语言显示文本,它是从后端服务中获取的,如果用户没有选择特定语言,那么我需要以默认系统语言显示文本。这就是为什么我试图找出我该怎么做获取系统默认语言。你能告诉我其他机制是什么吗?
      • 我添加了更多关于使用preferredLanguages 的涓滴机制的信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      相关资源
      最近更新 更多