Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将本地化添加到节点环境中,以便测试与浏览器行为匹配?_Node.js_Internationalization_Jsdom - Fatal编程技术网

Node.js 如何将本地化添加到节点环境中,以便测试与浏览器行为匹配?

Node.js 如何将本地化添加到节点环境中,以便测试与浏览器行为匹配?,node.js,internationalization,jsdom,Node.js,Internationalization,Jsdom,我正在编写一个使用JSI18NAPI的格式化函数测试 (5).toLocaleString('en-ca', {style: 'currency', currency: 'CAD'}) 在浏览器中,我得到了$5.00,正如我所期望的那样 在jest测试(节点8.9.1+jsdom)中,我得到CA$5.00 由于指定的区域设置是加拿大,因此它应该是$5.00CA$5.00将有意义,从而指定外币 这种行为在ECMAscript实现中似乎有所不同。迄今为止的测试表明: jest/jsdom/nod

我正在编写一个使用JSI18NAPI的格式化函数测试

(5).toLocaleString('en-ca', {style: 'currency', currency: 'CAD'})
在浏览器中,我得到了
$5.00
,正如我所期望的那样

在jest测试(节点8.9.1+jsdom)中,我得到
CA$5.00

由于指定的区域设置是加拿大,因此它应该是
$5.00
<如果区域设置为“en-us”,则代码>CA$5.00将有意义,从而指定外币

这种行为在ECMAscript实现中似乎有所不同。迄今为止的测试表明:

  • jest/jsdom/node总是将CA添加到CAD中
  • Chrome、Safari和Firefox仅在区域设置未设置为Canada时添加
  • 我从不加
对于
fr ca
而言,差异更大:

(5).toLocaleString('fr-ca', {style: 'currency', currency: 'CAD'})
\\ node: `CA$ 5.00` (incorrect). 
\\ browser: `5,00 $` (correct)

我怀疑测试运行在任何环境中(可能是我的nvm管理版本的节点)都没有“fr ca”的本地化,或者可能在
en US
之外的任何本地化。我想让我们的测试与浏览器匹配,这样他们就可以。。。测试。

我用一些澄清更新了问题。在加拿大(与其他任何国家类似),我们公布的是国外价格,而不是当地价格。虽然我一直看到它是以USD/CAD的形式编写的,但不像javascript那样是以CA$/US$的形式编写的。