Language as param in Vue Router
I would like to have a language param in my path. For example if there is en
before the path, print en
.
If I enter http://localhost:8080/en
it will give me en
but if I enter http://localhost:8080/en/aaaa
it will return me undefined
how can I get en
anyway?
const routes = [
{
path: "/:lang?",
children: [
{
path: home,
component: home
}
]
}
]
router.beforeEach((to, _, next) => {
console.log(to.params.lang);
}
Solution 1:
Under the assumption that you are planning on adding different language support for your app, I would recommend instead using i18n because it will abstract away things like appending params for different languages.
To your specific question on why you are getting undefined
, that could simply be because there is no view page or route for the /aaa
route. So Vue is just confused on where you want to go.
Solution 2:
You can use pure javascript to get the current url and get the parameters through a split.
let myListParams = window.location.href.split('/');