/* eslint-disable @typescript-eslint/ban-ts-comment */ import { enUS } from '../src/renderer/i18n/en-US'; import { localesNames } from '../src/renderer/i18n/supported-locales'; const locale = process.argv[2]; let fullCount = 0; let checkCount = 0; if (!locale) { console.log('Please specify locale code as first argument.'); process.exit(); } if (!Object.keys(localesNames).includes(locale)) { console.log(`Translation ${locale} not fount in supported locales.`); process.exit(); } console.log('Checking missing translations for:', locale); const i18nFile = require(`../src/renderer/i18n/${locale}`)[locale.replace('-', '')]; for (const group in enUS) { // @ts-ignore fullCount += Object.keys(enUS[group]).length; if (!Object.keys(i18nFile).includes(group)) { console.log(`Group "\u001b[31m${group}\u001b[0m" missing!`); continue; } // @ts-ignore for (const term in enUS[group]) { if (!Object.keys(i18nFile[group]).includes(term)) console.log(`Translation "\u001b[33m${group}.${term}\u001b[0m" missing!`); // @ts-ignore else if (i18nFile[group][term] === enUS[group][term]) { console.log(`Term "\u001b[36m${group}.${term}\u001b[0m" not translated!`); checkCount++; } else checkCount++; } } console.log(checkCount, 'of', fullCount, 'strings are present in', locale, `(\u001b[32m${(checkCount*100/fullCount).toFixed(1)}%\u001b[0m)`);