|
@@ -3,37 +3,45 @@ var path = require('path');
|
|
|
var Parser = require('i18next-scanner').Parser;
|
|
|
const zhExclude = require('./i18n_exclude_zh.json');
|
|
|
const enExclude = require('./i18n_exclude_en.json');
|
|
|
+const ruExclude = require('./i18n_exclude_ru.json');
|
|
|
+const esExclude = require('./i18n_exclude_es.json');
|
|
|
const existedEn = require('../src/i18n/en.json');
|
|
|
+const existedRu = require('../src/i18n/ru.json');
|
|
|
+const existedEs = require('../src/i18n/es.json');
|
|
|
|
|
|
var directoryPaths = ['src/pages', 'src/components'];
|
|
|
var existedEnTranslation = existedEn.translation;
|
|
|
+var existedRuTranslation = existedRu.translation;
|
|
|
+var existedEsTranslation = existedEs.translation;
|
|
|
|
|
|
-var zhHandler = function (key) {
|
|
|
- /// 读取特殊规则,如果有特殊规则,就从特殊规则取值
|
|
|
+var zhHandler = function (key, parser) {
|
|
|
+ // 读取特殊规则,如果有特殊规则,就从特殊规则取值
|
|
|
if (zhExclude[key]) {
|
|
|
- zhParser.set(key, zhExclude[key]);
|
|
|
+ parser.set(key, zhExclude[key]);
|
|
|
return;
|
|
|
}
|
|
|
- zhParser.set(key, key);
|
|
|
+ parser.set(key, key);
|
|
|
};
|
|
|
|
|
|
-var enHandler = function (key) {
|
|
|
- /// 读取特殊规则,如果有特殊规则,就从特殊规则取值
|
|
|
- if (enExclude[key]) {
|
|
|
- enParser.set(key, enExclude[key]);
|
|
|
+var otherLanguageHandler = function (key, parser, excludeValue, existedValue) {
|
|
|
+ // 读取特殊规则,如果有特殊规则,就从特殊规则取值
|
|
|
+ if (excludeValue[key]) {
|
|
|
+ parser.set(key, excludeValue[key]);
|
|
|
return;
|
|
|
}
|
|
|
- /// 如果已经有翻译,就从已有翻译取值
|
|
|
- if (existedEnTranslation[key]) {
|
|
|
- enParser.set(key, existedEnTranslation[key]);
|
|
|
+ // 如果已经有翻译,就从已有翻译取值
|
|
|
+ if (existedValue[key]) {
|
|
|
+ parser.set(key, existedValue[key]);
|
|
|
return;
|
|
|
}
|
|
|
var defaultValue = '__TRANSLATION__';
|
|
|
- enParser.set(key, defaultValue);
|
|
|
+ parser.set(key, defaultValue);
|
|
|
};
|
|
|
|
|
|
var zhParser = new Parser();
|
|
|
var enParser = new Parser();
|
|
|
+var ruParser = new Parser();
|
|
|
+var esParser = new Parser();
|
|
|
|
|
|
function processDirectory(directoryPath) {
|
|
|
const files = fs.readdirSync(directoryPath);
|
|
@@ -46,19 +54,31 @@ function processDirectory(directoryPath) {
|
|
|
} else {
|
|
|
let content = fs.readFileSync(fullPath, 'utf-8');
|
|
|
|
|
|
- zhParser.parseFuncFromString(content, { list: ['t'] }, zhHandler);
|
|
|
- enParser.parseFuncFromString(content, { list: ['t'] }, enHandler);
|
|
|
+ zhParser.parseFuncFromString(content, { list: ['t'] }, (key) =>
|
|
|
+ zhHandler(key, zhParser),
|
|
|
+ );
|
|
|
+ enParser.parseFuncFromString(content, { list: ['t'] }, (key) =>
|
|
|
+ otherLanguageHandler(key, enParser, enExclude, existedEnTranslation),
|
|
|
+ );
|
|
|
+ ruParser.parseFuncFromString(content, { list: ['t'] }, (key) =>
|
|
|
+ otherLanguageHandler(key, ruParser, ruExclude, existedRuTranslation),
|
|
|
+ );
|
|
|
+ esParser.parseFuncFromString(content, { list: ['t'] }, (key) =>
|
|
|
+ otherLanguageHandler(key, esParser, esExclude, existedEsTranslation),
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// Process all directories
|
|
|
+// 处理所有目录
|
|
|
for (let directoryPath of directoryPaths) {
|
|
|
processDirectory(directoryPath);
|
|
|
}
|
|
|
|
|
|
var zhTranslations = zhParser.get({ sort: true });
|
|
|
var enTranslations = enParser.get({ sort: true });
|
|
|
+var ruTranslations = ruParser.get({ sort: true });
|
|
|
+var esTranslations = esParser.get({ sort: true });
|
|
|
|
|
|
// 写入翻译到目标json文件
|
|
|
fs.writeFileSync(
|
|
@@ -71,5 +91,15 @@ fs.writeFileSync(
|
|
|
JSON.stringify(enTranslations.en, null, 2),
|
|
|
);
|
|
|
|
|
|
+fs.writeFileSync(
|
|
|
+ 'src/i18n/ru.json',
|
|
|
+ JSON.stringify(ruTranslations.en, null, 2),
|
|
|
+);
|
|
|
+
|
|
|
+fs.writeFileSync(
|
|
|
+ 'src/i18n/es.json',
|
|
|
+ JSON.stringify(esTranslations.en, null, 2),
|
|
|
+);
|
|
|
+
|
|
|
var fileTranslations = Object.keys(zhTranslations.en.translation).length;
|
|
|
console.log('✅ 翻译查找完成,共找到 ' + fileTranslations + ' 个翻译项');
|