На самом деле вы можете сделать это без охраны навигации. Основная цель здесь - дать понять маршрутизатору, когда у вас есть URL без параметра :lang
. Чтобы различать языковые префиксы и фактические пути, вы можете использовать шаблон регулярного выражения для параметра :lang
, например: (de|fr|en|zu)
(любой список кодов, который вам подходит). И сделать :lang
необязательным ?
.
Так что-то вроде этого должно работать: path: '/:lang(de|fr|en|zu)?'
По крайней мере, это работает для меня :) ...
Так что теперь, есливы запрашиваете /about
или /de/about
, которые оба будут соответствовать About
.. однако первый из них будет иметь params.lang
=== undefined. Поэтому я думаю, что когда бы вы ни указали свою локаль, вы можете сделать: const locale = this.$route.params.lang || 'en'
вот документация для расширенных шаблонов соответствия
routes: [{
path: '/:lang(de|fr|en|zu)?',
component: {
template: '<router-view />'
},
children: [
{
path: '',
name: 'home',
component: Home
},
{
path: 'about',
name: 'about',
component: About
},
{
path: 'contact',
name: 'contact',
component: Contact
}
]
}]