i18-fe-automator
Version:
前端代码提取中文并替换成$t函数
54 lines (53 loc) • 2.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_extra_1 = __importDefault(require("fs-extra"));
// import type { StringObject } from '../types'
const stateManager_1 = __importDefault(require("./utils/stateManager"));
const excelUtil_1 = require("./utils/excelUtil");
const getAbsolutePath_1 = require("./utils/getAbsolutePath");
// import getLang from './utils/getLang'
// import log from './utils/log'
const getLocaleDir_1 = require("./utils/getLocaleDir");
// import { flatObjectDeep } from './utils/flatObjectDeep'
function exportExcelEnAndCn(obj) {
const { excelPath } = stateManager_1.default.getToolConfig();
const headers = (0, excelUtil_1.getExcelHeader)();
const excelFileName = `脚本输出文件(${new Date().valueOf()}).xlsx`;
// 读取语言包
const localeDirPath = (0, getLocaleDir_1.getLocaleDir)();
// log.info('localeDirPath')
// log.info(localeDirPath)
// 读取./locales/en-US.json文件
const currentLocalePath = (0, getAbsolutePath_1.getAbsolutePath)(localeDirPath, `en-US.json`);
const currentLocaleObj = fs_extra_1.default.readJSONSync(currentLocalePath);
// log.info('currentLocaleObj')
// log.info(currentLocaleObj)
const data = [];
const failData = [];
Object.entries(obj).forEach(([key, value]) => {
const en = currentLocaleObj[value] || '';
let isErrorKey = false;
if (!key ||
(key && key.indexOf('[object Object]') > -1) ||
(key && key.indexOf('debug') > -1)) {
isErrorKey = true;
}
if (isErrorKey || !en || !value) {
failData.push([key, value, en]);
}
else {
data.push([key, value, en]);
}
});
const res = data.concat(failData);
console.log(`导出的excel中,共${res.length || 0}条,处理成功${data.length}条,处理失败${failData.length}条, 成功率${((data.length / res.length) * 100).toFixed(2) || 0}%`);
if (failData.length) {
console.log(`建议对这${failData.length}条数据,手动处理下excel中的key和英文翻译,然后再搜索代码中的key改下`);
}
const excelBuffer = (0, excelUtil_1.buildExcel)(headers, res, excelFileName);
fs_extra_1.default.writeFileSync((0, getAbsolutePath_1.getAbsolutePath)(process.cwd(), excelPath), excelBuffer, 'utf8');
}
exports.default = exportExcelEnAndCn;