是否可以自定义JS toLocaleString的格式

时间:2018-03-27 14:00:24

标签: javascript internationalization

javascript在没有任何外部依赖关系的情况下拥有原生i18n API真是太好了!

但是有什么办法可以自定义它的输出吗?或构建可以保持一致的自定义本地化?我发现这个领域的文档相当混乱。我在尝试使用本机函数时遇到两个问题:

跨浏览器的行为不一致

(-5).toLocaleString('fr-ca', {style: 'currency', currency: 'CAD'})
// IE11: "(5,00 $)"
// Chrome: "-5,00 $"
// requirements: "−5,00 $"

无法指定特定格式

我们的辅助功能测试人员需要打印负货币值,如下所示:

(-5).toLocaleString('en-ca', {style: 'currency', currency: 'CAD'})
// requirements: "$−5.00"
// (Using unicode char U+2212 (minus sign) and flipping minus and $.
// Most browsers: "-$5.00"

我已经阅读了一些关于指定要使用哪个区域设置的内容,但没有详细介绍如何在Moment.js和类似库中自定义方式。我非常喜欢使用内置API的想法,但如果它无法帮助我们满足业务需求,那么它可能就不值得了。

1 个答案:

答案 0 :(得分:0)

   Number.prototype.toLocale = function(){
    return (`$` + Math.round(this, 2)).replace(".", ",");
   }