Конечным пользователям предоставляется список валют. Один из них может быть выбран ими в любое время. Таким образом, локаль, используемая в java.text.NumberFormat
, должна быть изменена в зависимости от выбранной валюты. Это не кажется тривиальным.Динамическое изменение языкового стандарта в соответствии с динамическим значением валюты
Locale locale = new Locale("en", "US");
NumberFormat decimalFormat = NumberFormat.getCurrencyInstance(locale);
decimalFormat.setGroupingUsed(true);
decimalFormat.setCurrency(Currency.getInstance("USD"));
System.out.println(decimalFormat.format(BigDecimal.valueOf(1.12)));
Кусок кода выше будет отображать правильную валюту значение $1.12
. Поскольку валюта (и локаль) определяется динамически во время выполнения в зависимости от предпочтений пользователя, если USD
изменен на нечто иное, например GBP
, то соответствующий языковой стандарт также необходимо изменить с en_US
на en_GB
. В противном случае он отобразит GBP1.12
, где ожидается £1.12
(для краткости курс валюты исключается).
Есть ли способ определить языковой стандарт на основе кода валюты, который поставляется динамически во время выполнения?