1

我想覆盖货币符号。例如,ICU 只返回BGN 0.67currencyCodeBGN无论我使用哪个选项(NarrowShortVARIANT此处)作为en语言环境,但我想获得лв 0.67. 我们还有其他用例来覆盖货币符号。

com.ibm.icu.util.Currency不提供任何设置函数来进行覆盖。将Numberformatter货币符号附加到数字时,会调用getNameCurrency.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 格式对我们来说都很好,但是我们想为某个语言环境下的货币进行自定义)

4

0 回答 0