在Node.js中自动导出国际化字符串

时间:2017-09-22 16:56:33

标签: javascript node.js localization internationalization

如果我使用的是i18n等npm模块,则密钥存储在特定于语言的文件中,例如locale / en.js或locale / de.js:

en.js
{
  "hello world": "hello world"
}

是否有使用其格式导出字符串的工具,例如_(" Hello world"),并自动将它们插入到langauge文件中,就像en.js一样,对于其他语言文件,它是一个空字符串,例如: "新密钥":""在编码的过程中,要取出一些必须添加它们的腿部工作。

作为一个例子:如果我添加一个新的字符串_("一些str"),一个新的键"一些str":"一些str"将被添加到en.js和"一些str":""在运行该工具时de.js。

1 个答案:

答案 0 :(得分:1)

如果您只是想要该对象,可以使用fs将其保存到js文件或json文件。

test.js

var fs = require('fs')
try {
  var en = JSON.parse(fs.readFileSync('en.js'))
  var de = JSON.parse(fs.readFileSync('de.js'))
} catch(err) {
  // no file present
  en = {};
  de = {};
}
var string = process.env.string;
en[string] = string;
de[string] = "";
console.log(JSON.stringify(en), JSON.stringify(de))
fs.writeFile('en.js', JSON.stringify(en))
fs.writeFile('de.js', JSON.stringify(de))

正如您所看到的,string变量只是env参数。

string=hello node test.js

或者您可以将它们保存到json文件

fs.writeFile('en.json', JSON.stringify(en))
fs.writeFile('de.json', JSON.stringify(de))

如果您使用此脚本以及使用该对象的脚本,请务必小心。由于writeFileasync操作