-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] Enregistrer et utiliser la préférence de locale de l'utilisateur (PIX-6506). #455
Conversation
Une fois les applications déployées, elles seront accessibles via les liens suivants : Les variables d'environnement seront accessibles ici. |
f75bf87
to
ab6f2f0
Compare
2ad1ffe
to
8e1a65d
Compare
defd0e0
to
baa5384
Compare
baa5384
to
4c4a278
Compare
121e39a
to
b3bbf66
Compare
362cd19
to
89c3c86
Compare
0cb1350
to
db57c41
Compare
f6ed61e
to
25ac905
Compare
nuxt.config.js
Outdated
@@ -180,6 +180,13 @@ const nuxtConfig = { | |||
router: { | |||
middleware: ['current-page-path'], | |||
linkExactActiveClass: 'current-active-link', | |||
extendRoutes(routes) { | |||
if (config.isPixSite && config.isFrenchDomain) { | |||
return routes.filter( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cela fonctionne vraiment ? J'ai l'impression qu'il faut plutôt muter routes
en regardant la doc
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En local, on a constaté que ça fonctionne oui. La doc est pas complète sur le sujet, @lego-technix est allé voir le code source de Nuxt en particuliers leurs tests, parfois ils mutent, parfois ils return
si ma mémoire est bonne :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ahh sympa :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tout à fait, je confirme.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je viens de voir en effet c'est fait dans un test, mais du coup ils ne respectent donc pas la signature de leur fonction :/
edit: On peut voir le code qui permet ça
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Est-ce qu'il ne faudrait pas tester ce code ?
44be081
to
52975b4
Compare
a774aaa
to
a681450
Compare
ddd6d3a
to
38a4fe3
Compare
4884d22
to
38a4fe3
Compare
38a4fe3
to
b96a3f1
Compare
mounted() { | ||
const chosenLocale = this.getLocaleFromCookie() | ||
const url = chosenLocale ? `/${chosenLocale}/` : '/locale-choice' | ||
this.$router.push(url) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Le push
ajoute une entrée dans l'historique de l'utilisateur, ce qui fait qu'on ne peut pas utiliser le bouton précédent du navigateur qui nous redirige automatiquement sur la page courante.
Je propose de remplacer par :
this.$router.push(url) | |
this.$router.replace(url) |
Pour ne pas sauvegarder l'accès au /
dans l'historique. (dans une autre PR)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
🎄 Problème
Actuellement l'utilisateur doit choisir sa locale lorsqu'il arrive sur le site international. Et lorsqu'il revient à la racine du site, il lui est redemandé de choisir, ce qui rajoute une interaction et fait que l'accès à Pix n'est pas immédiat.
🎁 Proposition
nuxt-i18n
pour recoder la redirection dans une nouvelle pageindex
:/locale-choice
quand il n'a pas de cookielocale
localized-home
), quand il a un cookiepix.org
)🌟 Remarques
Les pistes explorées :
Middleware
process.client
, nous avons pu obtenir quelque chose de fonctionnelNous avons exploré l'utilisation du middleware en recodant le
rootRedirect
fait parnuxt-i18n
et en ajoutant notre logique de redirection si un cookielocale
est présent le POC était fonctionnel :Avantages
mounted
d'une page.Inconvénients
index
index
à la racine, car celle-ci n'existe pas.Plugin
beforeEach
du vue-router navigation guards. Cependant le rootRedirect qu'on demande dans la configuration de nuxt-i18n surgissait ensuite. C'est pourtant pas en accord avec le lifecycle exposé par Nuxt, cette piste pourrait être aussi exploré de nouveau.window.onNuxtReady
qui est sensé se lancer qu'une seule fois, mais parfois il se déclenchait parfois plusieurs fois aussi bien en dev qu'en statique. Est-ce que c'est du à nuxt-i18n et/ou au rootRedirect ? A explorer de nouveau.Ces pistes nous ont causées des problèmes de scintillement de pages car les redirections sont faites une fois l'application chargée du côté client et parfois plusieurs fois.
Nginx
locale
si l'utilisateur en avait un. Malheureusement, avec notre config actuelle le navigateur met en cache la page d'accueil, donc on ne repassait pas par le serveur et l'utilisateur était systématiquement renvoyé sur la sélection de locale.nginx
était que l'utilisateur n'avait pas de scintillement de page comme la redirection était faite du côté du serveurRedirection navigateur vs. History API
Pas de différence notable au niveau des performances. Mais la version History API est nettement plus simple à tester.
🎅 Pour tester
Procédure à suivre :
locale
qui pourrait être dans le navigateur/locale-choice
qui oblige de choisir sa locale/fr
,/en-gb
ou/fr-be
. Constater dans le navigateur l'ajout d'un cookielocale
ayant pour valeur l'identifiant de la locale sélectionnée,fr
,en-gb
oufr-be
XXX/fr-be/les-tests
,/fr/pix-et-unesco
,XXX/en-gb/the-tests
, etc. etc.) et constater qu'aucune redirection n'a lieu