Javascript全局格式货币

时间:2020-05-18 03:58:49

标签: javascript

我一直在搜索数小时,似乎没有简单的方法可以用当地货币显示数字。我已经很接近了,但是我没有得到最后的信息,就是当地的货币代码(在下面的示例中,美国为“ USD”)

使用navigator.language我可以获得本地格式(“ en-US”等),这很棒。距离完美的全球货币格式化程序仅一步之遥,但仍然无法获得货币代码!

const formatter = new Intl.NumberFormat(navigator.language, {
  style: 'currency',
  currency: 'USD',
  minimumFractionDigits: 0
});

我发现网站上有大桌子,每个国家的每种货币代码。我可以尝试将所有数据导入到表中,然后将gps位置或浏览器位置映射到其中之一,但这将很混乱。另一种选择是让用户从下拉菜单中进行选择,但这又很麻烦。

我们真的是在2020年,没有人想到过创建一种动态方式将本地货币代码发送到浏览器吗?

有人解决了吗?

1 个答案:

答案 0 :(得分:1)

这就是我想出的。可能是世界上第一个全球货币格式化器。应该在任何国家都可以正常工作。 (需要jQuery):

function formatNumberToLocalCurrency(amount=0, refresh=false) {
  if (refresh || !localStorage.geoplugin_currencyCode) {
    $.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function (data) {
      localStorage.geoplugin_currencyCode = data.geoplugin_currencyCode;
    });
  }

  const formatter = new Intl.NumberFormat(navigator.language || 'en-US', {
    style: 'currency',
    currency: localStorage.geoplugin_currencyCode || 'USD',
    minimumFractionDigits: 0
  });
  return formatter.format(amount);
}