我正在编写使用JS i18n API的格式化函数的测试。
(5).toLocaleString('en-ca', {style: 'currency', currency: 'CAD'})
在浏览器中,我得到$5.00
,正如我所料。
在开玩笑测试中(节点8.9.1 + jsdom),我得到CA$5.00
。
它应该是$5.00
,因为指定的区域设置是加拿大。如果区域设置为CA$5.00
,则'en-us'
会有意义,从而指定外币。
这种行为在ECMAscript的实施中似乎有所不同。到目前为止的测试显示:
对于fr-ca
,差异甚至更大:
(5).toLocaleString('fr-ca', {style: 'currency', currency: 'CAD'})
\\ node: `CA$ 5.00` (incorrect).
\\ browser: `5,00 $` (correct)
我怀疑运行测试的任何环境(可能是我的nvm托管节点版本)都没有本地化的“fr-ca”,或者可能是en-US
以外的所有本地化版本。我想让我们的测试与浏览器匹配,以便他们可以......测试。