From 501f01cdd5eef0dbb82744ca3490145bd660ae3e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 8 Sep 2023 10:14:31 +0100 Subject: [PATCH] Remove hardcoded INCLUDE_LANGS Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- scripts/copy-res.js | 58 ++++----------------------------------------- 1 file changed, 4 insertions(+), 54 deletions(-) diff --git a/scripts/copy-res.js b/scripts/copy-res.js index 3b0ad7092f..91c7dd41c2 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -3,59 +3,9 @@ const loaderUtils = require("loader-utils"); // copies the resources into the webapp directory. -// -// Languages are listed manually, so we can choose when to include a translation in the app -// (because having a translation with only 3 strings translated is just frustrating) -// This could readily be automated, but it's nice to explicitly control when new languages are available. -const INCLUDE_LANGS = [ - "bg", - "ca", - "cs", - "da", - "de_DE", - "el", - "en_EN", - "en_US", - "eo", - "es", - "et", - "eu", - "fi", - "fr", - "gl", - "he", - "hi", - "hu", - "id", - "is", - "it", - "ja", - "kab", - "ko", - "lo", - "lt", - "lv", - "nb_NO", - "nl", - "nn", - "pl", - "pt", - "pt_BR", - "ru", - "sk", - "sq", - "sr", - "sv", - "te", - "th", - "tr", - "uk", - "vi", - "vls", - "zh_Hans", - "zh_Hant", -]; +const I18N_BASE_PATH = "src/i18n/strings/"; +const INCLUDE_LANGS = fs.readdirSync(I18N_BASE_PATH).filter((fn) => fn.endsWith(".json")); // cpx includes globbed parts of the filename in the destination, but excludes // common parents. Hence, "res/{a,b}/**": the output will be "dest/a/..." and @@ -154,7 +104,7 @@ function next(i, err) { function genLangFile(lang, dest) { const reactSdkFile = "node_modules/matrix-react-sdk/src/i18n/strings/" + lang + ".json"; - const riotWebFile = "src/i18n/strings/" + lang + ".json"; + const riotWebFile = I18N_BASE_PATH + lang + ".json"; let translations = {}; [reactSdkFile, riotWebFile].forEach(function (f) { @@ -210,7 +160,7 @@ function genLangList(langFileMap) { */ function watchLanguage(lang, dest, langFileMap) { const reactSdkFile = "node_modules/matrix-react-sdk/src/i18n/strings/" + lang + ".json"; - const riotWebFile = "src/i18n/strings/" + lang + ".json"; + const riotWebFile = I18N_BASE_PATH + lang + ".json"; // XXX: Use a debounce because for some reason if we read the language // file immediately after the FS event is received, the file contents