@neiderruiz/translate-files
Version:
Internationalize and manage your website easily with (CSV or JSON to i18n)
41 lines (33 loc) • 1.41 kB
text/typescript
import * as fs from "fs";
import { langs } from "../types/langs";
import { TypeSimpleJson } from "../types/types";
import { addKeyValueToObject } from "./add-key-value-to-object";
import { sortByLanguage } from "./sort-by-language";
import { ConfigOptions } from "./translate-file-csv";
export const saveWithLevels = (jsonObj: TypeSimpleJson[], folderSave: string, config?: ConfigOptions) => {
return new Promise((resolve, reject) => {
try {
const translationsOrders = sortByLanguage(jsonObj);
const notCreate = ["base", "key"];
const langsKeys = langs.map((lang) => lang.code);
translationsOrders.map((translation) => {
const language = Object.keys(translation)[0];
if (!notCreate.includes(language) && langsKeys.includes(language)) {
let result = {};
Object.entries(translation[language]).forEach(([key, value]) => {
const keys = key.split(config?.separator ?? ".");
addKeyValueToObject(result, keys, value);
});
fs.writeFileSync(
`${folderSave}/${language}.json`,
JSON.stringify(result, null, 4)
);
console.log(`🟢 Finish success ${language.toUpperCase()} ${folderSave}/${language}.json \n`);
}
});
resolve("Operation completed successfully");
} catch (error) {
reject(`Error occurred: ${error}`);
}
});
};