UNPKG

@c-sheep/i18n-extract-cli

Version:

这是一款能够自动将代码里的中文转成i18n国际化标记的命令行工具。当然,你也可以用它实现将中文语言包自动翻译成其他语言。适用于vue2、vue3和react

48 lines (47 loc) 2.17 kB
"use strict"; 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;