@c-sheep/i18n-extract-cli
Version:
这是一款能够自动将代码里的中文转成i18n国际化标记的命令行工具。当然,你也可以用它实现将中文语言包自动翻译成其他语言。适用于vue2、vue3和react
48 lines (47 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.startExport = void 0;
const flatObjectDeep_1 = require("../shared/flatObjectDeep");
const translateMoreLanguage_1 = require("../translate/translateMoreLanguage");
const startMergeJson_1 = require("./startMergeJson");
const getLoseLangaugeXlsx_1 = require("../shared/getLoseLangaugeXlsx");
function startExport(i18nConfig) {
const { lang = "zh-tw", locales, excelPath, localePath, formatModuleName, defaultKey } = i18nConfig;
const baseDefaultKey = defaultKey || 'zh-cn';
const moduleNameRegex = formatModuleName ? new RegExp(formatModuleName) : /./;
const allData = (0, startMergeJson_1.getFullLocalJsonData)(localePath, [baseDefaultKey, ...locales], moduleNameRegex);
const twJson = (0, flatObjectDeep_1.flatObjectDeep)((0, translateMoreLanguage_1.getBaseLanguageMap)(localePath, lang, moduleNameRegex));
const zhDataDeep = (0, translateMoreLanguage_1.getBaseLanguageMap)(localePath, baseDefaultKey, moduleNameRegex);
const flatData = (0, flatObjectDeep_1.flatObjectDeep)(zhDataDeep);
const map = {};
for (const i in flatData) {
map[i] = "";
}
const resultTwMap = { ...map, ...twJson };
const resultTwDataArr = Object.keys(resultTwMap);
const mapLangArr = [];
resultTwDataArr.forEach((i) => {
if (!resultTwMap[i]) {
mapLangArr.push(i);
}
});
const headers = ["字典 keys", baseDefaultKey, ...locales];
const result = [];
mapLangArr.forEach((i) => {
const resHeader = headers.slice(1);
const langData = resHeader.map((j) => allData[j][i]);
const arr = [i, ...langData];
result.push(arr);
});
(0, getLoseLangaugeXlsx_1.genreLoseXlsx)(excelPath, { headers, data: result, formatModuleName });
// for (const lang in allData) {
// const lanData = allData[lang]
// result[lang] = result[lang] || {}
// for (const i in lanData) {
// if (mapLangBoolean[i]) {
// (result[lang] as StringObject)[i] = lanData[i]
// }
// }
// }
}
exports.startExport = startExport;