UNPKG

@c-sheep/i18n-extract-cli

Version:

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

54 lines (53 loc) 1.49 kB
"use strict"; 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;