Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Javascript Intl.NumberFormat不';t转换为pt BR语言环境_Javascript_Node.js - Fatal编程技术网

Javascript Intl.NumberFormat不';t转换为pt BR语言环境

Javascript Intl.NumberFormat不';t转换为pt BR语言环境,javascript,node.js,Javascript,Node.js,我有以下代码示例: const formCurrency = new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL', minimumFractionDigits: 2 }) 如果输入为: var money = 1000.50 formCurrency.format(money) 预期输出为:R$1.000,50,, 但它却给出了:R$1000.50 是否有人知道如何使用更改,,或使用

我有以下代码示例:

const formCurrency = new Intl.NumberFormat('pt-BR', {
    style: 'currency',
    currency: 'BRL',
    minimumFractionDigits: 2
})
如果输入为:

var money = 1000.50

formCurrency.format(money)
预期输出为:
R$1.000,50
,, 但它却给出了:
R$1000.50

是否有人知道如何使用
更改
,或使用
Intl
以其他方式进行更改


我已经尝试将区域设置更改为de de,但效果不太好。对于其他
样式
而言,
R$
会更改,但其余标点符号不会更改

嗯,这不是一个非常理想的解决方案,但应该可以做到这一点

let result = formCurrency.format(money);
result = result.split('.');
result[0] = result[0].replace(',' , '.');
result = result.join(',');

我试着用regex来做,但找不到一个好方法。

多亏了阿尔瓦罗,我找到了一个方法。根据MDN和Node文档本身,
Node.js
只支持en US语言环境。因此,为了让它发挥作用,我需要:

  • 使用
    npm i full icu
  • 安装后进行
    npm重建
  • package.json
    文件中添加以下代码:

    “scripts”:{“start”:“node--icu data dir=node\u modules\\full icu YOURAPP.js”}

  • 使用
    npm start运行节点应用程序
现在它得到了正确的语言环境,也做了正确的标点符号。

我使用语言环境'id'(印度尼西亚),它对我很有用

var number = '1555666.99';
console.log(new Intl.NumberFormat('id').format(number))

生产中需要采取的步骤(类似于@Mael,但变化不大)

1-在package.json中添加依赖项(在提交之前在本地运行
npm i full icu
执行此操作)

2-在节点运行应用程序之前,将路径添加到
icu数据目录
,然后编辑
start
脚本:

"start": "node --icu-data-dir=./node_modules/full-icu yourEntryFile.js"
只有这些步骤对我起了作用。可以帮助其他人。

使用此

function convertMoneyValue(number,element){
    number = parseFloat((number/100)).toFixed(2);
    element.value = (new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(number));
}

Node.js可能不会捆绑完整的ICU数据库。我想你必须在别处找到它——感谢阿尔瓦罗冈萨雷斯博士找到了这样做的方法。我会用我以前的方式发布。
function convertMoneyValue(number,element){
    number = parseFloat((number/100)).toFixed(2);
    element.value = (new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(number));
}