我想覆盖货币符号。例如,ICU 只返回BGN 0.67
currencyCodeBGN
无论我使用哪个选项(Narrow
、Short
和VARIANT
在此处)作为en
语言环境,但我想获得лв 0.67
. 我们还有其他用例来覆盖货币符号。
com.ibm.icu.util.Currency
不提供任何设置函数来进行覆盖。将Numberformatter
货币符号附加到数字时,会调用getName
Currency.java 中获取货币符号的方法
public String getName(ULocale locale, int nameStyle, boolean[] isChoiceFormat) {
...
CurrencyDisplayNames names = CurrencyDisplayNames.getInstance(locale);
switch (nameStyle) {
case SYMBOL_NAME:
return names.getSymbol(subType);
...
}
...
}
CurrencyDisplayNames
具有预定义的数据,并且不提供任何方法来进行覆盖。
我发现Numberformat
可以通过 覆盖货币符号Numberformat.getCurrencyInstance()
,但 ICU 建议新用户使用Numberformatter
,那么如何进行符号覆盖,或其他覆盖,如在某个区域设置的数字右侧放置美元符号?(大多数输出的 ICU 格式对我们来说都很好,但是我们想为某个语言环境下的货币进行自定义)