Javascript 为什么带选项的Intl.NumberFormat会输出左边的欧元符号,而文档说它应该在右边?
文档中的示例:Javascript 为什么带选项的Intl.NumberFormat会输出左边的欧元符号,而文档说它应该在右边?,javascript,internationalization,currency,Javascript,Internationalization,Currency,文档中的示例: var number = 123456.789; // request a currency format console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number)); // → 123.456,79 € 我在节点10中的输出: > new Intl.NumberFormat('de-DE', { style: 'currency'
var number = 123456.789;
// request a currency format
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
// → 123.456,79 €
我在节点10中的输出:
> new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(123456.789)
'€ 123,456.79'
文档右侧的欧元符号。在左边,当我实际运行代码时。我需要设置区域设置还是什么?我在美国。但我实际上要求的是
de
格式,似乎这应该覆盖我的区域设置。运行示例中的精确代码没有任何区别 您的节点很可能没有对Intl的完整语言环境支持,只有英语(small-icu
)
看
请尝试“检查对非英语语言环境的支持”部分
解决方案(如果您有
小型icu
,最可能的病例)
- 启动节点并使用
(在我的例子中是节点process.versions.icu
的v10.15.3
)'62.1'
- 下载匹配的ICU源(包含数据文件)
URL类似于
/icu4c-
-src.tgz.
就我而言 - 解包ICU源并找到ICU数据文件。在我的例子中,数据文件位于
。但在其他ICU版本中,位置可能不同(尽管我怀疑,这并非不可能:-)icu/source/data/In/icudt62l.dat
- 将
设置为指向日期文件。NODE\u ICU\u DATA
(定义变量)或export NODE\u ICU\u DATA=/icudt62l.dat
(定义+运行节点)env NODE\u ICU\u DATA=/icudt62l.dat NODE
您可能希望将数据文件移动到更“稳定”的位置,并删除源
Node没有提供可供下载的完整ICU支持版本,这一点非常糟糕。
或者至少归档了与节点版本匹配的ICU数据文件,这样我们就不必进行所有的挖掘