Я пытаюсь найти один правильный способ локализовать цену с правильными запятыми, пробелами, точками других разделителей и установить правильный код валюты в правильном месте в виде постфикса или префикса. Также я бы хотел работать с отрицательными числами.
Что я нашел?
Я пытаюсь гуглить и пробовать каждое решение, и самый простой способ:
private val format: DecimalFormat = NumberFormat.getCurrencyInstance(globalLocale) as DecimalFormat
fun format(amount: Double, currencyCode: String): String {
format.currency = Currency.getInstance(currencyCode)
return format.format(amount)
}
, где globalLocale
- Locale.getDefault()
-> локаль телефона.
Проблема связана с отрицательными числами, по некоторым причинам это занимает скобки и вызов format(-10.00, "EUR")
возвращает (EUR10.00)
Я нашел одно решение, чтобы применить шаблон:
format.applyPattern("$#,##0.00;-$#,##0.00")
но это жесткое кодирование тормозит положение знака валюты и локализацию пробелов / запятых / точек.
Как этого добиться?
- Передайте
amount
и currencyCode
и получите правильную localised
цену без скобок в отрицательных числах?
EDIT
Кажется, эта проблема только с Locale.US, поэтому вопрос заключается в том, как избежать этого круглых скобок в локали США?