форматирование чисел (расшифровка) с помощью icu4j

Я хочу локализовать числа, написав их по локали, и в итоге использовал ICU4J. Я преуспел во многих регионах, но, похоже, не справился с некоторыми, такими как грузинский, турецкий или арабский.

ULocale locale = new ULocale("Tr");  //Turkish
Double d = Double.parseDouble(input);
NumberFormat formatter = new RuleBasedNumberFormat(locale, RuleBasedNumberFormat.SPELLOUT);
String result = formatter.format(d);

Когда я отлаживаю набор правил внутри объекта форматирования, он кажется пустым и печатается на английском языке (я думаю, по умолчанию).

На веб-сайте ICU написано, что: ICU предоставляет правила написания чисел для нескольких локалей, но не для всех локалей, которые поддерживает ICU, и не для всех предопределенных типов правил. Кроме того, в версии 2.6 известно, что некоторые из представленных правил неполны.

Но похоже, что собственная демонстрационная страница ICU может сделать это и для этих локалей (http://demo.icu-project.org/icu4jweb/numero.jsp)

Я также могу найти файлы .res в icu5j-53.1.jar в моей папке .m2 (\icu4j-53.1\com \ibm\icu\impl\data\icudt53b\rbnf)

Буду признателен за любую помощь в том, как демонстрационная страница может это сделать и почему я не могу?


person Sinan Kucukkoseler    schedule 10.06.2014    source источник
comment
Я пробовал локально с вашим кодом и той же версией icu4j, и я получаю правильный вывод на турецком языке.   -  person Robby Cornelissen    schedule 10.06.2014
comment
Я также пробовал с версией 3.4.4, и тогда мой вывод на английском языке. Не могли бы вы проверить свои (транзитивные) зависимости и убедиться, что вы каким-то образом не загружаете старую версию?   -  person Robby Cornelissen    schedule 10.06.2014
comment
Спасибо за ответ. Вы были правы, я проверил свое дерево зависимостей, и некоторые другие библиотеки зависят от его более ранней (4.0) версии. После исправления я начал получать турецкий вывод.   -  person Sinan Kucukkoseler    schedule 11.06.2014
comment
Хорошие новости! Я добавлю это как ответ.   -  person Robby Cornelissen    schedule 11.06.2014


Ответы (1)


Я протестировал ваш код с версией 53.1 и получил правильный вывод на турецком языке. Затем я повторно протестировал версию 3.4.4 и получил вывод на английском языке, как вы описали в своем вопросе.

Скорее всего, вы загружаете более старую версию через транзитивную зависимость от maven.

person Robby Cornelissen    schedule 11.06.2014
comment
Версия 56.1 работает довольно хорошо для большинства локалей, включая Tr, зависимость Maven ниже, если это поможет: <!-- https://mvnrepository.com/artifact/com.ibm.icu/icu4j --> <dependency> <groupId>com.ibm.icu</groupId> <artifactId>icu4j</artifactId> <version>56.1</version> </dependency> - person realPK; 15.12.2016