我想通过用语言环境拼写数字来本地化数字,最后使用了 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/