首页 > 解决方案 > 如何使用 i18next (node.js) 提取字符串常量以进行本地化?

问题描述

我有几个使用字符串常量为用户提供可读输出的 javascript 源文件 (.js)。这是一个例子(虽然我每个文件有很多常量,而不仅仅是几个):

const WELCOME_MESSAGE = 'Welcome %!';
const GOODBYE_MESSAGE = 'Goodbye';

我正在使用i18nexti18next-sprintf-postprocessor为这些字符串提供本地化版本。我将本地化版本放在这样的目录结构中:

├── i18n/    // localized strings
│   ├── en.js
│   ├── de.js
│   ├── fr.js
│   ├── it.js
│   └── es.js
├── node_modules/
│   └── ...  // npm modules
└── index.js // main js file

每个本地化文件看起来或多或少像这样(下面显示的 en.js 示例):

// en.js
module.exports = {
    translation: {
        WELCOME_MESSAGE: 'Welcome %!',
        GOODBYE_MESSAGE: 'Goodbye'
    }
}

由于我有几个源文件和大量的英文字符串常量,我想通过一个 gulp 进程自动生成en.js 上图),该进程从源文件(index.js)中提取所有字符串常量并创建上面的文件(en .js ,如果i18n目录不存在,则之前创建它)。

我一直在寻找无济于事的解决方案(如果可用,我很乐意使用现有的 npm 包来执行此操作)。我找到了 i18next 扫描仪和解析器,但他们希望文件已经支持 i18next(例如,通过_t函数使用的字符串)。

你能提出一个解决方案吗?

标签: javascriptnode.jslocalizationi18next

解决方案


推荐阅读