From 583f6b78cd004bcb396d16cb0e47dbd1219679d7 Mon Sep 17 00:00:00 2001 From: N-Pex Date: Sat, 25 Sep 2021 15:08:26 +0200 Subject: [PATCH] Allo setting UI language via query param --- src/main.js | 4 ++-- src/router/index.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main.js b/src/main.js index 6f8a4a5..2019b78 100644 --- a/src/main.js +++ b/src/main.js @@ -2,6 +2,7 @@ import Vue from 'vue' import App from './App.vue' import vuetify from './plugins/vuetify'; import store from './store' +import i18n from './plugins/lang'; import router from './router' import matrix from './services/matrix.service' import navigation from './services/navigation.service' @@ -14,7 +15,6 @@ import VueResize from 'vue-resize'; import 'vue-resize/dist/vue-resize.css'; import VueClipboard from 'vue-clipboard2' import VueSanitize from "vue-sanitize"; -import i18n from './plugins/lang'; var defaultOptions = VueSanitize.defaults; defaultOptions.disallowedTagsMode = "recursiveEscape"; @@ -155,8 +155,8 @@ Vue.use(navigation, router); new Vue({ vuetify, store, - router, i18n, + router, matrix, config, cleaninsights, diff --git a/src/router/index.js b/src/router/index.js index 29af606..b74dec0 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -87,6 +87,18 @@ router.beforeEach((to, from, next) => { var authRequired = !publicPages.includes(to.path); const loggedIn = router.app.$store.state.auth.user; + if (to.query && to.query.lang) { + // Set language via query param + const lang = to.query.lang; + // Check if valid translation + if (router.app.$i18n.messages[lang]) { + router.app.$store.commit('setLanguage', lang); + if (router.app.$i18n) { + router.app.$i18n.locale = to.query.lang; + } + } + } + if (to.name == 'Chat' || to.name == 'Join') { if (!to.params.roomId && to.hash) { // Public rooms start with '#', confuses the router. If hash but no roomId param, set it.