基本上在我的应用程序中,我有两个用于磅和便士值输入的文本字段。我目前正在努力使我的应用程序本地化,我遇到了一个问题。我的文本字段有占位符'Pounds'和'Pence',我需要它们根据用户位置显示货币和子货币的占位符,例如美国的'美元'和'美分'。
我不知道如何以一种有效率的方式做到这一点,我希望能就如何解决这个问题提出一些建议。
非常感谢任何帮助!
答案 0 :(得分:1)
您可以使用NSLocale获取本地货币的名称:
var locale = NSLocale.currentLocale()
var currencyCode: (AnyObject!) = locale.objectForKey(NSLocaleCurrencyCode)
locale.displayNameForKey(NSLocaleCurrencyCode, value: code) // "British Pound"
但是,似乎您可能对正式名称不满意,我不知道如何获得Pence或Cents,因此您也可以使用区域设置标识符创建自己的列表:
struct LocalCurrency {
static func wholeName(forLocale locale: NSLocale = NSLocale.currentLocale()) -> String {
var identifier : String = locale.localeIdentifier
switch(identifier) {
case "en_UK":
return "Pounds"
case "en_US":
return "Dollar"
default:
return ""
}
}
}
LocalCurrency.wholeName() // "Pounds"
您可以为部分货币创建类似的方法,您必须手动添加要支持的所有区域设置,但至少设备会告诉您当前的区域设置是什么。
<强>更新强>
您还可以获取货币符号:
locale.displayNameForKey(NSLocaleCurrencySymbol, value: code) // £
或者您可以使用NSNumberFormatter为您格式化货币:
var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.stringFromNumber(1.23) // £1.23
也许您可以使用其中一种方法来创建一种新格式,以便在不创建手动列表的情况下显示它。