UNPKG

webpack-i18n-plugin-plus

Version:

webpack国际化插件-升级版,支持script中的中文识别,支持自动翻译

61 lines (56 loc) 1.71 kB
const utils = require("./utils"); const babelUtils = require("../babel-plugin/utils"); const path = require("path"); const ora = require("ora"); const fs = require("fs"); const myOra = ora(); const translate = require("./translate"); /** * * @param options */ function genConfigFile(opt) { return new Promise(reslove => { let options = { i18nDir: utils.defaultDir(), ...opt, }; myOra.info("国际化配置生成中..."); let i18nMap = babelUtils.getI18nMap(), oldKeysMap = {}; let localeFilePath = path.resolve(options.i18nDir, "./zh_CN/index.js"); if (fs.existsSync(localeFilePath)) { oldKeysMap = require(localeFilePath); } let oldKeysMapKeys = Object.keys(oldKeysMap); let textKeyArr = [], newTextKeyArr = [], sortKeysMap = {}; Object.keys(i18nMap).map((key) => { if (oldKeysMapKeys.length && !oldKeysMap[key]) { newTextKeyArr.push(key); } else { textKeyArr.push(key); } }); if (oldKeysMapKeys.length) { textKeyArr.sort((a, b) => { return oldKeysMapKeys.indexOf(a) - oldKeysMapKeys.indexOf(b); }); } textKeyArr.concat(newTextKeyArr).forEach((key) => { sortKeysMap[key] = i18nMap[key]; }); if (JSON.stringify(sortKeysMap) !== JSON.stringify(oldKeysMap)) { let localeCode = "module.exports = " + JSON.stringify(sortKeysMap); utils.writeFile(path.resolve(options.i18nDir, "./zh_CN/index.js"), localeCode); } translate(options, sortKeysMap, reslove); }) } /** * * @type {genConfigFile} */ module.exports = genConfigFile; module.exports.utils = utils;