【问题标题】:get NSLocale from country name从国家名称获取 NSLocale
【发布时间】:2017-09-12 09:34:25
【问题描述】:

我正在使用 Swift 3 开发 iOS。

我得到了“日本”、“英国”、“西班牙”等国家名称字符串。

我想知道从国家名称生成 NSLocale 实例的最佳方法是什么?

我只在文档中找到localizedString(forCountryCode:),这意味着我必须在我的项目中手动将国家名称解析为国家代码,如下所示:

switch countryName
{
     case "Spain":
          "ES"
}

有没有更好的方法从国家名称生成语言环境?

【问题讨论】:

  • 嗯,也许您的用例不同,但NSLocalizedString() 为您使用用户的语言环境。您将如何处理像瑞士这样拥有 3 种官方语言的国家/地区?
  • @Wukerplank:实际上有 4 种语言:en.wikipedia.org/wiki/Languages_of_Switzerland
  • @MartinR 抱歉,不知道这一点!我并不是要冒犯任何说罗曼语的人!
  • 实际上(至少)有 7 个与瑞士相关的语言环境:de_CH、rm_CH、wae_CH、fr_CH、gsw_CH、en_CH、it_CH
  • @Wukerplank:奥地利甚至有 2 个:de_AT 和 en_AT。我想知道后者是什么——也许是阿诺德施瓦辛格所说的?

标签: ios swift swift3


【解决方案1】:

您可以使用 CoreLocation 框架。此代码创建一个字典,其中国家名称是键,ISO 是值

    var dictionary = [String : String]()
    let arrayWithCodes = Locale.isoRegionCodes
    for code in arrayWithCodes {
        let description = Locale.current.localizedString(forRegionCode: code)
        if description != nil {
            dictionary[description!] = code
        }
    }

【讨论】:

  • 这将为您提供该国家/地区的区域代码,例如“CH”代表瑞士。那么你会如何选择 (NS)Locale 呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多