From b6e2c2f3e61c4e3ff71c60fa5a01f8601db365c4 Mon Sep 17 00:00:00 2001 From: Mathias Chouet <mathias.chouet@irstea.fr> Date: Tue, 5 May 2020 14:42:08 +0200 Subject: [PATCH] Add script to check missing translations of JaLHyd messages --- scripts/check-translations.js | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 scripts/check-translations.js diff --git a/scripts/check-translations.js b/scripts/check-translations.js new file mode 100644 index 000000000..8beb57298 --- /dev/null +++ b/scripts/check-translations.js @@ -0,0 +1,44 @@ +'use strict'; + +const fs = require('fs'); + +// read and transform JaLHyd message file +const jalhydMessagesPath = "../jalhyd/src/util/message.ts"; +let jm = fs.readFileSync(jalhydMessagesPath, "utf-8"); +// extract enum block +jm = jm.replace(/export enum MessageCode \{([^{]+)\}[\s\S]+/m, (match, p1) => { + return p1; +}); +// remove comments +jm = jm.replace(/\/\*[\s\S]*?\*\//gm, ""); +jm = jm.replace(/\/\/.+/g, ""); + +// remove spaces +jm = jm.replace(/[ \t]+/g, ""); +// remove line breaks +jm = jm.replace(/\n/g, ""); +// split on ";" +const messages = jm.split(","); + +// console.log(messages); + +// read every language file +const localePath = "src/locale"; +const localeDir = fs.readdirSync(localePath); +for (let i = 0; i < localeDir.length; i++) { + const localeFile = localeDir[i]; + const res = localeFile.match(/^messages\.([a-z]{2})\.json$/); + if (res) { + const lang = res[1]; + console.log("Loading translations for language [" + lang + "]"); + const langFilePath = localePath + '/' + localeFile; + let translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); + // console.log(translations); + // check against JaLHyd messages list + for (const mess of messages) { + if (! translations.includes(mess)) { + console.log(" missing message in [" + lang + "] translation: " + mess); + } + } + } +} -- GitLab