2015-08-13 8 views
0

Как я могу получить NSLocale для соответствующего кода валюты в swift?Как я могу получить «локаль» из кода валюты?

Код:

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 { 
    ... 
} 
+0

была короткая дискуссия здесь: http://stackoverflow.com/questions/758255/java-currency-to-locale-mapping-possible – Oleksii

ответ

2

Вы не можете; часто существует множество мест с единым кодом валюты. Например, каждая страна в еврозоне делится валютным кодом «EUR», но все они имеют свой собственный язык - иногда даже несколько. Аналогичным образом, существуют некоторые валюты, которые не имеют соответствующего языка в системе.

В большинстве случаев вы всегда должны использовать языковой стандарт системы для отображения чисел. Использование локализованного формата отображения, характерного для отображаемой валюты, скорее всего, будет более запутанным, чем полезным. (Например, он может отображать миллион долларов как «1 000 000,00 долларов США», миллион евро в качестве «€ 1.000.000,00» и миллион рупий как «10 000 000,00».)