gui/modules/desktop/scripts/prepare-crowdin-import.cjs
Neil 32e53ee1ad
I18n crowdin (#242)
* #241 init crowdin usage

* #241 convert all convertible copy into i18n value

---------

Co-authored-by: neil <neil@neils-MacBook-Pro.local>
2023-02-28 13:38:57 +08:00

36 lines
873 B
JavaScript

const fs = require("fs");
const _ = require("lodash");
const translations = require("../src/libs/translations/translations.json");
const englishRaw = translations["en"];
delete englishRaw.lang;
function flattenObject(o, prefix = "", result = {}, keepNull = true) {
if (_.isString(o) || _.isNumber(o) || _.isBoolean(o) || (keepNull && _.isNull(o))) {
result[prefix] = o;
return result;
}
if (_.isArray(o) || _.isPlainObject(o)) {
for (let i in o) {
let pref = prefix;
if (_.isArray(o)) {
pref = pref + `[${i}]`;
} else {
if (_.isEmpty(prefix)) {
pref = i;
} else {
pref = prefix + "." + i;
}
}
flattenObject(o[i], pref, result, keepNull);
}
return result;
}
return result;
}
const flattenedEnglish = flattenObject(englishRaw);
fs.writeFileSync("./copy.json", JSON.stringify(flattenedEnglish, null, 2), "utf-8");