From 9e36d5588bbfe5077d05a2339852442a57947b84 Mon Sep 17 00:00:00 2001 From: Pierre-Jean CHANCELLIER <paidge_cs@hotmail.com> Date: Wed, 23 Feb 2022 17:16:20 +0100 Subject: [PATCH] improve perf with lazyLoading for i18n and reducing webPack chunks --- components/navigation/Language.vue | 24 ++++++++++--- i18n/index.js | 8 +---- i18n/locales/de.json | 4 +-- i18n/locales/en.json | 4 +-- i18n/locales/es.json | 4 +-- i18n/locales/fr.json | 4 +-- layouts/default.vue | 6 ++-- nuxt.config.js | 36 +++++++++++++------ pages/a-propos.vue | 3 +- pages/favoris.vue | 3 +- pages/lexique.vue | 3 +- pages/membre.vue | 3 +- pages/membres/index.vue | 3 +- pages/parametres.vue | 3 +- .../{index.vue => futures_entrees.vue} | 13 ++++--- pages/previsions/futures_sorties.vue | 9 ++--- 16 files changed, 83 insertions(+), 47 deletions(-) rename pages/previsions/{index.vue => futures_entrees.vue} (96%) diff --git a/components/navigation/Language.vue b/components/navigation/Language.vue index 5242802..5543217 100644 --- a/components/navigation/Language.vue +++ b/components/navigation/Language.vue @@ -4,8 +4,12 @@ class="form-select" :aria-label="$t('lang')" @change="saveLocale($event)" - v-model="$i18n.locale"> - <option v-for="lang in $i18n.locales" :key="lang.code" :value="lang.code"> + v-model="activeLang"> + <option + v-for="lang in $i18n.locales" + :key="lang.code" + :value="lang.code" + :selected="lang.code === activeLang"> {{ lang.name }} </option> </select> @@ -14,12 +18,22 @@ <script> export default { + data() { + return { + activeLang: "en" + } + }, methods: { saveLocale(e) { - this.$i18n.locale = e.target.value - this.$i18n.setLocaleCookie(e.target.value) - this.$router.push(this.switchLocalePath(e.target.value)) + // this.$i18n.locale = e.target.value + this.$i18n.setLocale(e.target.value) + // this.$i18n.setLocaleCookie(e.target.value) + // this.$router.push(this.switchLocalePath(e.target.value)) + // this.$router.replace(this.switchLocalePath(e)) } + }, + mounted() { + this.activeLang = this.$i18n.locale } } </script> diff --git a/i18n/index.js b/i18n/index.js index 22d2a1d..b35f759 100644 --- a/i18n/index.js +++ b/i18n/index.js @@ -1,11 +1,5 @@ -import en from "./locales/en.json" -import fr from "./locales/fr.json" -import es from "./locales/es.json" -import de from "./locales/de.json" import { dateTimeFormats } from "./locales/dateTimeFormats" export default { - fallbackLocale: "en", - dateTimeFormats, - messages: { en, fr, es, de } + dateTimeFormats } diff --git a/i18n/locales/de.json b/i18n/locales/de.json index 7835453..1aec3d9 100644 --- a/i18n/locales/de.json +++ b/i18n/locales/de.json @@ -117,8 +117,6 @@ "title": "Meine Favoriten", "use": "Nur meine Favoriten" }, - "futureexits": "Zukünfitge Austritte", - "futuremembers": "Zukünftige Beitritte", "infos": "Informationen", "inout": "Bei- und Austritte des Vertrauensnetz in den 2 letzten Tagen", "inpreparation": "In Vorbereitung", @@ -222,6 +220,8 @@ "title": "Proof of Work (dt. Arbeitsnachweis)" }, "previsions": { + "futureentries": " Zukünftige Beitritte", + "futureexits": "Zukünfitge Austritte", "pardate": "Prognosen nach Datum", "parmembre": "Prognosen nach Mitglieder", "period": { diff --git a/i18n/locales/en.json b/i18n/locales/en.json index c1bf691..519cac0 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -118,8 +118,6 @@ "title": "My favourites", "use": "My favorites only" }, - "futureexits": "Future exits", - "futuremembers": "Future entries", "infos": "Informations", "inout": "Entries and exits of the web of trust for the last 2 days", "inpreparation": "In preparation", @@ -223,6 +221,8 @@ "title": "Proof of Work" }, "previsions": { + "futureentries": "Future entries", + "futureexits": "Futures exits", "pardate": "Forecasts by dates", "parmembre": "Forecasts by members", "period": { diff --git a/i18n/locales/es.json b/i18n/locales/es.json index d08a247..a2a705c 100644 --- a/i18n/locales/es.json +++ b/i18n/locales/es.json @@ -118,8 +118,6 @@ "title": "Mis favoritos", "use": "Solo mis favoritos" }, - "futureexits": "Futuras salidas", - "futuremembers": "Futuras entradas", "infos": "Informaciones", "inout": "Entradas y salidas de la red de confianza en los últimos 2 dÃas", "inpreparation": "En preparación", @@ -223,6 +221,8 @@ "title": "Prueba de trabajo" }, "previsions": { + "futureentries": "Futuras entradas", + "futureexits": "Futuras salidas", "pardate": "Previsiones por fecha", "parmembre": "Previsiones por miembros", "period": { diff --git a/i18n/locales/fr.json b/i18n/locales/fr.json index 183f82a..6d21732 100644 --- a/i18n/locales/fr.json +++ b/i18n/locales/fr.json @@ -118,8 +118,6 @@ "title": "Mes favoris", "use": "Mes favoris uniquement" }, - "futureexits": "Futures sorties", - "futuremembers": "Futures entrées", "infos": "Informations", "inout": "Entrées et sorties de la toile de confiance des 2 derniers jours", "inpreparation": "En préparation", @@ -223,6 +221,8 @@ "title": "Preuve de travail" }, "previsions": { + "futureentries": "Futures entrées", + "futureexits": "Futures sorties", "pardate": "Prévisions par date", "parmembre": "Prévisions par membres", "period": { diff --git a/layouts/default.vue b/layouts/default.vue index 7c8e85b..a6a7331 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -31,13 +31,13 @@ export default { title: "previsions.title", items: [ { - path: "/previsions", - title: "futuremembers", + path: "/previsions/futures_entrees", + title: "previsions.futureentries", icon: "login" }, { path: "/previsions/futures_sorties", - title: "futureexits", + title: "previsions.futureexits", icon: "logout" } ] diff --git a/nuxt.config.js b/nuxt.config.js index c683b76..7ba9dd4 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -49,34 +49,44 @@ export default { // Modules: https://go.nuxtjs.dev/config-modules modules: [ - // https://github.com/nuxt-community/apollo-module - "@nuxtjs/apollo", // https://i18n.nuxtjs.org - "@nuxtjs/i18n" + "@nuxtjs/i18n", + // https://github.com/nuxt-community/apollo-module + "@nuxtjs/apollo" ], i18n: { - defaultLocale: "fr", + lazy: true, + langDir: "~/i18n/locales/", + defaultLocale: "en", + strategy: "prefix", locales: [ { code: "en", - name: "English" + name: "English", + file: "en.json" }, { code: "fr", - name: "Français" + name: "Français", + file: "fr.json" }, { code: "es", - name: "Español" + name: "Español", + file: "es.json" }, { code: "de", - name: "Deutsch" + name: "Deutsch", + file: "de.json" } - ], + ] + , detectBrowserLanguage: { alwaysRedirect: true + , + fallbackLocale: "en" }, vueI18n: i18n }, @@ -127,5 +137,11 @@ export default { }, // Build Configuration: https://go.nuxtjs.dev/config-build - build: {} + build: { + extend(config, ctx) { + if (ctx && ctx.isClient) { + config.optimization.splitChunks.maxSize = 243000 + } + } + } } diff --git a/pages/a-propos.vue b/pages/a-propos.vue index d34d076..aba2fde 100644 --- a/pages/a-propos.vue +++ b/pages/a-propos.vue @@ -138,7 +138,8 @@ export default { paths: { fr: "/a-propos", en: "/about", - es: "/a-proposito" + es: "/a-proposito", + de: "/uber" } }, mounted() { diff --git a/pages/favoris.vue b/pages/favoris.vue index fd2387d..eecb2b3 100644 --- a/pages/favoris.vue +++ b/pages/favoris.vue @@ -89,7 +89,8 @@ export default { paths: { fr: "/favoris", en: "/favourites", - es: "/favoritos" + es: "/favoritos", + de: "/favoriten" } }, mounted() { diff --git a/pages/lexique.vue b/pages/lexique.vue index 9072a44..e32ae48 100644 --- a/pages/lexique.vue +++ b/pages/lexique.vue @@ -78,7 +78,8 @@ export default { paths: { fr: "/lexique", en: "/lexicon", - es: "/lexico" + es: "/lexico", + de: "/lexikon" } }, methods: { diff --git a/pages/membre.vue b/pages/membre.vue index 864b386..9f2f7be 100644 --- a/pages/membre.vue +++ b/pages/membre.vue @@ -124,7 +124,8 @@ export default { paths: { fr: "/membre", en: "/member", - es: "/miembro" + es: "/miembro", + de: "/mitglied" } }, mounted() { diff --git a/pages/membres/index.vue b/pages/membres/index.vue index 7d7d864..8b985cc 100644 --- a/pages/membres/index.vue +++ b/pages/membres/index.vue @@ -75,7 +75,8 @@ export default { paths: { fr: "/membres", en: "/members", - es: "/miembros" + es: "/miembros", + de: "/mitglieder" } }, mounted() { diff --git a/pages/parametres.vue b/pages/parametres.vue index 9d36ef3..4cd3d64 100644 --- a/pages/parametres.vue +++ b/pages/parametres.vue @@ -109,7 +109,8 @@ export default { paths: { fr: "/parametres", en: "/parameters", - es: "/parametros" + es: "/parametros", + de: "/einstellungen" } }, mounted() { diff --git a/pages/previsions/index.vue b/pages/previsions/futures_entrees.vue similarity index 96% rename from pages/previsions/index.vue rename to pages/previsions/futures_entrees.vue index ec0d9e5..0bfac33 100644 --- a/pages/previsions/index.vue +++ b/pages/previsions/futures_entrees.vue @@ -8,7 +8,7 @@ <div v-if="wwResult"> <h2 class="text-center my-5 font-weight-light"> <solid-login-icon style="width: 2rem" aria-hidden="true" /> {{ - $t("previsions.title") + $t("previsions.futureentries") }} <small ><span class="badge bg-secondary">{{ @@ -182,6 +182,10 @@ export default { { text: this.$t("previsions.title"), active: true + }, + { + text: this.$t("previsions.futureentries"), + active: true } ], error: null, @@ -277,9 +281,10 @@ export default { }, nuxtI18n: { paths: { - fr: "/previsions", - en: "/forecasts", - es: "/pronosticos" + fr: "/previsions/futures_entrees", + en: "/forecasts/future_exits2", + es: "/pronosticos/futuras_salidas2", + de: "/prognosen/zukunftige_veroffentlichungen2" } }, mounted() { diff --git a/pages/previsions/futures_sorties.vue b/pages/previsions/futures_sorties.vue index 88cd908..2bb31b8 100644 --- a/pages/previsions/futures_sorties.vue +++ b/pages/previsions/futures_sorties.vue @@ -2,7 +2,7 @@ <main class="container"> <h2 class="text-center my-5 font-weight-light"> <solid-logout-icon style="width: 2rem" aria-hidden="true" /> {{ - $t("futureexits") + $t("previsions.futureexits") }} </h2> <div class="form-check form-switch mb-4 d-flex justify-content-center"> @@ -60,10 +60,10 @@ export default { }, { text: this.$t("previsions.title"), - to: "/previsions" + active: true }, { - text: this.$t("futureexits"), + text: this.$t("previsions.futureexits"), active: true } ], @@ -111,7 +111,8 @@ export default { paths: { fr: "/previsions/futures_sorties", en: "/forecasts/future_exits", - es: "/pronosticos/futuras_salidas" + es: "/pronosticos/futuras_salidas", + de: "/prognosen/zukunftige_veroffentlichungen" } }, mounted() { -- GitLab