【问题标题】:Android currency symbol orderingAndroid货币符号排序
【发布时间】:2012-09-11 12:44:12
【问题描述】:

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

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$ 都是不正确的。

有办法改变吗?

【问题讨论】:

  • 将货币符号放入您的本地资源 value-eng,values-fra,values-ru
  • 在某些语言环境中金额正确后写入货币。例如,瑞典的写作规则建议这样做。

标签: java android format currency


【解决方案1】:

方法的行为是正确的。

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

如果您始终希望货币格式与美国化预期相匹配,请将语言环境保留为 Locale.US。如果您希望货币以本地化方式显示,请保持您的实现不变。

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

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

【讨论】:

  • 好的,所以 1 欧元是不是总体不正确?我认为 1 € 必须总是这样写(或 1 美元),并且它与它的显示位置没有任何关系。如果它不是不正确的,我就让它在它是。不想做任何特别的事情,只要修复错误,如果是一个。
  • 我不认为这是一个错误。作为一个英国人,我总是写 1 欧元,但跨渠道(在法国)的任何人都可能期望 1 欧元。
  • 好的。然后我让它像现在这样。谢谢你的回答。
猜你喜欢
  • 2014-08-28
  • 2019-02-23
  • 1970-01-01
  • 2017-06-22
  • 2017-06-13
  • 2012-08-12
  • 1970-01-01
  • 2012-09-04
  • 2014-12-07
相关资源
最近更新 更多