@Iglint

Как задать опциональный префикс в vue-router для vue-i18n?

Реализовываю мультиязычность на сайте привязанную к url, но возникла проблема.
Обернул все роуты в родительский роут с префиксом языка.
При постоянном динамическом префиксе все отрабатывает отлично:
path: '/:locale',
    component: {
        template: '<router-view></router-view>',
        beforeEnter(to, from, next){
            const locale = to.params.locale;

            if(i18n.locale !== locale){
                i18n.locale = locale;
            }

            return next();
        },
    },


Но если попытаться сделать префикс опциональным:
...
path: '/:locale?',
...

Необходимо, чтобы по сайту можно было гулять так:
/en/...
/es/...
/... - (default language)
При назначении префикса, в дочерних роутах префикс не отображается, т.е загрузить страницу вида /en/xxx можно,
но после попытки перехода на другой роут - префикс сбрасывается. По этой теме мало информации, видел похожие вопросы (толи префикс не подставляется т.к он не обязательный, толи составляется плохая регулярка), но ответа так и не нашел (кроме того, как подставлять в каждый роут параметр вручную - не вариант)

Как можно решить данный вопрос - видел, на том-же сайте с документацией vue-router необходимый функционал, как оно там работает? Еще видел решение с помощью смены base path у роутера, насколько оно рабочее? Знаю, что эта проблема решена в nuxt.js, но у меня чистый vue.
Буду благодарен за любую помощь.
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы