const languages = [ 'ar-SA', 'ca-ES', 'de-DE', 'en', 'es-VE', 'eu-ES', 'fr-FR', 'hu-HU', 'id-ID', 'it-IT', 'ja-JP', 'ko-KR', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sv-SE', 'th-TH', 'tr-TR', 'zh-CN', 'zh-TW', ]; const fs = require('fs'); languages.forEach(language => { const json = require(`../../resources/translations/${language}.json`); const outputJSON = flattenJSON(json); const output = JSON.stringify(outputJSON); const isExistDir = fs.existsSync('./src/@types/translations'); if (!isExistDir) { fs.mkdirSync('./src/@types/translations'); } fs.writeFile(`./src/@types/translations/${language}.json`, new Uint8Array(Buffer.from(output)), (res) => { if (res) { console.error(res); } }) }); function flattenJSON(obj, prefix = '') { let result = {}; const pluralsKey = ["one", "other", "few", "many", "two", "zero"]; for (let key in obj) { if (typeof obj[key] === 'object' && obj[key] !== null) { const nestedKeys = flattenJSON(obj[key], `${prefix}${key}.`); result = { ...result, ...nestedKeys }; } else { let newKey = `${prefix}${key}`; let replaceChar = '{' if (pluralsKey.includes(key)) { newKey = `${prefix.slice(0, -1)}_${key}`; } result[newKey] = obj[key].replaceAll('{', '{{').replaceAll('}', '}}'); } } return result; }