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

serverSideTranslations 在动态路由下无法正常工作问题求助

问题排查与解决建议

针对你/user/[id]/index.js动态路由国际化构建后失效的问题,结合提供的代码,核心问题及修复建议如下:

1. 修正getStaticPaths参数不匹配问题

你的路由仅包含id一个动态参数,但paths数组的params中额外添加了slug字段,这会导致Next.js无法正确匹配路由,进而导致预生成的国际化页面无法正常访问。

修复后代码:

export const getStaticPaths = ({ locale }) => {
  return {
    paths: [
      { params: { id: `1` }, locale: "en" },
      { params: { id: `1` }, locale: "hu" },
      { params: { id: `1` }, locale: "de" },
      { params: { id: `1` }, locale: "lt" },
      { params: { id: `1` }, locale: "cz" },
      { params: { id: `1` }, locale: "pl" },
      { params: { id: `1` }, locale: "ru" },
    ],
    fallback: true,
  }
}

2. 确认getStaticProps的翻译加载逻辑

  • 确保已正确导入serverSideTranslations(通常来自next-i18next/serverSideTranslations)
  • 若页面需使用id参数数据,需在getStaticProps中接收并传递给组件(非国际化失效核心问题,但需保证参数完整):
export async function getStaticProps({ locale, params }) {
  return {
    props: {
      ...(await serverSideTranslations(locale, ["shop", "account", "navbar", "footer"])),
      id: params.id, // 页面用到id时需传递
    },
  };
}

3. 验证国际化配置与文件结构

  • 确认localePath: "./lang"指向的文件夹存在,且文件夹下包含所有配置locale对应的翻译文件(如lang/en.json、lang/ru.json等)
  • 每个翻译文件必须包含shop、account、navbar、footer命名空间的键值对,示例en.json:
{
  "shop": {
    "title": "Shop"
  },
  "account": {
    "profile": "Profile"
  }
}

4. 检查fallback模式的影响

你设置了fallback: true,未在paths中预生成的id页面会在首次请求时动态生成。若需特定id的所有locale页面在构建时生成,保持当前配置即可;若有更多id需预生成,补充到paths数组中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:05:21