【问题标题】:How can I get "locale" from currency code?如何从货币代码中获取“语言环境”?
【发布时间】:2015-08-13 19:18:28
【问题描述】:

如何快速获取对应货币代码的 NSLocale?

代码:

func format(amount: String, code: String) -> NSDictionary {
        var formatter = NSNumberFormatter()
        let locale = getLocaleByCurrencyCode(code)
        formatter.locale = locale
        formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
        let number = NSNumber(double: (amount as NSString).doubleValue)
        return ["locale":locale, "amount": formatter.stringFromNumber(number)!]
    }


func getLocaleByCurrencyCode(code) -> NSLocale {
   ...
}

【问题讨论】:

标签: macos swift cocoa currency


【解决方案1】:

你不能;通常有许多语言环境具有单一货币代码。例如,欧元区的每个国家都共享货币代码“EUR”,但它们都有自己的语言环境——有时甚至有几个。同样,有些货币在系统中没有关联的语言环境。

在大多数情况下,您应该始终使用系统区域设置来显示数字。使用特定于所显示货币的本地化显示格式可能比有用更令人困惑。 (例如,它可能将一百万美元显示为“$1,000,000.00”,一百万欧元显示为“€1.000.000,00”,一百万卢比显示为“₹10,00,000.00”。)

【讨论】:

    【解决方案2】:

    您可以从货币代码中获取语言环境。

    let locale = NSLocale(localeIdentifier: CurrencyCode)
    

    或使用

    获取货币名称
    Locale.current.localizedString(forCurrencyCode: CurrencyCode (like "INR"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2012-09-23
      • 2023-04-11
      • 2014-12-28
      • 1970-01-01
      相关资源
      最近更新 更多