javascript - intl.NumberFormat 显示 es-ES 货币格式的错误结果

标签 javascript internationalization

我希望 es-ES 和 de-DE 语言环境的输出是相同的。 (我让我的西类牙同事查了他的工资单,他确认千后确实有小数)

var number = 1000;
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
console.log(new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(number));

结果:
> "1.000,00 €"
> "1000,00 €"

最佳答案

根据Real Academia Española ,西类牙语的标准形式是将数字分成三个一组,用空格分隔,如果数字超过四位,即至少五个(来源:https://www.rae.es/dpd/números,第 2.a 节,西类牙语)。
实际上对于五位数的数字,您的代码给了我与 de-DE 相同的结果和 es-ES ,即用点分隔:

let number2 = 10000
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number2));
console.log(new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(number2));
给我
10.000,00 €
10.000,00 €
用点分隔似乎并不完全正确*,但未对四位数字进行分组似乎符合 RAE 的语言规则。
* 实际上,在德语中,根据 Duden 的说法,您应该使用空格而不是点,参见例如https://www.duden.de/sprachwissen/rechtschreibregeln/zahlen-und-ziffern (在德国)。

关于javascript - intl.NumberFormat 显示 es-ES 货币格式的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991370/

相关文章:

java - 无法将泰语字符导出到 Excel 中

javascript - 将 JSON 数据格式化为表

javascript - 检测设备是否为 iOS

javascript - react : When Does Context Provider Update its Consumers?

javascript - AngularJS:访问 $routeProvider 中的范围变量

java - 在 GWT/GXT 中编译后更改 .properties 文件吗?

python - 如何在 bottle 中使用 jinja2 i18n(带 babel)

javascript - 单击菜单按钮时隐藏页面滚动

cocoa - 核心数据实体中可本地化属性值的模型?

python - 如何在 Python setuptools 中包含本地化消息?