资源下载覆盖特定区域的区域设置(Java override locale setting for s

2019-07-02 18:13发布

我使用NumberFormat.getCurrencyInstance().format(amount)从一个BigDecimal格式化货币字符串。 这工作正常,问题是我们的主要目标是在荷兰市场,默认荷兰格式很奇怪。

让我来解释一下,格式化-125当我拿到“125-€”为荷兰(预期是“ - €125”)。 英国工作正常捐赠“ - £125.50”。

我可以检查如果语言环境是荷兰人,然后我想格式化小数每次供应的模式。 但我宁愿将覆盖荷兰格式设置的解决方案。 我在想类似如下:

Locale nlLocale = new Locale("nl", "NL");
NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).setFormatPattern("€ #");

因此每一次格式化时,我用的是荷兰的语言环境让我的自定义格式。 做了类似的解决方案存在?

Answer 1:

撇开特定格式是否是“正确”与否的问题,要改变货币实例为“NL”区域设置的方式是实现和配置自定义LocaleServiceProvider为数字格式的服务。 (提供者类需要继承NumberFormatProvider ,但超类的javadoc解释了如何配置提供。)

提供者需要返回一个非标准NumberFormat实例为您所关心的具体情况,但(大概)委托在其他情况下的默认提供。



Answer 2:

您可以构建自己的自定义格式。 看看下面的链接:

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html



Answer 3:

使用applyPattern方法:

final DecimalFormat df = (DecimalFormat)NumberFormat.getCurrencyInstance(locale);
df.applyPattern("¤#,##0.##");


文章来源: Java override locale setting for specific locale
标签: java locale