|
|
@@ -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
|