From ef31851554cc3f2195b64ee3e85c8d620c99a006 Mon Sep 17 00:00:00 2001 From: Dylan <36567925+Airyzz@users.noreply.github.com> Date: Sun, 17 Jul 2022 12:12:12 +0930 Subject: [PATCH] Added i18next-loader to webpack --- package-lock.json | 693 +++++++++++-- package.json | 4 +- public/locales/en/translation.json | 1474 ++++++++++++++-------------- public/locales/index.js | 1 + src/app/i18n.jsx | 8 +- webpack.common.js | 4 + webpack.dev.js | 3 +- 7 files changed, 1378 insertions(+), 809 deletions(-) create mode 100644 public/locales/index.js diff --git a/package-lock.json b/package-lock.json index 6ec89d15..d1e265a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "2.0.4", "license": "MIT", "dependencies": { + "@alienfast/i18next-loader": "^1.1.4", "@fontsource/inter": "^4.5.11", "@fontsource/roboto": "^4.5.7", "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", @@ -20,10 +21,10 @@ "file-saver": "^2.0.5", "flux": "^4.0.3", "formik": "^2.2.9", + "html-react-parser": "^2.0.0", "i18next": "^21.8.9", "i18next-browser-languagedetector": "^6.1.4", "i18next-http-backend": "^1.4.1", - "html-react-parser": "^2.0.0", "katex": "^0.15.6", "linkify-html": "^4.0.0-beta.5", "linkifyjs": "^4.0.0-beta.5", @@ -88,6 +89,61 @@ "npm": ">=6.14.8 <=8.5.5" } }, + "node_modules/@alienfast/i18next-loader": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@alienfast/i18next-loader/-/i18next-loader-1.1.4.tgz", + "integrity": "sha512-8H+pIHIPwsjr1ip4bpCHnZtmR1z/K4KPpmD/fUL+kLug/2usATVmRi3IcZogy70Olqo3eH+qoKvWf+ROJbwoUA==", + "dependencies": { + "glob-all": "^3.1.0", + "js-yaml": "^3.13.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15" + } + }, + "node_modules/@alienfast/i18next-loader/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@alienfast/i18next-loader/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@alienfast/i18next-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@alienfast/i18next-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", @@ -3047,7 +3103,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3436,8 +3491,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { "version": "3.0.9", @@ -3485,7 +3539,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, "engines": { "node": "*" } @@ -3626,7 +3679,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3902,6 +3954,14 @@ "tslib": "^2.0.3" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -4061,6 +4121,42 @@ "webpack": ">=4.0.0 <6.0.0" } }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -4283,8 +4379,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -4952,6 +5047,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decode-named-character-reference": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", @@ -5413,7 +5516,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, "engines": { "node": ">= 4" } @@ -6047,6 +6149,18 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -6768,8 +6882,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/fsevents": { "version": "2.3.2", @@ -6896,6 +7009,14 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -6966,7 +7087,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6982,6 +7102,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-all": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.0.tgz", + "integrity": "sha512-30gCh9beSb+YSAh0vsoIlBRm4bSlyMa+5nayax1EJhjwYrCohX0aDxcxvWVe3heOrJikbHgRs75Af6kPLcumew==", + "dependencies": { + "glob": "^7.1.2", + "yargs": "^15.3.1" + }, + "bin": { + "glob-all": "bin/glob-all" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -7750,7 +7882,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7759,8 +7890,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", @@ -9773,7 +9903,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9784,8 +9913,7 @@ "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/mkdirp-classic": { "version": "0.5.3", @@ -10162,7 +10290,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "dependencies": { "wrappy": "1" } @@ -10280,7 +10407,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -10444,7 +10570,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11756,7 +11881,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11770,6 +11894,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -12290,8 +12419,7 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "node_modules/setimmediate": { "version": "1.0.5", @@ -12542,6 +12670,11 @@ "wbuf": "^1.7.3" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -12733,7 +12866,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13994,6 +14126,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "node_modules/which-typed-array": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", @@ -14038,11 +14175,79 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/ws": { "version": "8.5.0", @@ -14123,6 +14328,11 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -14138,6 +14348,121 @@ "node": ">= 6" } }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -14152,6 +14477,54 @@ } }, "dependencies": { + "@alienfast/i18next-loader": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@alienfast/i18next-loader/-/i18next-loader-1.1.4.tgz", + "integrity": "sha512-8H+pIHIPwsjr1ip4bpCHnZtmR1z/K4KPpmD/fUL+kLug/2usATVmRi3IcZogy70Olqo3eH+qoKvWf+ROJbwoUA==", + "requires": { + "glob-all": "^3.1.0", + "js-yaml": "^3.13.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, "@ampproject/remapping": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", @@ -16387,8 +16760,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -16713,8 +17085,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base-x": { "version": "3.0.9", @@ -16747,8 +17118,7 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "bignumber.js": { "version": "2.4.0", @@ -16872,7 +17242,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -17088,6 +17457,11 @@ "tslib": "^2.0.3" } }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -17198,6 +17572,38 @@ "del": "^4.1.1" } }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -17397,8 +17803,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -17892,6 +18297,11 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "decode-named-character-reference": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", @@ -18262,8 +18672,7 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, "encodeurl": { "version": "1.0.2", @@ -18753,6 +19162,11 @@ "eslint-visitor-keys": "^3.3.0" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -19322,8 +19736,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "2.3.2", @@ -19429,6 +19842,11 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -19487,7 +19905,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -19497,6 +19914,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-all": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.0.tgz", + "integrity": "sha512-30gCh9beSb+YSAh0vsoIlBRm4bSlyMa+5nayax1EJhjwYrCohX0aDxcxvWVe3heOrJikbHgRs75Af6kPLcumew==", + "requires": { + "glob": "^7.1.2", + "yargs": "^15.3.1" + } + }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -20053,7 +20479,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -20062,8 +20487,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", @@ -21511,7 +21935,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -21519,8 +21942,7 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mkdirp-classic": { "version": "0.5.3", @@ -21801,7 +22223,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -21887,8 +22308,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pako": { "version": "1.0.11", @@ -22029,8 +22449,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -22967,8 +23386,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { "version": "2.0.2", @@ -22976,6 +23394,11 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -23384,8 +23807,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "setimmediate": { "version": "1.0.5", @@ -23582,6 +24004,11 @@ "wbuf": "^1.7.3" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -23728,7 +24155,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -24655,6 +25081,11 @@ "is-symbol": "^1.0.3" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "which-typed-array": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", @@ -24690,11 +25121,63 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { "version": "8.5.0", @@ -24751,6 +25234,11 @@ "integrity": "sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=", "dev": true }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -24763,6 +25251,93 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index fc469659..a7e5cff7 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "author": "Ajay Bura", "license": "MIT", "dependencies": { + "@alienfast/i18next-loader": "^1.1.4", "@fontsource/inter": "^4.5.11", "@fontsource/roboto": "^4.5.7", "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", @@ -26,11 +27,10 @@ "file-saver": "^2.0.5", "flux": "^4.0.3", "formik": "^2.2.9", - "html-react-parser": "^1.4.14", + "html-react-parser": "^2.0.0", "i18next": "^21.8.9", "i18next-browser-languagedetector": "^6.1.4", "i18next-http-backend": "^1.4.1", - "html-react-parser": "^2.0.0", "katex": "^0.15.6", "linkify-html": "^4.0.0-beta.5", "linkifyjs": "^4.0.0-beta.5", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 8989d39a..e51163f5 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -1,776 +1,764 @@ { - "common": { - "close": "Close", - "open": "Open", - "leave": "Leave", - "options": "Options", - "cinny": "Cinny", - "slogan": "Yet another matrix client", - "source_code": "Source code", - "sponsor": "Support", - "retry": "Retry", - "delete": "Delete", - "continue": "Continue", - "cancel": "Cancel", - "save": "Save", - "view_more": "View more", - "view_less": "View less", - "copy": "Copy", - "upload": "Upload", - "download": "Download", - "or": "Or", - "reset": "Reset", - "setup": "Setup", - "search": "Search", - "loading": "Loading...", - "joining": "Joining...", - "join": "Join", - "remove": "Remove", - "send": "Send", - "homeserver": "Homeserver", - "invite": "Invite", - "uninvite": "Uninvite", - "invited": "Invited", - "inviting": "Inviting...", - "uninviting": "Uninviting...", - "change": "Change", - "edit": "Edit", - "message_prompt": "Message" - }, - "errors": { - "browser_not_supported": "Not supported in this browser", - "generic": "Something went wrong!" - }, - "Organisms": { - "Welcome": { - "heading": "Welcome to Cinny!", - "subheading": "Yet another Matrix client" - }, - "ViewSource": { - "title": "View Source", - "original_source": "Original source", - "decrypted_source": "Decrypted source" - }, - "SpaceManage": { - "subtitle": "manage rooms", - "load_more": "Load more", - "rooms_and_spaces": "Rooms and spaces", - "private_rooms_message": "Either the space contains private rooms or you need to join space to view it's rooms.", - "items_selected_zero": "No selected items", - "items_selected_one": "{{count}} selected item", - "items_selected_other": "{{count}} selected items", - "room_members_zero": "No room members", - "room_members_one": "{{count}} room member", - "room_members_other": "{{count}} room members", - "mark_suggested_zero": "Marking no rooms as suggested", - "mark_suggested_one": "Marking {{count}} room as suggested", - "mark_suggested_other": "Marking {{count}} rooms as suggested", - "mark_not_suggested_zero": "Marking no rooms as suggested", - "mark_not_suggested_one": "Marking {{count}} room as suggested", - "mark_not_suggested_other": "Marking {{count}} rooms as suggested", - "remove_zero": "Removing no items", - "remove_one": "Removing {{count}} item", - "remove_other": "Removing {{count}} items.", - "suggested": "Suggested", - "mark_as_suggested": "Mark as suggested", - "mark_as_not_suggested": "Mark as not suggested" - }, - "SpaceSettings": { - "subtitle": "space settings", - "leave": { - "leave_space": "Leave Space", - "leave_dialog_title": "Leave Space", - "leave_dialog_message": "Are you sure you want to leave {{space}}?" - }, - "visibility": { - "header": "Space visibility (who can join)" - }, - "addresses": { - "header": "Space addresses" - }, - "categorize_subspaces": "Categorize subspaces", - "uncategorize_subspaces": "Uncategorize subspaces", - "pin_sidebar": "Pin to sidebar", - "unpin_sidebar": "Unpin from sidebar" - }, - "Settings": { - "title": "Settings", - "theme": { - "follow_system": { - "title": "Follow system theme", - "description": "Use light or dark mode based on the system settings." - }, - "title": "Theme", - "theme_light": "Light", - "theme_silver": "Silver", - "theme_dark": "Dark", - "theme_butter": "Butter" - }, - "markdown": { - "title": "Markdown formatting", - "description": "Format messages with markdown before sending" - }, - "hide_membership_events": { - "title": "Hide membership events", - "description": "Hide membership change messages from room timeline. (Join, Leave, Invite, Kick and Ban)" - }, - "hide_nickname_avatar_events": { - "title": "Hide nick/avatar events", - "description": "Hide nickname and avatar change messages from the room timeline." - }, - "notifications_and_sound": { - "title": "Notifications & Sound", - "desktop": { - "title": "Desktop notifications", - "description": "Show desktop notifications when new messages arrive." - }, - "sound": { - "title": "Notification sound", - "description": "Play a sound when new messages arrive." - } - }, - "security": { - "cross_signing": { - "title": "Cross signing and backup" - }, - "export_import_encryption_keys": { - "title": "Export / Import encryption keys" - }, - "export_encryption_keys": { - "title": "Export E2E room keys", - "description": "Export end-to-end encryption room keys to decrypt old messages in other session. In order to encrypt keys you need to set a password, which will be used while importing." - }, - "import_encryption_keys": { - "title": "Import E2E room keys", - "description": "To decrypt older messages, Export E2EE room keys from Element (Settings > Security & Privacy > Encryption > Cryptography) and import them here. Imported keys are encrypted so you\\'ll have to enter the password you set in order to decrypt it." - } - }, - "logout": { - "title": "Logout", - "dialog": { - "title": "Logout", - "description": "Are you sure that you want to logout your session?", - "confirm": "Logout" - } - }, - "about": { - "application": "Application", - "credits": "Credits" - } - }, - "ShortcutSpaces": { - "header": "Pin Spaces", - "pinned_spaces": "Pinned spaces", - "no_pinned_spaces": "No pinned spaces", - "unpinned_spaces": "Unpinned spaces", - "no_unpinned_spaces": "No unpinned spaces", - "spaces_selected_zero": "No selected spaces", - "spaces_selected_one": "{{count}} selected space", - "spaces_selected_other": "{{count}} selected spaces", - "pin_button": "Pin" - }, - "SecretStorageAccess": { - "incorrect_security_key": "Incorrect security key", - "incorrect_security_phrase": "Incorrect security phrase", - "security_phrase": "Security Phrase", - "security_key": "Security Key", - "use_security_key": "Use Security Key", - "use_security_phrase": "Use Security Phrase" - }, - "KeyBackup": { - "create_backup_title": "Create key backup", - "create_backup_tooltip": "Create backup", - "creating_backup": "Creating Backup...", - "backup_created": "Successfully created backup", - "backup_failed": "Failed to create backup", - "restoring": "Restoring backup keys...", - "restoring_progress": "Restoring backup keys... ({{progress}}/{{total}}", - "restore_backup_title": "Restore Key Backup", - "restore_backup_tooltip": "Restore Key Backup", - "restore_complete": "Successfully restored backup keys ({{progress}}/{{total}})", - "restore_failed_bad_key": "Failed to restore backup. Key is invalid!", - "restore_failed_unknown": "Failed to restore backup.", - "delete_key_backup_title": "Delete key backup", - "delete_key_backup_tooltip": "Delete backup", - "delete_key_backup_subtitle": "Deleting key backup is permanent.", - "delete_key_backup_message": "All encrypted message keys stored on the server will be permanently deleted.", - "encrypted_messages_backup_description": "Online backup your encrypted messages keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.", - "encrypted_messages_backup_title": "Encrypted messages backup", - "encrypted_messages_backup_cross_signing_disabled": "Setup cross signing to backup your encrypted messages." - }, - "DeviceManage": { - "edit_session_name_title": "Edit session name", - "edit_session_name_subtitle": "Session name", - "edit_session_name_tooltip": "Edit session name", - "current_device_label": "Current", - "verify_session_button": "Verify", - "unverified_sessions_title": "Unverified sessions", - "unverified_sessions_none": "No unverified sessions", - "unencrypted_sessions_title": "Sessions without encryption support", - "verified_sessions_title": "Verified sessions", - "verified_sessions_none": "No verified sessions", - "setup_cross_signing_message": "Setup cross signing in case you lose all your sessions", - "loading_devices": "Loading devices...", - "logout_device_title": "Logout {{device}}", - "logout_device_message": "You are about to log out the session for {{device}}", - "logout_device_confirm": "Logout", - "logout_device_tooltip": "Remove session", - "session_verification_title": "Session Verification", - "session_name_privacy_message": "Session names are visible to everyone, so do not put any private info here." - }, - "CrossSigning": { - "title": "Cross Signing", - "setup_failed": "Failed to setup cross signing. Please try again", - "setup": "Setup cross signing", - "save_security_key_message": "Please save this security key somewhere safe", - "security_key_dialog_title": "Security Key", - "security_key_generation_message": "We will generate a Security Key, which you can use to manage message backups and session verification.", - "security_key_generation_button": "Generate Key", - "security_phrase_message": "Alternatively you can set a 'Security Phrase' so you don't have to remember the long Security Key, and optionally save the key as a backup", - "security_phrase_label": "Security Phrase", - "security_phrase_confirm_label": "Confirm Security Phrase", - "security_phrase_set_button": "Set Phrase & Generate Key", - "setup_dialog_title": "Setup cross signing", - "setup_message": "Setup to verify and keep track of all your sessions. Also required to backup encrypted message.", - "reset_keys_subtitle": "Resetting cross-signing keys is permanent.", - "reset_keys_message": "Anyone you have verified with will see security alerts and your message backup will lost. You almost certainly do not want to do this, unless you have lost Security Key or Phrase and every session you can cross-sign from." - }, - "AuthRequest": { - "wrong_password": "Wrong password. Please enter the correct password", - "request_failed": "Request failed!", - "password_label": "Account password" - }, - "Search": { - "description": "Type # for rooms, @ for DMs and * for spaces. Hotkey: Ctrl + k" - }, - "RoomViewInput": { - "upload_progress": "Uploading: {{progress}}/{{total}} ({{percent}}%)", - "tombstone_replaced": "This room has been replaced, and is no longer active.", - "tombstone_permission_denied": "You do not have permission to post to this room", - "send_message_placeholder": "Send a message...", - "emoji_tooltip": "Emoji", - "file_size": "Size: {{size}}", - "cancel_reply_tooltip": "Cancel reply" - }, - "RoomViewHeader": { - "search_tooltip": "Search", - "people_tooltip": "People", - "members_tooltip": "Members" - }, - "RoomViewFloating": { - "jump_unread": "Jump to unread messages", - "mark_read": "Mark as read", - "jump_latest": "Jump to latest", - "user_typing_one": "{{user_one}} is typing...", - "user_typing_two": "{{user_one}} and {{user_two}} are typing...", - "user_typing_three": "{{user_one}}, {{user_two}} and {{user_three}} are typing...", - "user_typing_four": "{{user_one}}, {{user_two}}, {{user_three}} and {{user_four}} are typing...", - "user_typing_other": "Several people are typing..." - }, - "RoomViewContent": { - "welcome_to_room": "Welcome to {{room_name}}!", - "beginning_room": "This is the beginning of the {{room_name}} room.", - "beginning_dm": "This is the beginning of your direct message history with @{{user_name}}.", - "created_on": "Created on {{date, datetime}}", - "new_messages": "New messages" - }, - "RoomSettings": { - "leave_room": "Leave room", - "leave_room_confirm_message": "Are you sure you want to leave {{room_name}}?", - "leave_room_confirm_button": "Leave", - "notification_header": "Notifications (Changing this will only affect you)", - "visibility_header": "Room visibility (Who can join)", - "address_header": "Room addresses", - "encryption_header": "Encryption", - "message_history_header": "Message history visibility", - "room_settings_subtitle": "room settings" - }, - "RoomCommon": { - "user_joined": "{{user_name}} joined the room", - "user_left": "{{user_name}} left the room", - "user_invited": "{{inviter_name}} invited {{user_name}}", - "invite_cancelled": "{{inviter_name}} cancelled {{user_name}}'s invite", - "invite_rejected": "{{user_name}} rejected the invitation", - "user_kicked": "{{actor}} kicked {{user_name}}: {{reason}}", - "user_banned": "{{actor}} banned {{user_name}}: {{reason}}", - "user_unbanned": "{{actor}} unbanned {{user_name}}", - "avatar_set": "{{user_name}} set an avatar", - "avatar_changed": "{{user_name}} changed their avatar", - "avatar_removed": "{{user_name}} removed their avatar", - "name_set": "{{user_name}} set their display name to {{new_name}}", - "name_changed": "{{user_name}} changed their display name to {{new_name}}", - "name_removed": "{{user_name}} removed their display name {{new_name}}" - }, - "PublicRooms": { - "could_not_join_alias": "Unable to join {{alias}}. Either the room is private or doesn't exist", - "try_joining_alias": "Try joining {{alias}}", - "joining_alias": "Joining {{alias}}...", - "no_public_rooms": "No public rooms on {{homeserver}}", - "no_result_found": "No result found for '{{input}}' on {{homeserver}}", - "title": "Public Rooms", - "search_room_name_alias": "Room name or alias", - "search_button": "Search", - "loading": "Loading public rooms from {{homeserver}}...", - "searching": "Searching for '{{query}}' on {{homeserver}}...", - "result_title": "Public rooms on {{homeserver}}", - "search_result_title": "Search result for '{{query}}' on {{homeserver}}" - }, - "ProfileViewer": { - "kick_button": "Kick", - "kick_reason_label": "Kick Reason", - "ban_button": "Ban", - "ban_reason_label": "Ban reason", - "loading_sessions": "Loading sessions...", - "no_sessions_found": "No sessions found.", - "view_sessions_one": "View session", - "view_sessions_other": "View {{count}} sessions", - "send_direct_message_button": "Message", - "creating_dm_room": "Creating room...", - "ignore": "Ignore", - "ignoring": "Ignoring...", - "unignore": "Unignore", - "unignoring": "Unignoring...", - "change_power_level": "Change power level", - "shared_power_message": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself. Are you sure?", - "demoting_self_message": "You will not be able to undo this change as you are demoting yourself. Are you sure?" - }, - "PeopleDrawer": { - "title": "People", - "members_one": "{{count}} member", - "members_other": "{{count}} members", - "joined": "Joined", - "invited": "Invited", - "banned": "Banned", - "search_no_results": "No results found", - "view_more": "View more", - "placeholder": "Search", - "invite_tooltip": "Invite" - }, - "ProfileEditor": { - "remove_avatar": "Remove avatar", - "remove_avatar_confirmation": "Are you sure that you want to remove your avatar?", - "display_name_message": "Display name of {{user_name}}" - }, - "DrawerBreadcrumb": { - "home": "Home" - }, - "DrawerHeader": { - "add_rooms_or_spaces": "Add rooms or spaces", - "create_new_space": "Create new space", - "create_new_room": "Create new room", - "join_public_room": "Join public room", - "join_with_address": "Join with address", - "add_existing": "Add existing", - "manage_rooms": "Manage rooms", - "home": "Home", - "direct_messages": "Direct messages", - "start_dm_tooltip": "Start DM", - "add_rooms_spaces_tooltip": "Add rooms/spaces" - }, - "SideBar": { - "settings_tooltip": "Settings", - "unverified_sessions_one": "{{count}} unverified session", - "unverified_sessions_other": "{{count}} unverified sessions", - "home_tooltip": "Home", - "direct_messages_tooltip": "People", - "pin_spaces_tooltip": "Pin spaces", - "search_tooltip": "Search", - "invites_tooltip": "Invites" - }, - "JoinAlias": { - "invalid_address": "Invalid address.", - "looking_for_address": "Looking for address...", - "joining_alias": "Joining {{alias_name}}...", - "couldnt_find_room_or_space_alias": "Unable to find room/space with {{alias_name}}. Either the room/space is private or doesn't exist.", - "couldnt_find_room_or_space": "Unable to join {{alias_name}}. Either the room/space is private or doesn't exist.", - "address_label": "Address", - "title": "Join with address" - }, - "InviteUser": { - "user_not_found": "{{user_name}} not found!", - "no_matches_found": "No matches found for {{user_name}}", - "invite_result": { - "invited": "Invited", - "already_joined": "Already joined", - "already_invited": "Already invited", - "banned": "Banned" - }, - "search_label": "Name or User ID", - "search_result_title": "Search result for user {{user_name}}", - "searching_for_user": "Searching for user {{user_name}}...", - "invite_to_room": "Invite to {{room}}", - "invite_to_dm": "Direct Message" - }, - "InviteList": { - "accept_invite": "Accept", - "reject_invite": "Reject", - "direct_messages_title": "Direct Messages", - "rooms_title": "Rooms", - "spaces_title": "Spaces", - "title": "Invites" - }, - "EmojiVerification": { - "waiting_for_response": "Waiting for response from other device...", - "confirmation_prompt": "Confirm the emoji below are displayed on both devices, in the same order:", - "emojis_match_button": "They match", - "emojis_dont_match_button": "They don't match", - "accept_request_from_other_device_message": "Please accept the request from other device.", - "begin_verification_process_message": "Click accept to start the verification process.", - "begin_verification_button_text": "Accept", - "title": "Emoji Verification" - }, - "DragDrop": { - "drop_file_to_upload_prompt": "Drop file to upload" - }, - "CreateRoom": { - "private_room_short": "Private", - "restricted_room_short": "Restricted", - "public_room_short": "Public", - "private_room_long": "Private (invite only)", - "restricted_room_long": "Restricted (space member can join)", - "public_room_long": "Public (anyone can join)", - "visibility_title": "Visibility", - "visibility_message": "Visibility (who can join)", - "select_who_can_join_space": "Select who can join this space", - "select_who_can_join_room": "Select who can join this room", - "space_address": "Space address", - "room_address": "Room address", - "room_address_already_in_use": "{{room_address}} is already in use", - "e2e_title": "Enable end-to-end encryption", - "e2e_message": "You can’t disable this later. Bridges & most bots won’t work yet.", - "role_title": "Select your role", - "role_message": "Selecting 'Admin' sets your power level to 100 whereas 'Founder' sets it to 101.", - "creating_room": "Creating room...", - "creating_space": "Creating space...", - "topic_label": "Topic (optional)", - "space_name": "Space name", - "room_name": "Room name", - "role_admin": "Admin", - "role_founder": "Founder", - "create_room": "Create room", - "create_space": "Create space", - "home": "Home" - } - }, - "Molecules":{ - "ConfirmDialog":{ - "cancel": "Cancel" - }, - "ReusableDialog": - { - "close_tooltip": "Close" - }, - "FollowingMembers":{ - "users_following_one": "{{user_one}} is following the conversation", - "users_following_two": "{{user_one}} and {{user_two}} are following the conversation", - "users_following_three": "{{user_one}}, {{user_two}}, and {{user_three}} are following the conversation", - "users_following_other": "{{user_one}}, {{user_two}}, {{user_three}} and {{other_count}} others are following the conversation" - }, - "ImageUpload": - { - "prompt": "Upload", + "translation": { + "common": { + "close": "Close", + "open": "Open", + "leave": "Leave", + "options": "Options", + "cinny": "Cinny", + "slogan": "Yet another matrix client", + "source_code": "Source code", + "sponsor": "Support", + "retry": "Retry", + "delete": "Delete", + "continue": "Continue", "cancel": "Cancel", - "remove": "Remove" - }, - "ExportE2ERoomKeys": - { - "getting_keys": "Getting keys...", - "encrypting_keys": "Encrypting Keys...", - "password_does_not_match": "Password does not match.", - "export_success": "Successfully exported all keys.", - "export_failed": "Failed to export keys. Please try again.", - "button_text": "Export" - }, - "ImportE2ERoomKeys": - { - "decrypting_file": "Decrypting file...", - "decrypting_messages": "Decrypting messages...", - "import_success": "Successfully imported all keys", - "import_failed": "Failed tp decrypt keys. Please try again", - "import_keys_button": "Import Keys", - "decrypt_button": "Decrypt" - }, - "Media":{ - "open_new_tab": "Open in new tab", - "download": "Download", - "play_audio": "Play audio", - "play_video": "Play video" - }, - "Message": - { - "message_deleted": "*** This message has been deleted ***", - "unable_to_load_reply": "*** Unable to load reply ***", - "unknown_user": "** Unknown user **", - "edited": "(edited)", - "edit_placeholder": "Edit message", - "user_reacted_one": "{{user_one}} reacted with ", - "user_reacted_two": "{{user_one}} and {{user_two}} reacted with ", - "user_reacted_three": "{{user_one}}, {{user_two}} and {{user_three}} reacted with ", - "user_reacted_other": "{{user_one}}, {{user_two}}, {{user_three}} and {{other_count}} others reacted with ", - "add_reaction_tooltip": "Add reaction", - "reply_tooltip": "Reply", - "edit_tooltip": "Edit", - "options_header": "Options", - "options_tooltip": "Options", - "read_receipts": "Read receipts", - "view_source": "View source", - "delete_message_prompt": "Delete message", - "delete_message_confirmation": "Are you sure that you want to delete this message?", - "delete_message_button": "Delete" - }, - "PopupWindow": - { - "close_tooltip": "Back" - }, - "PowerLevelSelector": { - "placeholder": "Power level" - }, - "RoomAliases": { - "invalid_characters": "Invalid character: only letter, numbers and _- are allowed.", - "validating_alias": "validating {{alias}}...", - "alias_available": "{{alias}} is available.", - "alias_unavailable": "{{alias}} is unavailable.", - "deleting_alias": "Deleting...", - "set_main_alias": "Set as Main", - "publish_alias": "Publish", - "unpublish_alias": "Unpublish", - "delete_alias": "Delete", - "main_alias": "Main", - "publish_to_room_directory": - { - "title": "Publish to room directory", - "publish_room_message": "Publish this room to the {{homeserver}} publish directory?", - "publish_space_message": "Publish this space to the {{homeserver}} publish directory?" - }, - "published_addresses": - { - "title": "Published addresses", - "none": "No published addresses", - "no_main_address": "No main address (select one from below)", - "message_room": "Published addresses can be used by anyone on any server to join your room. To publish an address, it needs to be set as a local address first.", - "message_space": "Published addresses can be used by anyone on any server to join your space. To publish an address, it needs to be set as a local address first." - }, - "local_addresses": - { - "title": "Local addresses", - "none": "No local addresses", - "message_room": "Set local addresses for this room so users can find this room through your homeserver.", - "message_space": "Set local addresses for this space so users can find this space through your homeserver.", - "add": "Add local address", - "add_button": "Add", - "placeholder_room": "my_room_address", - "placeholder_space": "my_space_address", - "hide": "Hide local addresses", - "view": "View local addresses" - - } - }, - "RoomEncryption":{ - "encryption_public_room_message": "It is not recommended to add encryption in public room. Anyone can find and join public rooms, so anyone should be able to read messages in them.", - "encryption_message": "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly", - "encryption_cannot_be_disabled": "Once enabled, encryption cannot be disabled.", - "enable_room_encryption": "Enable room encryption", - "enable_encryption_prompt": "Enable Encryption", - "enable_encryption_button": "Enable", - "continue_button": "Continue" - - }, - "RoomHistoryVisibility": { - "world_readable": "Anyone (including guests)", - "shared": "Members (all messages)", - "invited": "Members (messages after invite)", - "joined": "Members (messages after join)", - "changes_only_affect_future": "Changes to history visibility will only apply to future messages. The visibility of existing history will have no effect." - }, - "RoomMembers": { - "search_title": "Search member", - "found_members_one": "Found — one member", - "found_members_other": "Found — {{count}} members", - "no_results": "No results found for {{term}}", - "no_members": "No members to display", + "save": "Save", "view_more": "View more", - "joined": "Joined", + "view_less": "View less", + "copy": "Copy", + "upload": "Upload", + "download": "Download", + "or": "Or", + "reset": "Reset", + "setup": "Setup", + "search": "Search", + "loading": "Loading...", + "joining": "Joining...", + "join": "Join", + "remove": "Remove", + "send": "Send", + "homeserver": "Homeserver", + "invite": "Invite", + "uninvite": "Uninvite", "invited": "Invited", - "banned": "Banned", - "search_placeholder": "Search for name" + "inviting": "Inviting...", + "uninviting": "Uninviting...", + "change": "Change", + "edit": "Edit", + "message_prompt": "Message" }, - "RoomNotification": - { - "default": "Global", - "all_messages": "All messages", - "mentions_and_keywords": "Mentions & Keywords", - "mute": "Mute" + "errors": { + "browser_not_supported": "Not supported in this browser", + "generic": "Something went wrong!" }, - "RoomOptions":{ - "title": "Options for {{room_name}}", - "leave": { - "title": "Leave room", - "subtitle": "Are you sure you want to leave the {{room_name}} room?", - "button_text": "Leave" + "Organisms": { + "Welcome": { + "heading": "Welcome to Cinny!", + "subheading": "Yet another Matrix client" }, - "mark_as_read": "Mark as read", - "notifications_heading": "Notifications", - "invite": "Invite" - }, - "RoomPermissions": - { - "default_role": { - "name": "Default role", - "description": "Set default role for all members" + "ViewSource": { + "title": "View Source", + "original_source": "Original source", + "decrypted_source": "Decrypted source" }, - "send_messages": { - "name": "Send messages", - "description": "Set minimum power level to send messages in a room" + "SpaceManage": { + "subtitle": "manage rooms", + "load_more": "Load more", + "rooms_and_spaces": "Rooms and spaces", + "private_rooms_message": "Either the space contains private rooms or you need to join space to view it's rooms.", + "items_selected_zero": "No selected items", + "items_selected_one": "{{count}} selected item", + "items_selected_other": "{{count}} selected items", + "room_members_zero": "No room members", + "room_members_one": "{{count}} room member", + "room_members_other": "{{count}} room members", + "mark_suggested_zero": "Marking no rooms as suggested", + "mark_suggested_one": "Marking {{count}} room as suggested", + "mark_suggested_other": "Marking {{count}} rooms as suggested", + "mark_not_suggested_zero": "Marking no rooms as suggested", + "mark_not_suggested_one": "Marking {{count}} room as suggested", + "mark_not_suggested_other": "Marking {{count}} rooms as suggested", + "remove_zero": "Removing no items", + "remove_one": "Removing {{count}} item", + "remove_other": "Removing {{count}} items.", + "suggested": "Suggested", + "mark_as_suggested": "Mark as suggested", + "mark_as_not_suggested": "Mark as not suggested" }, - "reactions":{ - "name": "Send reactions", - "description": "Set minimum power level to send reactions in a room" + "SpaceSettings": { + "subtitle": "space settings", + "leave": { + "leave_space": "Leave Space", + "leave_dialog_title": "Leave Space", + "leave_dialog_message": "Are you sure you want to leave {{space}}?" + }, + "visibility": { + "header": "Space visibility (who can join)" + }, + "addresses": { + "header": "Space addresses" + }, + "categorize_subspaces": "Categorize subspaces", + "uncategorize_subspaces": "Uncategorize subspaces", + "pin_sidebar": "Pin to sidebar", + "unpin_sidebar": "Unpin from sidebar" }, - "delete": { - "name": "Delete messages sent by others", - "description": "Set minumum power level to delete messages in a room" + "Settings": { + "title": "Settings", + "theme": { + "follow_system": { + "title": "Follow system theme", + "description": "Use light or dark mode based on the system settings." + }, + "title": "Theme", + "theme_light": "Light", + "theme_silver": "Silver", + "theme_dark": "Dark", + "theme_butter": "Butter" + }, + "markdown": { + "title": "Markdown formatting", + "description": "Format messages with markdown before sending" + }, + "hide_membership_events": { + "title": "Hide membership events", + "description": "Hide membership change messages from room timeline. (Join, Leave, Invite, Kick and Ban)" + }, + "hide_nickname_avatar_events": { + "title": "Hide nick/avatar events", + "description": "Hide nickname and avatar change messages from the room timeline." + }, + "notifications_and_sound": { + "title": "Notifications & Sound", + "desktop": { + "title": "Desktop notifications", + "description": "Show desktop notifications when new messages arrive." + }, + "sound": { + "title": "Notification sound", + "description": "Play a sound when new messages arrive." + } + }, + "security": { + "cross_signing": { + "title": "Cross signing and backup" + }, + "export_import_encryption_keys": { + "title": "Export / Import encryption keys" + }, + "export_encryption_keys": { + "title": "Export E2E room keys", + "description": "Export end-to-end encryption room keys to decrypt old messages in other session. In order to encrypt keys you need to set a password, which will be used while importing." + }, + "import_encryption_keys": { + "title": "Import E2E room keys", + "description": "To decrypt older messages, Export E2EE room keys from Element (Settings > Security & Privacy > Encryption > Cryptography) and import them here. Imported keys are encrypted so you\\'ll have to enter the password you set in order to decrypt it." + } + }, + "logout": { + "title": "Logout", + "dialog": { + "title": "Logout", + "description": "Are you sure that you want to logout your session?", + "confirm": "Logout" + } + }, + "about": { + "application": "Application", + "credits": "Credits" + } }, - "notifications":{ - "name": "Ping room", - "description": "Set minimum power level to ping room" + "ShortcutSpaces": { + "header": "Pin Spaces", + "pinned_spaces": "Pinned spaces", + "no_pinned_spaces": "No pinned spaces", + "unpinned_spaces": "Unpinned spaces", + "no_unpinned_spaces": "No unpinned spaces", + "spaces_selected_zero": "No selected spaces", + "spaces_selected_one": "{{count}} selected space", + "spaces_selected_other": "{{count}} selected spaces", + "pin_button": "Pin" }, - "manage_rooms":{ - "name": "Manage rooms in space", - "description": "Set minimum power level to manage rooms in space" + "SecretStorageAccess": { + "incorrect_security_key": "Incorrect security key", + "incorrect_security_phrase": "Incorrect security phrase", + "security_phrase": "Security Phrase", + "security_key": "Security Key", + "use_security_key": "Use Security Key", + "use_security_phrase": "Use Security Phrase" }, - "invite": { - "name": "Invite", - "description": "Set minimum power level to invite members" + "KeyBackup": { + "create_backup_title": "Create key backup", + "create_backup_tooltip": "Create backup", + "creating_backup": "Creating Backup...", + "backup_created": "Successfully created backup", + "backup_failed": "Failed to create backup", + "restoring": "Restoring backup keys...", + "restoring_progress": "Restoring backup keys... ({{progress}}/{{total}}", + "restore_backup_title": "Restore Key Backup", + "restore_backup_tooltip": "Restore Key Backup", + "restore_complete": "Successfully restored backup keys ({{progress}}/{{total}})", + "restore_failed_bad_key": "Failed to restore backup. Key is invalid!", + "restore_failed_unknown": "Failed to restore backup.", + "delete_key_backup_title": "Delete key backup", + "delete_key_backup_tooltip": "Delete backup", + "delete_key_backup_subtitle": "Deleting key backup is permanent.", + "delete_key_backup_message": "All encrypted message keys stored on the server will be permanently deleted.", + "encrypted_messages_backup_description": "Online backup your encrypted messages keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.", + "encrypted_messages_backup_title": "Encrypted messages backup", + "encrypted_messages_backup_cross_signing_disabled": "Setup cross signing to backup your encrypted messages." }, - "kick": { - "name": "Kick", - "description": "Set minimum power level to kick members" + "DeviceManage": { + "edit_session_name_title": "Edit session name", + "edit_session_name_subtitle": "Session name", + "edit_session_name_tooltip": "Edit session name", + "current_device_label": "Current", + "verify_session_button": "Verify", + "unverified_sessions_title": "Unverified sessions", + "unverified_sessions_none": "No unverified sessions", + "unencrypted_sessions_title": "Sessions without encryption support", + "verified_sessions_title": "Verified sessions", + "verified_sessions_none": "No verified sessions", + "setup_cross_signing_message": "Setup cross signing in case you lose all your sessions", + "loading_devices": "Loading devices...", + "logout_device_title": "Logout {{device}}", + "logout_device_message": "You are about to log out the session for {{device}}", + "logout_device_confirm": "Logout", + "logout_device_tooltip": "Remove session", + "session_verification_title": "Session Verification", + "session_name_privacy_message": "Session names are visible to everyone, so do not put any private info here." }, - "ban": { - "name": "Ban", - "description": "Set minimum power level to ban members" + "CrossSigning": { + "title": "Cross Signing", + "setup_failed": "Failed to setup cross signing. Please try again", + "setup": "Setup cross signing", + "save_security_key_message": "Please save this security key somewhere safe", + "security_key_dialog_title": "Security Key", + "security_key_generation_message": "We will generate a Security Key, which you can use to manage message backups and session verification.", + "security_key_generation_button": "Generate Key", + "security_phrase_message": "Alternatively you can set a 'Security Phrase' so you don't have to remember the long Security Key, and optionally save the key as a backup", + "security_phrase_label": "Security Phrase", + "security_phrase_confirm_label": "Confirm Security Phrase", + "security_phrase_set_button": "Set Phrase & Generate Key", + "setup_dialog_title": "Setup cross signing", + "setup_message": "Setup to verify and keep track of all your sessions. Also required to backup encrypted message.", + "reset_keys_subtitle": "Resetting cross-signing keys is permanent.", + "reset_keys_message": "Anyone you have verified with will see security alerts and your message backup will lost. You almost certainly do not want to do this, unless you have lost Security Key or Phrase and every session you can cross-sign from." }, - "change_avatar": { - "name": "Change avatar", - "description": "Set minimum power level to change room/space avatar" + "AuthRequest": { + "wrong_password": "Wrong password. Please enter the correct password", + "request_failed": "Request failed!", + "password_label": "Account password" }, - "change_name": { - "name": "Change name", - "description": "Set minimum power evel to change room/space name" + "Search": { + "description": "Type # for rooms, @ for DMs and * for spaces. Hotkey: Ctrl + k" }, - "change_topic": { - "name": "Change topic", - "description": "Set minimum power level to change room/space topic" + "RoomViewInput": { + "upload_progress": "Uploading: {{progress}}/{{total}} ({{percent}}%)", + "tombstone_replaced": "This room has been replaced, and is no longer active.", + "tombstone_permission_denied": "You do not have permission to post to this room", + "send_message_placeholder": "Send a message...", + "emoji_tooltip": "Emoji", + "file_size": "Size: {{size}}", + "cancel_reply_tooltip": "Cancel reply" }, - "change_settings": { - "name": "Change settings", - "description": "Set minimum power level to change settings" + "RoomViewHeader": { + "search_tooltip": "Search", + "people_tooltip": "People", + "members_tooltip": "Members" }, - "change_published_address": { - "name": "Change published address", - "description": "Set minimum power level to publish and set main address" + "RoomViewFloating": { + "jump_unread": "Jump to unread messages", + "mark_read": "Mark as read", + "jump_latest": "Jump to latest", + "user_typing_one": "{{user_one}} is typing...", + "user_typing_two": "{{user_one}} and {{user_two}} are typing...", + "user_typing_three": "{{user_one}}, {{user_two}} and {{user_three}} are typing...", + "user_typing_four": "{{user_one}}, {{user_two}}, {{user_three}} and {{user_four}} are typing...", + "user_typing_other": "Several people are typing..." }, - "change_permissions": { - "name": "Change permissions", - "description": "Set minimum power level to change permissions" + "RoomViewContent": { + "welcome_to_room": "Welcome to {{room_name}}!", + "beginning_room": "This is the beginning of the {{room_name}} room.", + "beginning_dm": "This is the beginning of your direct message history with @{{user_name}}.", + "created_on": "Created on {{date, datetime}}", + "new_messages": "New messages" }, - "enable_room_encryption": { - "name": "Enable room encryption", - "description": "Set minimum power level to enable room encryption" + "RoomSettings": { + "leave_room": "Leave room", + "leave_room_confirm_message": "Are you sure you want to leave {{room_name}}?", + "leave_room_confirm_button": "Leave", + "notification_header": "Notifications (Changing this will only affect you)", + "visibility_header": "Room visibility (Who can join)", + "address_header": "Room addresses", + "encryption_header": "Encryption", + "message_history_header": "Message history visibility", + "room_settings_subtitle": "room settings" }, - "change_history_visibility": { - "name": "Change history visibility", - "description": "Set minimum power level to change room message history visibility" + "RoomCommon": { + "user_joined": "{{user_name}} joined the room", + "user_left": "{{user_name}} left the room", + "user_invited": "{{inviter_name}} invited {{user_name}}", + "invite_cancelled": "{{inviter_name}} cancelled {{user_name}}'s invite", + "invite_rejected": "{{user_name}} rejected the invitation", + "user_kicked": "{{actor}} kicked {{user_name}}: {{reason}}", + "user_banned": "{{actor}} banned {{user_name}}: {{reason}}", + "user_unbanned": "{{actor}} unbanned {{user_name}}", + "avatar_set": "{{user_name}} set an avatar", + "avatar_changed": "{{user_name}} changed their avatar", + "avatar_removed": "{{user_name}} removed their avatar", + "name_set": "{{user_name}} set their display name to {{new_name}}", + "name_changed": "{{user_name}} changed their display name to {{new_name}}", + "name_removed": "{{user_name}} removed their display name {{new_name}}" }, - "upgrade_room": { - "name": "Upgrade room", - "description": "Set minimum power level to upgrade room" + "PublicRooms": { + "could_not_join_alias": "Unable to join {{alias}}. Either the room is private or doesn't exist", + "try_joining_alias": "Try joining {{alias}}", + "joining_alias": "Joining {{alias}}...", + "no_public_rooms": "No public rooms on {{homeserver}}", + "no_result_found": "No result found for '{{input}}' on {{homeserver}}", + "title": "Public Rooms", + "search_room_name_alias": "Room name or alias", + "search_button": "Search", + "loading": "Loading public rooms from {{homeserver}}...", + "searching": "Searching for '{{query}}' on {{homeserver}}...", + "result_title": "Public rooms on {{homeserver}}", + "search_result_title": "Search result for '{{query}}' on {{homeserver}}" }, - "pin_messages": { - "name": "Pin messages", - "description": "Set minimum power level to pin messages in a room" + "ProfileViewer": { + "kick_button": "Kick", + "kick_reason_label": "Kick Reason", + "ban_button": "Ban", + "ban_reason_label": "Ban reason", + "loading_sessions": "Loading sessions...", + "no_sessions_found": "No sessions found.", + "view_sessions_one": "View session", + "view_sessions_other": "View {{count}} sessions", + "send_direct_message_button": "Message", + "creating_dm_room": "Creating room...", + "ignore": "Ignore", + "ignoring": "Ignoring...", + "unignore": "Unignore", + "unignoring": "Unignoring...", + "change_power_level": "Change power level", + "shared_power_message": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself. Are you sure?", + "demoting_self_message": "You will not be able to undo this change as you are demoting yourself. Are you sure?" }, - "change_acls": { - "name": "Change server ACLs", - "description": "Set minimum power level to change server ACLs" + "PeopleDrawer": { + "title": "People", + "members_one": "{{count}} member", + "members_other": "{{count}} members", + "joined": "Joined", + "invited": "Invited", + "banned": "Banned", + "search_no_results": "No results found", + "view_more": "View more", + "placeholder": "Search", + "invite_tooltip": "Invite" }, - "modify_widgets": { - "name": "Modify widgets", - "description": "Set minimum power level to modify room widgets" + "ProfileEditor": { + "remove_avatar": "Remove avatar", + "remove_avatar_confirmation": "Are you sure that you want to remove your avatar?", + "display_name_message": "Display name of {{user_name}}" }, - "groups": - { - "general": "General permissions", - "manage_members": "Manage members permissions", - "room": "Room profile permissions", - "space": "Space profile permissions", - "other": "Other permissions", - "settings": "Settings permissions" + "DrawerBreadcrumb": { + "home": "Home" + }, + "DrawerHeader": { + "add_rooms_or_spaces": "Add rooms or spaces", + "create_new_space": "Create new space", + "create_new_room": "Create new room", + "join_public_room": "Join public room", + "join_with_address": "Join with address", + "add_existing": "Add existing", + "manage_rooms": "Manage rooms", + "home": "Home", + "direct_messages": "Direct messages", + "start_dm_tooltip": "Start DM", + "add_rooms_spaces_tooltip": "Add rooms/spaces" + }, + "SideBar": { + "settings_tooltip": "Settings", + "unverified_sessions_one": "{{count}} unverified session", + "unverified_sessions_other": "{{count}} unverified sessions", + "home_tooltip": "Home", + "direct_messages_tooltip": "People", + "pin_spaces_tooltip": "Pin spaces", + "search_tooltip": "Search", + "invites_tooltip": "Invites" + }, + "JoinAlias": { + "invalid_address": "Invalid address.", + "looking_for_address": "Looking for address...", + "joining_alias": "Joining {{alias_name}}...", + "couldnt_find_room_or_space_alias": "Unable to find room/space with {{alias_name}}. Either the room/space is private or doesn't exist.", + "couldnt_find_room_or_space": "Unable to join {{alias_name}}. Either the room/space is private or doesn't exist.", + "address_label": "Address", + "title": "Join with address" + }, + "InviteUser": { + "user_not_found": "{{user_name}} not found!", + "no_matches_found": "No matches found for {{user_name}}", + "invite_result": { + "invited": "Invited", + "already_joined": "Already joined", + "already_invited": "Already invited", + "banned": "Banned" + }, + "search_label": "Name or User ID", + "search_result_title": "Search result for user {{user_name}}", + "searching_for_user": "Searching for user {{user_name}}...", + "invite_to_room": "Invite to {{room}}", + "invite_to_dm": "Direct Message" + }, + "InviteList": { + "accept_invite": "Accept", + "reject_invite": "Reject", + "direct_messages_title": "Direct Messages", + "rooms_title": "Rooms", + "spaces_title": "Spaces", + "title": "Invites" + }, + "EmojiVerification": { + "waiting_for_response": "Waiting for response from other device...", + "confirmation_prompt": "Confirm the emoji below are displayed on both devices, in the same order:", + "emojis_match_button": "They match", + "emojis_dont_match_button": "They don't match", + "accept_request_from_other_device_message": "Please accept the request from other device.", + "begin_verification_process_message": "Click accept to start the verification process.", + "begin_verification_button_text": "Accept", + "title": "Emoji Verification" + }, + "DragDrop": { + "drop_file_to_upload_prompt": "Drop file to upload" + }, + "CreateRoom": { + "private_room_short": "Private", + "restricted_room_short": "Restricted", + "public_room_short": "Public", + "private_room_long": "Private (invite only)", + "restricted_room_long": "Restricted (space member can join)", + "public_room_long": "Public (anyone can join)", + "visibility_title": "Visibility", + "visibility_message": "Visibility (who can join)", + "select_who_can_join_space": "Select who can join this space", + "select_who_can_join_room": "Select who can join this room", + "space_address": "Space address", + "room_address": "Room address", + "room_address_already_in_use": "{{room_address}} is already in use", + "e2e_title": "Enable end-to-end encryption", + "e2e_message": "You can’t disable this later. Bridges & most bots won’t work yet.", + "role_title": "Select your role", + "role_message": "Selecting 'Admin' sets your power level to 100 whereas 'Founder' sets it to 101.", + "creating_room": "Creating room...", + "creating_space": "Creating space...", + "topic_label": "Topic (optional)", + "space_name": "Space name", + "room_name": "Room name", + "role_admin": "Admin", + "role_founder": "Founder", + "create_room": "Create room", + "create_space": "Create space", + "home": "Home" } }, - "RoomProfile": { - "saving_room_name": "Saving room name...", - "saving_room_topic": "Saving room topic...", - "save_success": "Saved successfully", - "save_failed": "Unable to save", - "remove_avatar_title": "Remove avatar", - "remove_avatar_subtitle": "Are you sure that you want to remove room avatar?", - "remove_avatar_button": "Remove", - "permission_change_room_name": "You have permission to change room name only", - "permission_change_room_topic": "You have permission to change room topic only", - "permission_change_space_name": "You have permission to change space name only", - "permission_change_space_topic": "You have permission to change space topic only", - "name_label": "Name", - "topic_label": "Topic" - }, - "RoomSearch": { - "title": "Room search", - "placeholder": "Search for keywords", - "search_button": "Search", - "searching": "Searching room messages...", - "subtitle": "Search room messages", - "failed": "Failed to search messages", - "no_results": "No results found", - "encrypted_room": "Search does not work in encrypted room", - "load_more": "Load more", - "results_one": "{{count}} result for {{term}}", - "results_other": "{{count}} results for {{term}}" - }, - "RoomTile": { - "invited_by_user_zero": "Invited by {{inviter}} to {{id}}", - "invited_by_user_one": "Invited by {{inviter}} to {{id}} • {{member_count}} member", - "invited_by_user_other": "Invited by {{inviter}} to {{id}} • {{member_count}} members", - "invited_zero": "{{id}}", - "invited_one": "{{id}} • {{member_count}} member", - "invited_other": "{{id}} • {{member_count}} members" - }, - "RoomVisibility": { - "private": "Private (invite only)", - "restricted": "Restricted (space members can join)", - "restricted_unsupported": "Restricted (Unsupported: room required upgrade)", - "public": "Public (anyone can join)" - }, - "SpaceAddExisting": { - "adding_items_one": "Adding one item...", - "adding_items_other": "Adding {{count}} items...", - "items_selected_one": "{{count}} item selected", - "items_selected_other": "{{count}} items selected", - "search_rooms_placeholder": "Search rooms", - "no_results": "No results found", - "add_button": "Add", - "subtitle": "add existing rooms" - }, - "SpaceOptions": { - "leave_space": "Leave Space", - "leave_space_confirmation": "Are you sure that you want to leave the {{space}} space?", - "leave_space_confirm": "Leave", - "invite": "Invite", - "manage_rooms":"Manage rooms", - "settings": "Settings", - "leave": "Leave" - }, - "SSOButtons": { - "login_with": "Login with {{idp_name}}" + "Molecules": { + "ConfirmDialog": { + "cancel": "Cancel" + }, + "ReusableDialog": { + "close_tooltip": "Close" + }, + "FollowingMembers": { + "users_following_one": "{{user_one}} is following the conversation", + "users_following_two": "{{user_one}} and {{user_two}} are following the conversation", + "users_following_three": "{{user_one}}, {{user_two}}, and {{user_three}} are following the conversation", + "users_following_other": "{{user_one}}, {{user_two}}, {{user_three}} and {{other_count}} others are following the conversation" + }, + "ImageUpload": { + "prompt": "Upload", + "cancel": "Cancel", + "remove": "Remove" + }, + "ExportE2ERoomKeys": { + "getting_keys": "Getting keys...", + "encrypting_keys": "Encrypting Keys...", + "password_does_not_match": "Password does not match.", + "export_success": "Successfully exported all keys.", + "export_failed": "Failed to export keys. Please try again.", + "button_text": "Export" + }, + "ImportE2ERoomKeys": { + "decrypting_file": "Decrypting file...", + "decrypting_messages": "Decrypting messages...", + "import_success": "Successfully imported all keys", + "import_failed": "Failed tp decrypt keys. Please try again", + "import_keys_button": "Import Keys", + "decrypt_button": "Decrypt" + }, + "Media": { + "open_new_tab": "Open in new tab", + "download": "Download", + "play_audio": "Play audio", + "play_video": "Play video" + }, + "Message": { + "message_deleted": "*** This message has been deleted ***", + "unable_to_load_reply": "*** Unable to load reply ***", + "unknown_user": "** Unknown user **", + "edited": "(edited)", + "edit_placeholder": "Edit message", + "user_reacted_one": "{{user_one}} reacted with ", + "user_reacted_two": "{{user_one}} and {{user_two}} reacted with ", + "user_reacted_three": "{{user_one}}, {{user_two}} and {{user_three}} reacted with ", + "user_reacted_other": "{{user_one}}, {{user_two}}, {{user_three}} and {{other_count}} others reacted with ", + "add_reaction_tooltip": "Add reaction", + "reply_tooltip": "Reply", + "edit_tooltip": "Edit", + "options_header": "Options", + "options_tooltip": "Options", + "read_receipts": "Read receipts", + "view_source": "View source", + "delete_message_prompt": "Delete message", + "delete_message_confirmation": "Are you sure that you want to delete this message?", + "delete_message_button": "Delete" + }, + "PopupWindow": { + "close_tooltip": "Back" + }, + "PowerLevelSelector": { + "placeholder": "Power level" + }, + "RoomAliases": { + "invalid_characters": "Invalid character: only letter, numbers and _- are allowed.", + "validating_alias": "validating {{alias}}...", + "alias_available": "{{alias}} is available.", + "alias_unavailable": "{{alias}} is unavailable.", + "deleting_alias": "Deleting...", + "set_main_alias": "Set as Main", + "publish_alias": "Publish", + "unpublish_alias": "Unpublish", + "delete_alias": "Delete", + "main_alias": "Main", + "publish_to_room_directory": { + "title": "Publish to room directory", + "publish_room_message": "Publish this room to the {{homeserver}} publish directory?", + "publish_space_message": "Publish this space to the {{homeserver}} publish directory?" + }, + "published_addresses": { + "title": "Published addresses", + "none": "No published addresses", + "no_main_address": "No main address (select one from below)", + "message_room": "Published addresses can be used by anyone on any server to join your room. To publish an address, it needs to be set as a local address first.", + "message_space": "Published addresses can be used by anyone on any server to join your space. To publish an address, it needs to be set as a local address first." + }, + "local_addresses": { + "title": "Local addresses", + "none": "No local addresses", + "message_room": "Set local addresses for this room so users can find this room through your homeserver.", + "message_space": "Set local addresses for this space so users can find this space through your homeserver.", + "add": "Add local address", + "add_button": "Add", + "placeholder_room": "my_room_address", + "placeholder_space": "my_space_address", + "hide": "Hide local addresses", + "view": "View local addresses" + } + }, + "RoomEncryption": { + "encryption_public_room_message": "It is not recommended to add encryption in public room. Anyone can find and join public rooms, so anyone should be able to read messages in them.", + "encryption_message": "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly", + "encryption_cannot_be_disabled": "Once enabled, encryption cannot be disabled.", + "enable_room_encryption": "Enable room encryption", + "enable_encryption_prompt": "Enable Encryption", + "enable_encryption_button": "Enable", + "continue_button": "Continue" + }, + "RoomHistoryVisibility": { + "world_readable": "Anyone (including guests)", + "shared": "Members (all messages)", + "invited": "Members (messages after invite)", + "joined": "Members (messages after join)", + "changes_only_affect_future": "Changes to history visibility will only apply to future messages. The visibility of existing history will have no effect." + }, + "RoomMembers": { + "search_title": "Search member", + "found_members_one": "Found — one member", + "found_members_other": "Found — {{count}} members", + "no_results": "No results found for {{term}}", + "no_members": "No members to display", + "view_more": "View more", + "joined": "Joined", + "invited": "Invited", + "banned": "Banned", + "search_placeholder": "Search for name" + }, + "RoomNotification": { + "default": "Global", + "all_messages": "All messages", + "mentions_and_keywords": "Mentions & Keywords", + "mute": "Mute" + }, + "RoomOptions": { + "title": "Options for {{room_name}}", + "leave": { + "title": "Leave room", + "subtitle": "Are you sure you want to leave the {{room_name}} room?", + "button_text": "Leave" + }, + "mark_as_read": "Mark as read", + "notifications_heading": "Notifications", + "invite": "Invite" + }, + "RoomPermissions": { + "default_role": { + "name": "Default role", + "description": "Set default role for all members" + }, + "send_messages": { + "name": "Send messages", + "description": "Set minimum power level to send messages in a room" + }, + "reactions": { + "name": "Send reactions", + "description": "Set minimum power level to send reactions in a room" + }, + "delete": { + "name": "Delete messages sent by others", + "description": "Set minumum power level to delete messages in a room" + }, + "notifications": { + "name": "Ping room", + "description": "Set minimum power level to ping room" + }, + "manage_rooms": { + "name": "Manage rooms in space", + "description": "Set minimum power level to manage rooms in space" + }, + "invite": { + "name": "Invite", + "description": "Set minimum power level to invite members" + }, + "kick": { + "name": "Kick", + "description": "Set minimum power level to kick members" + }, + "ban": { + "name": "Ban", + "description": "Set minimum power level to ban members" + }, + "change_avatar": { + "name": "Change avatar", + "description": "Set minimum power level to change room/space avatar" + }, + "change_name": { + "name": "Change name", + "description": "Set minimum power evel to change room/space name" + }, + "change_topic": { + "name": "Change topic", + "description": "Set minimum power level to change room/space topic" + }, + "change_settings": { + "name": "Change settings", + "description": "Set minimum power level to change settings" + }, + "change_published_address": { + "name": "Change published address", + "description": "Set minimum power level to publish and set main address" + }, + "change_permissions": { + "name": "Change permissions", + "description": "Set minimum power level to change permissions" + }, + "enable_room_encryption": { + "name": "Enable room encryption", + "description": "Set minimum power level to enable room encryption" + }, + "change_history_visibility": { + "name": "Change history visibility", + "description": "Set minimum power level to change room message history visibility" + }, + "upgrade_room": { + "name": "Upgrade room", + "description": "Set minimum power level to upgrade room" + }, + "pin_messages": { + "name": "Pin messages", + "description": "Set minimum power level to pin messages in a room" + }, + "change_acls": { + "name": "Change server ACLs", + "description": "Set minimum power level to change server ACLs" + }, + "modify_widgets": { + "name": "Modify widgets", + "description": "Set minimum power level to modify room widgets" + }, + "groups": { + "general": "General permissions", + "manage_members": "Manage members permissions", + "room": "Room profile permissions", + "space": "Space profile permissions", + "other": "Other permissions", + "settings": "Settings permissions" + } + }, + "RoomProfile": { + "saving_room_name": "Saving room name...", + "saving_room_topic": "Saving room topic...", + "save_success": "Saved successfully", + "save_failed": "Unable to save", + "remove_avatar_title": "Remove avatar", + "remove_avatar_subtitle": "Are you sure that you want to remove room avatar?", + "remove_avatar_button": "Remove", + "permission_change_room_name": "You have permission to change room name only", + "permission_change_room_topic": "You have permission to change room topic only", + "permission_change_space_name": "You have permission to change space name only", + "permission_change_space_topic": "You have permission to change space topic only", + "name_label": "Name", + "topic_label": "Topic" + }, + "RoomSearch": { + "title": "Room search", + "placeholder": "Search for keywords", + "search_button": "Search", + "searching": "Searching room messages...", + "subtitle": "Search room messages", + "failed": "Failed to search messages", + "no_results": "No results found", + "encrypted_room": "Search does not work in encrypted room", + "load_more": "Load more", + "results_one": "{{count}} result for {{term}}", + "results_other": "{{count}} results for {{term}}" + }, + "RoomTile": { + "invited_by_user_zero": "Invited by {{inviter}} to {{id}}", + "invited_by_user_one": "Invited by {{inviter}} to {{id}} • {{member_count}} member", + "invited_by_user_other": "Invited by {{inviter}} to {{id}} • {{member_count}} members", + "invited_zero": "{{id}}", + "invited_one": "{{id}} • {{member_count}} member", + "invited_other": "{{id}} • {{member_count}} members" + }, + "RoomVisibility": { + "private": "Private (invite only)", + "restricted": "Restricted (space members can join)", + "restricted_unsupported": "Restricted (Unsupported: room required upgrade)", + "public": "Public (anyone can join)" + }, + "SpaceAddExisting": { + "adding_items_one": "Adding one item...", + "adding_items_other": "Adding {{count}} items...", + "items_selected_one": "{{count}} item selected", + "items_selected_other": "{{count}} items selected", + "search_rooms_placeholder": "Search rooms", + "no_results": "No results found", + "add_button": "Add", + "subtitle": "add existing rooms" + }, + "SpaceOptions": { + "leave_space": "Leave Space", + "leave_space_confirmation": "Are you sure that you want to leave the {{space}} space?", + "leave_space_confirm": "Leave", + "invite": "Invite", + "manage_rooms": "Manage rooms", + "settings": "Settings", + "leave": "Leave" + }, + "SSOButtons": { + "login_with": "Login with {{idp_name}}" + } } } } \ No newline at end of file diff --git a/public/locales/index.js b/public/locales/index.js new file mode 100644 index 00000000..494ebb40 --- /dev/null +++ b/public/locales/index.js @@ -0,0 +1 @@ +//root pointer \ No newline at end of file diff --git a/src/app/i18n.jsx b/src/app/i18n.jsx index c62de110..96bcb47e 100644 --- a/src/app/i18n.jsx +++ b/src/app/i18n.jsx @@ -1,11 +1,9 @@ import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; -import Backend from 'i18next-http-backend' +import resources from '../../public/locales'; i18n - .use(Backend) - // detect user language // learn more: https://github.com/i18next/i18next-browser-languageDetector .use(LanguageDetector) // pass the i18n instance to react-i18next. @@ -13,10 +11,12 @@ i18n // init i18next // for all options read: https://www.i18next.com/overview/configuration-options .init({ + resources, debug: true, + fallbackLng: 'en', interpolation: { escapeValue: false, // not needed for react as it escapes by default - } + }, }); export default i18n; diff --git a/webpack.common.js b/webpack.common.js index db5eedd9..4648c672 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -47,6 +47,10 @@ module.exports = { { test: /\.svg$/, type: 'asset/inline', + }, + { + test: /locales/, + loader: '@alienfast/i18next-loader' } ], }, diff --git a/webpack.dev.js b/webpack.dev.js index 2cfa2df7..1cf76f4f 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -21,7 +21,8 @@ module.exports = merge(common, { 'css-loader', 'sass-loader', ], - }, + + } ], }, });