Seb*_*ber 12 javascript localization internationalization number-formatting jestjs
在Mozilla的网站说:
var number = 123456.789;
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' })
.format(number));
// expected output: "123.456,79 €"
Run Code Online (Sandbox Code Playgroud)
但是在我的 Jest 单元测试中,根据我和 Mozilla 的示例,我得到的输出€ 123,456.79
对于fr-FR
语言环境不正确。
我尝试加载 polyfills 和区域设置数据,但似乎没有解决问题
import 'intl';
import 'intl/locale-data/complete';
import 'intl/locale-data/jsonp/fr';
import 'intl/locale-data/jsonp/fr-FR';
import 'intl/dist/Intl.complete';
Run Code Online (Sandbox Code Playgroud)
知道有什么问题吗?
回答我自己的问题。
我认为这是因为我们必须向节点提供语言环境/ICU 数据。之后加载 polyfill 不会修补节点中已经存在的 Intl api。
没有进一步测试,但这些链接可能会有所帮助:
开玩笑:测试 Intl.DateTimeFormat https://github.com/nodejs/node/blob/master/doc/api/intl.md
看起来节点和浏览器行为之间不一致。我认为 polyfills 可能不起作用,因为你的节点支持Intl
. 并且有一个检查以避免覆盖本机实现。尝试使用IntlPolyfill
,它应该可用。\n我还尝试了节点 6.14.4,并得到了\xe2\x82\xac123,456.79
:D