Android货币符号排序

时间:2012-09-19 08:11:30

标签: java android format currency

我正在使用非英语语言环境的设备,英语货币形成如下:

1 $

如果我有英语语言环境,我会获得欧元货币:

€1

使用

format.setCurrency(Currency.getInstance(currency));
return format.format(amount);

在文档中找到:

http://developer.android.com/reference/java/util/Currency.html#getSymbol()

  

在区域设置中返回此货币的本地化货币符号。也就是说,给定“USD”和Locale.US,你得到“$”,但是给出“USD”和非美国语言环境,你就得到“US $”。

     

如果语言环境仅指定语言而不是语言和国家/地区(例如Locale.JAPANESE或{new Locale(“en”,“”)}而不是Locale.JAPAN或{new Locale(“en”, “US”)}),返回ISO 4217货币代码。

     

如果没有特定于区域设置的货币符号,则返回ISO 4217货币代码。

方法不一样但可能相关。为什么它会使我的设备的区域设置与货币中的符号排序有所区别?无论我使用哪种语言环境,1 $都是错误的。

有没有办法改变这个?

1 个答案:

答案 0 :(得分:2)

该方法的行为是正确的。

并非所有国家/地区都希望货币符号在金额之前。

如果您始终希望货币格式与美国期望相匹配,请将区域设置保留为Locale.US。如果您希望以本地化方式显示货币,请按原样保留实施。

请参阅此简要指南(来自Microsoft,不能少):

Globalisation Step-by-Step

我猜你可能想要实现的是以适合其语言环境的格式显示货币?如果是这种情况,请在调用方法之前将区域设置与您正在使用的货币相匹配。

请注意,格式甚至可能在同一个国家/地区有所不同。在加拿大,看到说英语的人使用50.00美元的格式是相当普遍的,而法裔加拿大人可能会使用50,00美元。

另见UX上的这个问题:

https://ux.stackexchange.com/questions/22574/where-to-place-currency-symbol-when-localizing-and-what-to-do-with-odd-symbols