2016-06-16 9 views
1

私はjavax.money.CurrencyUnitというインスタンスを持っていて、特定のロケール(たとえば、 "米ドル"、 "ユーロ"、 "日本円"など)の名前を表示したいと思います。 。私はすべてのドキュメントを読んだが、私は見つけることができた唯一のものはMonetaryAmountフォーマットする方法である:javax.money.CurrencyUnitの表示名を取得する

MonetaryFormats.getAmountFormat(AmountFormatQueryBuilder.of(Locale.US).set(CurrencyStyle.NAME).set("pattern", "00,00,00,00.00 ¤").build()).format(myCurrencyUnit); 

をそして私は、私はそれが結果に通貨の名前を返しますCurrencyStyle.NAMEを指定そこに見ることができますが、問題は私にMonetaryAmountがなく、CurrencyUnitのフォーマッタが見つかりませんでした。

は、私がコードから見る何をあなたに

答えて

0

ありがとうJavaMoneyは、通貨の表示名などの概念をサポートしていないということです。 CurrencyStyle.NAMEは、JDK通貨から表示名を解決しようとします。

/** 
* This method tries to evaluate the localized display name for a 
* {@link CurrencyUnit}. It uses {@link Currency#getDisplayName(Locale)} if 
* the given currency code maps to a JDK {@link Currency} instance. 
* <p> 
* If not found {@code currency.getCurrencyCode()} is returned. 
* 
* @param currency The currency, not {@code null} 
* @return the formatted currency name. 
*/ 
private String getCurrencyName(CurrencyUnit currency) { 
    Currency jdkCurrency = getCurrency(currency.getCurrencyCode()); 
    if (Objects.nonNull(jdkCurrency)) { 
     return jdkCurrency.getDisplayName(locale); 
    } 
    return currency.getCurrencyCode(); 
} 

したがって、BitCoinなどのカスタム通貨の表示名を取得することはできません。 これはJAVAMONEY-163

関連する問題