@c-sheep/i18n-extract-cli
Version:
这是一款能够自动将代码里的中文转成i18n国际化标记的命令行工具。当然,你也可以用它实现将中文语言包自动翻译成其他语言。适用于vue2、vue3和react
54 lines (53 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.genreObjectDeep = exports.flatObjectDeep = exports.isObject = void 0;
function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
}
exports.isObject = isObject;
/**
* @example
* 将{a: {bb: 1}} 转成 {'a.bb': 1}
*/
function flatObjectDeep(data) {
const keyValueMap = {};
function collectMap(obj, upperKey) {
Object.keys(obj).forEach((key) => {
const currentKey = upperKey ? `${upperKey}.${key}` : key;
const value = obj[key];
if (isObject(value)) {
collectMap(value, currentKey);
}
else {
keyValueMap[currentKey] = value;
}
});
}
collectMap(data);
return keyValueMap;
}
exports.flatObjectDeep = flatObjectDeep;
/**
* @example
* 将{'a.bb': 1} 转成 {a: {bb: 1}}
*/
function genreObjectDeep(obj) {
const newObj = {};
const keys = Object.keys(obj);
for (const key of keys) {
const keyArr = key.split(".");
const val = obj[key];
keyArr.reduce((data, item, index) => {
if (index >= keyArr.length - 1) {
data[item] = val;
}
else {
data[item] = data[item] || {};
return data[item];
}
return data;
}, newObj);
}
return newObj;
}
exports.genreObjectDeep = genreObjectDeep;