问题描述
我想覆盖货币符号。例如,无论我使用哪个选项(here 中的BGN 0.67
、BGN
和 Narrow
),ICU 都只返回 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
,那么我如何进行符号覆盖,或其他覆盖如put某个区域设置数字右侧的美元符号? (大部分输出ICU格式对我们来说都很好,但是我们想针对某个locale下的货币进行自定义)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)