【问题标题】:Automatically export strings for internationalization in Node.js在 Node.js 中自动导出字符串以进行国际化
【发布时间】:2017-09-23 01:32:36
【问题描述】:

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

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

是否有使用格式导出字符串的工具,例如_("Hello world"),并自动将它们插入到语言文件中,就像 en.js 一样,而对于其他语言文件,则插入一个空字符串,例如"new key": "" 省去一些在编码时必须添加它们的繁琐工作。

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

【问题讨论】:

    标签: javascript node.js localization internationalization


    【解决方案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 操作

    【讨论】:

    • 其实这是一个不错的方法,谢谢回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多