Commit 988ecdbd authored by SpinShare's avatar SpinShare

added two scripts for locale checking

parent d405432a
const fs = require('fs');
const glob = require('glob');
const path = require('path');
const chalk = require('chalk');
const chalkTable = require('chalk-table');
const localeBaseRaw = fs.readFileSync(path.join(__dirname, '/src/i18n/en.json'), 'utf8');
const localeBase = JSON.parse(localeBaseRaw);
console.clear();
console.log('---- LOCALE CHECK ----');
console.log('');
let results = [];
const allLocales = glob.sync(path.join(__dirname, '/src/i18n', '*.json'));
allLocales.forEach((locale) => {
if(!locale.includes("en.json")) {
let rawLocale = locale.split("/")[locale.split("/").length - 1];
let localeNewRaw = fs.readFileSync(locale, 'utf8');
let localeNew = JSON.parse(localeNewRaw);
let newKeys = 0;
let removedKeys = 0;
// Find missing keys
for (let [key, value] of Object.entries(localeBase)) {
if (!localeNew.hasOwnProperty(key)) {
newKeys++;
}
}
// Find removed keys
for (let [key, value] of Object.entries(localeNew)) {
if (!localeBase.hasOwnProperty(key)) {
removedKeys++;
}
}
results.push({
locale: rawLocale,
missing: newKeys + " keys",
removed: removedKeys + " keys",
ready: ((newKeys == 0 && removedKeys == 0) ? chalk.green("READY") : chalk.red("NOT READY"))
});
}
});
let tableOptions = {
leftPad: 2,
columns: [
{ field: "locale", name: chalk.cyan("Locale")},
{ field: "missing", name: chalk.cyan("Missing")},
{ field: "removed", name: chalk.cyan("Removed")},
{ field: "ready", name: chalk.white("Ready to ship?")},
]
}
console.log(chalkTable(tableOptions, results));
console.log('');
console.log('---------------------');
\ No newline at end of file
const fs = require('fs');
const path = require('path');
const chalk = require('chalk');
const languageToCompare = process.argv[2];
// Load reference (en) and target locale
const localeBaseRaw = fs.readFileSync(path.join(__dirname, '/src/i18n/en.json'), 'utf8');
const localeNewRaw = fs.readFileSync(path.join(__dirname, '/src/i18n', languageToCompare + '.json'), 'utf8');
const localeBase = JSON.parse(localeBaseRaw);
const localeNew = JSON.parse(localeNewRaw);
console.clear();
console.log('---- LOCALE DIFF ----');
console.log('');
let newKeys = 0;
let removedKeys = 0;
// Find missing keys
for (let [key, value] of Object.entries(localeBase)) {
if (!localeNew.hasOwnProperty(key)) {
console.log('[' + languageToCompare + '][' + chalk.red('MISSING') + '] "' + key + '": "' + value + '"');
newKeys++;
}
}
// Find removed keys
for (let [key, value] of Object.entries(localeNew)) {
if (!localeBase.hasOwnProperty(key)) {
console.log('[en][' + chalk.blue('REMOVED') + '] "' + key + '": "' + value + '"');
removedKeys++;
}
}
console.log('');
console.log('------ RESULTS ------');
console.log('');
if (newKeys > 0 || removedKeys > 0) {
console.log(
chalk.white('There are ') +
chalk.red(newKeys + ' keys') +
chalk.white(' missing in ') +
chalk.green(languageToCompare) +
chalk.white(' and ') +
chalk.blue(removedKeys + ' keys') +
chalk.white(' which are not present in en anymore.')
)
} else {
console.log(
chalk.green('Language ') +
chalk.white(languageToCompare) +
chalk.green(' is up to date with ') + chalk.white('en')
);
}
console.log('');
console.log('---------------------');
\ No newline at end of file
This diff is collapsed.
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "vue-cli-service build", "build": "vue-cli-service build",
"locale:check": "node localeCheck.js",
"locale:diff": "node localeDiff.js",
"electron:build": "vue-cli-service electron:build", "electron:build": "vue-cli-service electron:build",
"electron:serve": "vue-cli-service electron:serve", "electron:serve": "vue-cli-service electron:serve",
"postinstall": "electron-builder install-app-deps", "postinstall": "electron-builder install-app-deps",
...@@ -39,6 +41,8 @@ ...@@ -39,6 +41,8 @@
"electron": "^6.0.0", "electron": "^6.0.0",
"less": "^3.0.4", "less": "^3.0.4",
"less-loader": "^5.0.0", "less-loader": "^5.0.0",
"chalk": "^4.1.0",
"chalk-table": "^1.0.2",
"vue-cli-plugin-electron-builder": "~1.4.6", "vue-cli-plugin-electron-builder": "~1.4.6",
"vue-template-compiler": "^2.6.11" "vue-template-compiler": "^2.6.11"
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment