我想通过使用语言环境将数字拼写来对数字进行本地化,并最终使用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)
我也可以在.m2文件夹下的icu5j-53.1.jar中找到.res文件。
(\icu4j-53.1\com\ibm\icu\impl\data\icudt53b\rbnf)
希望获得有关演示页面如何进行管理以及为什么我做不到的任何帮助?
最佳答案
我已经使用53.1版测试了您的代码,并获得了正确的土耳其语输出。然后,我对3.4.4版进行了重新测试,并按照问题中的说明获得了英语输出。
最有可能的是,您通过传递Maven依赖关系引入了较旧的版本。
关于java - 用icu4j格式化数字(拼写),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24141988/