You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt+i18n如何将根路径设为语言选择页并阻止默认跳转

解决方法

1. 修改nuxt.config.js中的i18n配置

调整关键参数,阻止根路径自动跳转并保留带前缀的语言路由:

export default {
  i18n: {
    strategy: 'prefix', // 保持前缀模式
    defaultLocale: 'en',
    langDir: '~/locales/',
    rootRedirect: false, // 核心设置:禁用根路径自动跳转至默认语言
    parsePages: false, // 禁用自动解析页面路由,避免根路径被i18n处理
    pages: {
      // 明确指定需要i18n处理的页面,根路径index无需配置
      'about': { en: '/about', tr: '/hakkimizda' },
      // 其他页面按需添加配置
    },
    vuex: {
      moduleName: 'i18n',
      syncRouteParams: true
    },
    locales: [
      {
        code: 'en',
        iso: 'en',
        name: 'English',
        file: 'en/en.js'
      },
      {
        code: 'tr',
        iso: 'tr',
        name: 'Türkçe',
        file: 'tr/tr.js'
      },
      {
        code: 'es',
        iso: 'es',
        name: 'Español',
        file: 'es/es.js' // 添加西班牙语的语言文件配置
      }
    ]
  }
}

2. 创建根路径语言选择页

在pages目录下新建index.vue,作为静态语言选择页面:

<template>
  <div class="language-selector">
    <h1>选择你的语言</h1>
    <div class="language-links">
      <nuxt-link to="/en">English</nuxt-link>
      <nuxt-link to="/es">Español</nuxt-link>
      <nuxt-link to="/tr">Türkçe</nuxt-link>
    </div>
  </div>
</template>

<style scoped>
.language-selector {
  text-align: center;
  margin-top: 50px;
}
.language-links a {
  display: inline-block;
  margin: 0 15px;
  padding: 10px 20px;
  border: 1px solid #ccc;
  border-radius: 4px;
  text-decoration: none;
  color: #333;
}
.language-links a:hover {
  background-color: #f5f5f5;
}
</style>

3. 验证效果

  • 访问根路径/时,将显示语言选择页,不会自动跳转至默认语言
  • 访问/en、/es、/tr会进入对应语言的应用页面
  • 配置过的子页面(如/en/about、/tr/hakkimizda)会正常加载对应语言内容

内容的提问来源于stack exchange,提问作者sportakal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:24:22