У меня многоязыковое приложение Nuxt, использующее nuxt-i18n с игнорируемыми маршрутами.
nuxt.config. js
…
seo: true,
parsePages: false,
strategy: 'prefix_except_default',
pages: {
'cats': {
en: '/cats',
de: '/katzen',
fr: false
}
}
…
Итак, страница не доступен на французском языке.
Мой переключатель языка выглядит так - довольно просто:
LanguageSwitch. vue
computed: {
availableLocales () {
return this.$i18n.locales.filter(i => i.code !== this.$i18n.locale)
}
}
<ul class="language-switch__list">
<li class="language-switch__item" v-for="locale in availableLocales">
<NuxtLink
class="language-switch__link"
rel="alternate" :key="locale.code"
:to="switchLocalePath(locale.code)"
:hreflang="locale.code" :lang="locale.code"
active-class="none"
exact>
{{locale.name}}
</NuxtLink>
</li>
</ul>
Я изменил фильтр, чтобы удалить отсутствующие страницы / языки, такие как:
return this.$i18n.locales.filter(i => (i.code !== this.$i18n.locale) && (this.$nuxt.$route.path !== this.switchLocalePath(i.code)) )
Это работает, но я бы хотел лучшее решение. Вот мой вопрос: есть ли простой способ изменить маршруты на домашнюю страницу языка (/, / en, / de), если маршрут игнорируется?