Files
scrabble-online/scripts/langParser.js
2021-04-04 02:37:30 +01:00

48 lines
1.6 KiB
JavaScript

// parses the lang files and generates a locale.json file
const fs = require('fs');
let languages = [];
fs.readdirSync('../data/').map(e => {
if (e.endsWith('.lang')) languages.push(e.split('.')[0]);
});
let localeCodes = [];
let translations = {};
// extract data from language files
for (let lang in languages)
{
let codesToTranslations = fs.readFileSync(`../data/${languages[lang]}.lang`).toString()
.split('----')[1]
.split('\n')
.filter(e => e != null && e != '')
.map(e => new Array(e.split(':')[0], e.split(':')[1]));
translations[languages[lang]] = codesToTranslations;
// build list of localeCodes
for (const code in codesToTranslations)
{
if (!localeCodes.includes(codesToTranslations[code][0])) localeCodes.push(codesToTranslations[code][0]);
}
}
let output = {};
for (const code of localeCodes)
{
output[code] = {}
for (const lang of languages)
{
// do not default to english - client will do that
// remove whitespace and notes
if (translations[lang].find(e => e[0] == code))
output[code][lang] = translations[lang].find(e => e[0] == code)[1].trim().split(';')[0];
else
output[code][lang] = "";
}
}
fs.writeFileSync('../data/locale.json', JSON.stringify(output, null, 4))