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

Gab*_*ary 6 javascript ecma typescript ecmascript-6

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

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

显示“PLN43”,同时

Intl.NumberFormat("en-US",{
  style:'currency',
  minimumIntegerDigits:1,
  currency: 'PLN',
  currencyDisplay: 'name'
}).format(43);
Run Code Online (Sandbox Code Playgroud)

显示“43.00 波兰兹罗提”

Ром*_*еев 1

根据规范

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

  • “不可用”是什么意思...?我是否可以在任何地方为这些 ISO 代码提供货币符号,以便我可以继续使用此格式化程序,或者我是否必须提出替代解决方案? (3认同)