My goal is to implement an optional query language functionality. When a user visits localhost/#/, the page should automatically redirect to localhost/#/?lang=en (defaulting to English).
If the user navigates to /localhost/#/?lang=es, the site will display in Spanish. Subsequently, any further navigation will maintain the chosen language by appending ?lang=es to all page paths.
This is the current code I have in place, but it is not functioning as expected:
Router:
router.beforeEach((to, from, next) => {
let lang = from.query.lang;
// Set language
i18n.locale = lang || 'en';
// Redirect with language query
if(!lang){
lang = 'en';
console.log('Trying to push path: '+to.path+'/?lang='+lang)
next({ path: `${to.path}/?lang=${lang}` });
return;
}
The result is:
Trying to push path: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////?lang=en vue-router.esm.js?8c4f:1905 RangeError: Maximum call stack size exceeded