javascript - 如何使用 i18next (node.js) 提取字符串常量以进行本地化?
问题描述
我有几个使用字符串常量为用户提供可读输出的 javascript 源文件 (.js)。这是一个例子(虽然我每个文件有很多常量,而不仅仅是几个):
const WELCOME_MESSAGE = 'Welcome %!';
const GOODBYE_MESSAGE = 'Goodbye';
我正在使用i18next和i18next-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
函数使用的字符串)。
你能提出一个解决方案吗?