polyglot-cli
Version:
Infinum Polyglot CLI
40 lines (33 loc) • 900 B
JavaScript
const {forEach, set, mapValues, isPlainObject} = require('lodash');
function denestObject(data, prefix = '') {
if (isPlainObject(data)) {
const copy = {};
const objects = [];
forEach(data, (translations, key) => {
if (isPlainObject(translations)) {
objects.push(denestObject(translations, `${prefix}${key}.`));
} else {
copy[`${prefix}${key}`] = translations;
}
});
Object.assign(copy, ...objects);
return copy;
}
return data;
}
module.exports = {
denestObject,
forLocal(data) {
const obj = {};
forEach(data, (translations, locale) => {
forEach(translations, (translation, key) => {
const path = [locale, ...key.split(/\./g)];
set(obj, path, translation);
});
});
return obj;
},
forRemote(data) {
return mapValues(data, (translations) => denestObject(translations));
}
};