【问题标题】:Converting Country codes to country names on Device with non-english language使用非英语语言将国家代码转换为设备上的国家名称
【发布时间】:2014-04-10 10:56:54
【问题描述】:

这是我正在使用的代码(取自 - Converting Country Codes to Country Names

  NSLocale *locale = [NSLocale currentLocale];
  NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
  NSString *identifier = [NSLocale localeIdentifierFromComponents: [NSDictionary dictionaryWithObject: countryCode forKey: NSLocaleCountryCode]];
  NSString *country = [[NSLocale currentLocale] displayNameForKey: NSLocaleIdentifier value: identifier];

在有英语的设备上我会得到这个:“Argentina”

但是,在使用其他语言的设备上,我会得到类似: "\U05d0\U05e8\U05d2\U05e0\U05d8\U05d9\U05e0\U05d4"

有什么想法吗?

【问题讨论】:

  • 您是否将设备(或模拟器)的本地语言设置为希伯来语?
  • 那个 iOS 7 字符串恰好是“ארגנטינה”(unicode 格式)。您确定两者使用相同的语言环境和语言吗?
  • 我明白了...它与操作系统版本无关,但设备上的定义...如果设备使用其他语言,我如何找到英文名称?

标签: objective-c ios7 xcode5 nslocale


【解决方案1】:

它是希伯来语,意思是 argntynhe 或 argntynhe 左右。 (不幸的是,我不会说任何希伯来语。只是将 unicode 转换为有意义的东西。)

检查您设备的语言设置或您用于初始化语言环境的语言环境标识符。

试试这个。

NSLocale myLocale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
NSString *country = [myLocale displayNameForKey: NSLocaleIdentifier value: identifier];

我只是对常数 @"en_US" 不乐观;我把它从我的头顶上拿了出来。只是谷歌一个适当的价值。

更多文档: https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/NSLocale_Class/Reference/Reference.html

【讨论】:

  • 谢谢!如果设备使用其他语言,我如何找到英文名称?
  • 和我在一起一分钟。我会为您检查并编辑答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
相关资源
最近更新 更多