浏览器intl.NumberFormat未正确显示货币符号

时间:2016-05-12 18:51:29

标签: javascript typescript ecmascript-6 ecma

我正在尝试使用Intl.NumberFormat编写货币格式化函数。 当我通过美元或欧元作为货币时,它可以正常工作,但是当我传递更加模糊的货币代码(如PLN或COL)时,它似乎会中断,而不是按要求显示符号,而是显示代码。它清楚地识别代码,因为当我要求它显示名称时,它可以正常工作:

Intl.NumberFormat("en-US",{
  style:'currency',
  minimumIntegerDigits:1,
  currency: 'PLN',
  currencyDisplay: 'symbol'
}).format(43);

时显示“PLN43”
Intl.NumberFormat("en-US",{
  style:'currency',
  minimumIntegerDigits:1,
  currency: 'PLN',
  currencyDisplay: 'name'
}).format(43);

显示“43.00波兰兹罗提”

2 个答案:

答案 0 :(得分:0)

根据spec

  

但是,本地化货币符号可用的货币代码和语言标签的组合集取决于实现。如果没有本地化的货币符号,则使用ISO 4217货币代码进行格式化。

答案 1 :(得分:0)

Intl.NumberFormat应该具有所需的符号,只需要确保指定正确的语言代码即可。

您可以在此处找到ISO语言代码的映射: https://www.w3schools.com/tags/ref_language_codes.asp

在这种情况下,您将需要使用波兰语值“ pl”而不是“ en-US”

Intl.NumberFormat("pl",{
  style:'currency',
  minimumIntegerDigits:1,
  currency: 'PLN',
  currencyDisplay: 'symbol'
}).format(43);