use*_*665 9 java turkish currency internationalization
我正在尝试用Java打印土耳其里拉(ISO 4217货币代码TRY)的价格.
当我做
Currency curr = Currency.getInstance("TRY");
Locale trLocale = new Locale("tr", "TR");
System.out.println(curr.getSymbol(trLocale));
Run Code Online (Sandbox Code Playgroud)
输出是:"YTL".
然而,土耳其里拉的货币符号最近已经从"YTL"变为"TL"(可以在土耳其里拉的维基百科页面上看到).格式化NumberFormat给出了类似的结果.
我真的不想写另一个Currency类,特别是当Java有一个内置的时候.
有没有办法将TRY的Java默认货币符号覆盖为"TL"?
复活以供进一步参考:
您可以使用DecimalFormatSymbols更改用于格式化的货币
Locale trLocale = new Locale("tr", "TR");
DecimalFormat decimalFormat = (DecimalFormat) DecimalFormat.getCurrencyInstance(trLocale);
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(trLocale);
dfs.setCurrencySymbol("TL");
decimalFormat.setDecimalFormatSymbols(dfs);
Run Code Online (Sandbox Code Playgroud)
或者您可以诉诸SPI并插入您的货币符号(可能通过创建您自己的国家/地区变体new Locale("tr","TR","try")).为此,您应该为java.util.spi.CurrencyNameProviderJava扩展机制提供实现并注册它.查看http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleServiceProvider.html
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |