我使用的是用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年前的版本,由于操作系统要求和此版本在Sourceforge的CVS中无法下载,因此无法升级。
有没有办法可以在Java级别更改Euskera的grouping separator
和decimal separator
?
答案 0 :(得分:0)
是的,你可以,但它有点像一个障碍。从本质上讲,您可以创建一个自定义的NumberFormatProvider,它为eu_ES执行不同的操作,并委托给所有其他语言环境的原始提供程序。您必须将它放在带有META-INF / services / xxxx文件的JAR中,并将其包含在类路径中。
请参阅此问题:Java override locale setting for specific locale
此处有更多说明: