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

74 lines
3.3 KiB
JavaScript

// to update all other languages files based on the english file (for new locale codes)
// warning: sphagettie code
const fs = require('fs');
let languagesNotEn = [];
fs.readdirSync('../data/').map(e => {
if (e.endsWith('.lang') && !e.includes('en')) languagesNotEn.push(e.split('.')[0]);
});
const newEnHeader = fs.readFileSync('../data/en.lang').toString().split('----')[0] + '----';
const sortedKeyValueEn = fs.readFileSync('../data/en.lang').toString()
.split('----')[1]
.split('\n')
.sort((a, b) => {
// sort by code only
a = a.split(':')[0];
b = b.split(':')[0];
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
})
.join('\n');
fs.writeFileSync('../data/en.lang', (newEnHeader + sortedKeyValueEn));
const codesInEn = fs.readFileSync('../data/en.lang').toString()
.split('----')[1]
.split('\n')
.map(e => e.split(':')[0])
.filter(e => e != null && e != '')
.sort();
for (const lang of languagesNotEn)
{
const newLangHeader = fs.readFileSync(`../data/${lang}.lang`).toString().split('----')[0] + '----\n';
const codesInLang = fs.readFileSync(`../data/${lang}.lang`).toString()
.split('----')[1]
.split('\n')
.map(e => e.split(':')[0])
.filter(e => e != null && e != '')
.sort();
let output = fs.readFileSync(`../data/${lang}.lang`).toString().split('----')[1];
let newCodes = [];
for (const code in codesInEn)
{
if (!codesInLang.includes(codesInEn[code]))
{
newCodes.push(codesInEn[code]);
}
}
for (const code of newCodes)
output += '\n' + code + ':\n';
output = output.split('\n').sort((a, b) => {
// sort by code only
a = a.split(':')[0];
b = b.split(':')[0];
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}).filter(e => e != null && e != '').join('\n');
fs.writeFileSync(`../data/${lang}.lang`, newLangHeader + output);
}