ICU4j - 如何使用 Numberformatter 覆盖货币符号或添加自定义货币

问题描述

我想覆盖货币符号。例如,无论我使用哪个选项(here 中的BGN 0.67BGNNarrow),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 (将#修改为@)