Как включить ваш текущий язык в URL? (Nuxt.js /Vuetify)

#javascript #internationalization #nuxt.js #vuetify.js

#javascript #интернационализация #nuxt.js #vuetify.js

Вопрос:

Мне нужно включить мой язык (en / nl) в мой URL-адрес моего проекта nuxt.js / vuetify, я использовал i18n для перевода. Я попытался использовать встроенную функцию динамической маршрутизации, добавив префикс подчеркивания в имя моего каталога, например, папка _lang, включает индекс страниц vue, галерею и о нас. функция обещает, что из-за подчеркивания часть url для _lang может быть любой.

Например: localhost:3000/lang/gallery также может быть localhost:3000/randomstring/gallery , это не имеет значения. я попытался получить и установить эту «случайную строку», используя глобальную переменную маршрутизации ($route.params.[randomstring]) , я мог только получить ее, а не установить. Поэтому, когда я меняю язык (используя i18n), для «randomstring» не может быть установлено то же имя, что и для выбранного языка.

Моим единственным обходным путем было использование свойства ‘base’ компонента vue-router путем жесткого кодирования переменной среды процесса после значения по умолчанию («/»).

Другим обходным путем было бы дублировать все страницы и переводить их с помощью жесткого кода в соответствующую папку (папку ‘en’ и папку ‘nl’, включая все 3 страницы). но это не будет устойчивым, поскольку вы добавляете страницы на сайт.

TL DR: Как динамически добавлять локаль в ваш проект nuxt.js / vuetify (используя i18n)?

Используемая документация: https://nuxtjs.org/docs/2.x/features/file-system-routing

Ответ №1:

При использовании метода модуля nuxt / i18n localePath ваш 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