Мне нужно включить мою локаль (en/nl) в мой URL-адрес моего проекта nuxt.js/vuetify, я использовал i18n для перевода. Я попытался использовать встроенную функцию динамической маршрутизации, поставив префикс подчеркивания в имени моего каталога, например, папка _lang включает в себя индекс страниц vue, галерею и о нас. эта функция обещает, что из-за подчеркивания часть URL-адреса для _lang может быть любой.
Например: localhost:3000/lang/gallery
также может быть localhost:3000/randomstring/gallery
это не имеет значения. я пытался получить и установить эту «случайную строку» с помощью глобальной переменной маршрутизации ($route.params.[randomstring])
, я смог только получить ее, но не установить. Поэтому, когда я меняю локаль (используя i18n), для «randomstring» не может быть установлено то же имя, что и для выбранной локали.
Моя единственная работа заключалась в использовании свойства «база» компонента vue-router путем жесткого кодирования переменной среды процесса после значения по умолчанию («/»).
Другим обходным решением может быть дублирование всех страниц и жесткий код, переводящий их в соответствующие папки (папка «en» и папка «nl», включая все 3 страницы). но это не будет устойчивым, поскольку вы добавляете страницы на сайт.
TL DR: Как вы динамически добавляете локаль в свой проект nuxt.js/vuetify (используя i18n)?
Используемая документация: https://nuxtjs.org/docs/2.x/features/file-system-routing
Когда вы используете метод модуля nuxt/i18nlocalePath
, ваш URL изменится в соответствии с текущей активной локалью.
<nuxt-link :to = "localePath('about')">Go to about page</nuxt-link>.
Перенаправит вас на: /fr/about
если 'fr' (французский) является активной локалью.
Чтобы установить локаль, используйте метод setLocale
:
<button @click = "$i18n.setLocale('fr')">Set Locale</button>
Больше справочника по API nuxt/i18n можно найти здесь: https://i18n.nuxtjs.org/api#methods-1