Изменение символов DecimalFormatSymbols для языка в Java SDK - PullRequest
0 голосов
/ 23 мая 2018

Я использую стороннее программное обеспечение, встроенное в Java, которое отображает числа.Это программное обеспечение является мультиязычным, и одним из языков, которые мы используем, является Euskera (eu, eu_ES).Числовой формат отображается неправильно на этом языке (123 456,89 вместо 123 456,89).

Более подробный поиск и декомпиляция некоторых классов Я видел, что форматирование чисел выполняется с DecimalFormatSymbols и DecimalFormat, поэтомуЯ сделал junit test, чтобы увидеть, связана ли проблема с этим сторонним программным обеспечением или с Java.

Locale locale = new Locale("eu");
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(locale);
String pattern = "#,###.##";
DecimalFormat decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);
String formatted = decimalFormat.format(1234567.89765);
assertEquals("1.234.567,9", formatted);

После запуска этого теста я видел Java, который форматирует таким образом.

В одной руке я скачал последнюю версию этого программного обеспечения сторонних производителей, потому что это открытый исходный код, и я мог бы сделать небольшой обходной путь, который сработал.С другой стороны, мы используем версию 6 лет назад, которую нельзя обновить, поскольку системные требования os и эта версия находятся в CVS Sourceforge, которую мне не удалось загрузить.

Есть ли способ, которым я могу изменитьgrouping separator и decimal separator для Euskera на уровне Java?

1 Ответ

0 голосов
/ 23 мая 2018

Да, вы можете, но это немного обманщик.По сути, вы можете создать собственный NumberFormatProvider, который делает что-то другое для eu_ES и делегирует исходному провайдеру все остальные локали.Вам нужно будет поместить его в JAR с файлом META-INF / services / xxxx и включить его в classpath.

См. Этот вопрос: Настройка локали переопределения Java для конкретной локали

И другие инструкции здесь:

...