@ices/locale-webpack-plugin
Version:
webpack plugin for parsing locale files
77 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
//
const utils_1 = require("./utils");
/**
* 合并本地化数据
* @param dataSet 本地化数据集
* @param locale 区域语言代码
* @param data 待合并的数据
*/
function mergeLocaleData(dataSet, locale, data) {
const [lang] = (0, utils_1.normalizeLocale)(locale);
if (!lang) {
return;
}
let localeData = dataSet[lang];
if (!localeData) {
dataSet[lang] = localeData = {};
}
for (const entry of Object.entries(data)) {
const [key, val] = entry;
if (val !== null && typeof val === 'object') {
localeData[key] = '';
}
else {
localeData[key] = val;
}
}
}
/**
* 合并本地化消息对象
* @param dataSet 本地化数据集
* @param locale 区域语言代码
* @param data 待合并的消息对象
*/
function mergeLocaleObject(dataSet, locale, data) {
const localData = (data || {});
mergeLocaleData(dataSet, locale, localData);
}
/**
* 进行合并。
* @param dataSet 本地化内容数据集。
* @param data 待合并的已解析的数据。
* @param locale 当locale取文件名时,需要传这个值。
*/
function mergeData(dataSet, data, locale) {
if (data === null || typeof data !== 'object') {
return;
}
const localeData = {};
let expectMergeFile = false;
for (const entry of Object.entries(data)) {
const [key, val] = entry;
if (val === null || typeof val !== 'object') {
localeData[key] = val;
expectMergeFile = true;
continue;
}
mergeLocaleObject(dataSet, key, val);
}
if (locale && expectMergeFile) {
mergeLocaleData(dataSet, locale, localeData);
}
}
/**
* 合并本地化消息数据。
* @param dataList 已经解析的数据列表。
*/
function merge(dataList) {
const dataSet = {};
for (const { data, locale } of dataList) {
mergeData(dataSet, data, locale);
}
return dataSet;
}
exports.default = merge;
//# sourceMappingURL=merge.js.map