@c-sheep/i18n-extract-cli
Version:
这是一款能够自动将代码里的中文转成i18n国际化标记的命令行工具。当然,你也可以用它实现将中文语言包自动翻译成其他语言。适用于vue2、vue3和react
37 lines (36 loc) • 1.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveLocaleFile = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const stateManager_1 = __importDefault(require("./stateManager"));
// @ts-ignore
const serializeCode_1 = require("./serializeCode");
const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
const formatJsonData = (data) => {
const newData = (0, cloneDeep_1.default)(data);
const result = {};
const sortData = Object.keys(newData).sort();
sortData.forEach((item) => {
const row = newData[item];
if (typeof row !== 'object') {
result[item] = typeof row !== 'object' ? row : formatJsonData(row);
}
});
return result;
};
function saveLocaleFile(locale, path) {
const { localeFileType } = stateManager_1.default.getToolConfig();
if (!fs_extra_1.default.existsSync(path)) {
fs_extra_1.default.ensureFileSync(path);
}
if (localeFileType === "json") {
fs_extra_1.default.writeFileSync(path, JSON.stringify(formatJsonData(locale), null, 2), "utf8");
}
else {
fs_extra_1.default.writeFileSync(path, (0, serializeCode_1.serializeCode)(locale), "utf8");
}
}
exports.saveLocaleFile = saveLocaleFile;