使用icu4j格式化数字(拼写)

时间:2014-06-10 13:14:36

标签: java icu

我希望通过使用语言环境拼写出来来定位数字,最后使用ICU4J。 我在许多地方取得了成功,但似乎并没有像格鲁吉亚,土耳其或阿拉伯语那样完成它。

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

当我在formatter对象里面调试规则集时,它似乎是空的,并且用英语打印出来(我猜是默认的)。

在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 \数据\ icudt53b \ rbnf

非常感谢有关演示页如何设置以及为什么我能做到的任何帮助?

1 个答案:

答案 0 :(得分:3)

我已经使用53.1版测试了您的代码,并获得了正确的土耳其语输出。然后我重新测试版本3.4.4并按照你在问题中描述的那样得到英文输出。

最有可能的是,你通过传递的maven依赖来吸引旧版本。