我正在使用非英语语言环境的设备,英语货币形成如下:
1美元
如果我有英语语言环境,我会得到欧元货币:
1欧元
运用
format.setCurrency(Currency.getInstance(currency));
return format.format(amount);
在文档中找到:
http://developer.android.com/reference/java/util/Currency.html#getSymbol()
Returns the localized currency symbol for this currency in locale. That is, given “USD” and Locale.US, you’d get “$”, but given “USD” and a non-US locale, you’d get “US$”.
If the locale only specifies a language rather than a language and a country (such as Locale.JAPANESE or {new Locale(“en”, “”)} rather than Locale.JAPAN or {new Locale(“en”, “US”)}), the ISO 4217 currency code is returned.
If there is no locale-specific currency symbol, the ISO 4217 currency code is returned.
是不一样的方法,但可能相关.为什么它会使我的设备的区域设置与货币中的符号排序有所区别?无论我使用哪种语言环境,1 $都是不正确的.
有没有办法改变这个?
解决方法:
该方法的行为是正确的.
并非所有国家都希望货币符号在金额之前.
如果您始终希望货币格式与美国期望值匹配,请将区域设置保留为Locale.US.如果您希望货币以本地化方式显示,请保持实施不变.
请参阅此简要指南(来自Microsoft,不能少):
我想你可能想要实现的是以适合其语言环境的格式显示货币?如果是这种情况,只需在调用方法之前将区域设置与您正在使用的货币相匹配.
请注意,格式甚至可以在同一个国家/地区有所不同.在加拿大,看到说英语的人使用50.00美元的格式是相当普遍的,而法裔加拿大人可能使用50,00美元.
另见UX上的这个问题: