Files
mue/scripts/updatetranslations.js
David Ralph 10f12b20c5 7.x Structural Changes (#637)
* refactor(files): Initial commit on experimental file structure

* refactor(structure): New components system

* refactor(structure): Tidy settings' components

* Refactor(structure): Component exports and imports

* refactor(settings): Use new component imports

* feat: unified background.js script

* fix(build): Partially, distributions still not ready

* feat: critical error on noscript, light theme support for it

* fix(background): Critical issue of code making every background #000

* refactor(welcome): Partition into different files + shared components
- This took too long and destroyed my sanity

---------

Co-authored-by: alexsparkes <turbomarshmello@gmail.com>
Co-authored-by: alexsparkes <alexsparkes@gmail.com>
2024-02-18 23:05:15 +00:00

40 lines
1.2 KiB
JavaScript

// tl;dr this function merges the translation file with the english file in order to add untranslated strings
const fs = require('fs');
const merge = require('@eartharoid/deep-merge');
/**
* It recursively compares the keys of two JSON objects and removes the keys from the first object that
* are not present in the second object
* @param json1 - The JSON object that you want to remove keys from.
* @param json2 - The JSON object that you want to compare against.
*/
const compareAndRemoveKeys = (json1, json2) => {
for (let key in json1) {
if (json2.hasOwnProperty(key)) {
if (typeof json1[key] === 'object' && typeof json2[key] === 'object') {
compareAndRemoveKeys(json1[key], json2[key]);
}
} else {
delete json1[key];
}
}
};
fs.readdirSync('../src/i18n/locales').forEach((file) => {
if (file === 'en_GB.json') {
return;
}
const en = require('../src/i18n/locales/en_GB.json');
const newdata = merge(en, require('../src/i18n/locales/' + file));
// remove strings not in english file
compareAndRemoveKeys(newdata, en);
// write new file
fs.writeFileSync('../src/i18n/locales/' + file, JSON.stringify(newdata, null, 2));
// add new line
fs.appendFileSync('../src/i18n/locales/' + file, '\n');
});