我怎样才能获得" locale"从货币代码?

时间:2015-08-13 19:18:29

标签: macos swift cocoa currency

如何在swift中获取相应货币代码的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 {
   ...
}

2 个答案:

答案 0 :(得分:2)

你不能;通常有许多具有单一货币代码的区域设置。例如,欧元区的每个国家都共享货币代码" EUR",但它们都有自己的区域设置 - 有时甚至是几个。同样,有些货币在系统中没有关联的区域设置。

在大多数情况下,您应始终使用系统区域设置来显示数字。使用特定于所显示货币的本地化显示格式可能比使用更混乱。 (例如,它可以显示一百万美元作为" $ 1,000,000.00",一百万欧元作为"€.000.000,00"和百万卢比作为& #34;₹10,00,000.00"。)

答案 1 :(得分:0)

您可以从货币代码中获取区域设置。

let locale = NSLocale(localeIdentifier: CurrencyCode)

或使用获取货币名称

Locale.current.localizedString(forCurrencyCode: CurrencyCode (like "INR"))