vue.js nuxt-i18 n更改语言&&路由其他页面

beq87vna  于 2023-03-09  发布在  Vue.js
关注(0)|答案(3)|浏览(252)

如何在nuxt-i18 n下同时并行使用以下nuxt-links:
<nuxt-link :to="switchLocalePath('en')">EN</nuxt-link>
以及
<nuxt-link :to="localePath('/about')">About</nuxt-link>
所以,当我改变语言时,它会自动删除关于页面。

svujldwt

svujldwt1#

您可能会在链接上使用@click,如下所示

<nuxt-link
  :to="switchLocalePath('en')" 
  @click="$router.push(localePath('/about'))"
>
  EN
</nuxt-link>

想法取自此来源:https://github.com/nuxt-community/i18n-module/issues/476#issuecomment-539451906

kxxlusnw

kxxlusnw2#

谢谢你的建议!
不幸的是,nuxt-link似乎不能与@click一起工作,但当我嵌套它时,它可以正常工作,如下所示:

<div @click="$router.push(localePath('/about'))">
    <nuxt-link class="text-header-bold text-middle" :to="switchLocalePath('en')">EN</nuxt-link>
</div>
kq4fsx7k

kq4fsx7k3#

我在为静态站点生成器(SSG)创建语言选择器时遇到了类似的问题。我通过创建一个函数来更改当前语言并导航到相应的语言特定的URL来解决这个问题。
我注意到SSR和开发模式在默认情况下都有这种行为,但是静态生成的页面只会改变区域设置而不会导航。

  • 数量:3.2·@数量/i18n:8.0 *
<template>
  <!-- Lang selector -->
  <select
    class="header__lang-selector p2"
    v-model="currentLang"
    @change="changeLocale($event)"
  >
    <!-- Add available locales as selector options -->
    <option v-for="(lang, i) in availableLocales" :key="i" :value="lang">
      {{ lang }}
    </option>
  </select>
</template>
<script setup>
const localePath = useLocalePath();
const { locale, availableLocales } = useI18n();
const { setLocale } = useI18n();

const currentLang = ref(locale);

async function changeLocale(event) {
  setLocale(event.target.value);
  currentLang.value = event.target.value;

  // Change URL to correct language, ex: '/home' to '/fr/home'
  await navigateTo(localePath(useRoute().path));
}
</script>

相关问题