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

Nuxt 3 集成I18n时动态路由跳转失效求助

解决Nuxt 3 + i18n动态路由跳转问题

问题根源分析

你的NuxtLink无法正常工作,核心问题有两个:

  1. 路由名称错误:Nuxt 3对pages/products/[type].vue生成的路由名称是products-type,而非你使用的products
  2. i18n路由映射与预期路径不匹配:当前配置将products/[type]映射为sk locale的/produkty/[type],会导致跳转路径变为/produkty/all而非你需要的/products/all

修复步骤

1. 修正路由名称

将模板中的路由名称改为正确的products-type,修改后的代码如下:

<template>
  <NuxtLink :to="localePath({ name: 'products-type', params: { type: 'all' } })">All</NuxtLink>
  <NuxtLink :to="localePath({ name: 'products-type', params: { type: 'favorites' } })">Favorites</NuxtLink>
</template>

<script setup>
const localePath = useLocalePath()
</script>

2. 调整i18n配置匹配预期路径

如果你希望默认locale(sk)的跳转路径为/products/all而非/produkty/all,需要修改nuxt.config.ts中的i18n配置:

export default defineNuxtConfig({
    devtools: { enabled: true },
    modules: [
        '@nuxtjs/i18n',
    ],
    i18n: {
        vueI18n: './translations/i18n.config.ts',

        locales: [
            { code: 'sk', iso: 'sk-SK', name: 'Slovenčina' },
        ],
        defaultLocale: 'sk',

        // 改为prefix_except_default,默认locale路径不带前缀
        strategy: 'prefix_except_default',

        // 如果不需要自定义路径映射,可移除customRoutes和pages配置
        // customRoutes: 'config',
        // pages: {
        //     'products/[type]': {
        //         sk: '/produkty/[type]'
        //     },
        // },
    }
})

如果确实需要保留/produkty/[type]的sk语言路径,只需确保路由名称正确即可,无需移除customRoutes配置。

3. 验证路由生成

可以通过Nuxt DevTools的Routes面板查看生成的路由列表,确认路由名称和路径是否符合预期,确保products-type路由存在并映射到正确的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:37:01