我正在使用非英语语言环境的设备,英语货币的格式如下:
1 $
如果我有英语语言环境,我会得到欧元货币,例如:
€ 1
Using
format.setCurrency(Currency.getInstance(currency));
return format.format(amount);
在文档中找到:
http://developer.android.com/reference/java/util/Currency.html#getSymbol 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$ 都是不正确的。
有办法改变这个吗?
该方法的行为是正确的。
并非所有国家/地区都希望在金额之前显示货币符号。
如果您始终希望货币格式符合美国化的期望,请将区域设置保留为Locale.US
。如果您希望货币以本地化方式显示,请按原样保留您的实施。
请参阅此简短指南(同样来自 Microsoft):
货币格式 https://learn.microsoft.com/en-us/globalization/locale/currency-formatting
我猜您可能想要实现的是以适合其区域设置的格式显示货币?如果是这种情况,只需在调用该方法之前将区域设置与您正在使用的货币进行匹配即可。
请注意,同一国家/地区的格式甚至可能有所不同。在加拿大,讲英语的人使用 $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 https://ux.stackexchange.com/questions/22574/where-to-place-currency-symbol-when-localizing-and-what-to-do-with-odd-symbols
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)