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

使用next-i18next刷新/en/test路由出现404错误求助

解决next-i18next多语言子路由刷新404问题

针对你遇到的非默认语言(如en)子页面刷新404的问题,检查以下几个关键配置:

1. 确认next.config.js的i18n配置

确保在next.config.js中正确配置多语言路由规则,示例如下:

module.exports = {
  i18n: {
    locales: ['ko', 'en'],
    defaultLocale: 'ko',
    localeDetection: false, // 按需开启,避免自动跳转
  },
  // 如果使用静态导出(next export),必须添加这一行
  trailingSlash: true,
};

静态导出时trailingSlash: true是关键,它会让Next.js生成带斜杠的目录结构,避免刷新子路由时找不到静态文件。

2. 检查页面组件的静态生成配置

如果你的页面使用getStaticProps,需要在对应页面(如pages/test.js)中处理locale参数,并配置getStaticPaths生成所有语言的路径:

import { serverSideTranslations } from 'next-i18next/serverSideTranslations';

export async function getStaticProps({ locale }) {
  return {
    props: {
      ...await serverSideTranslations(locale, ['common']),
    },
  };
}

export async function getStaticPaths({ locales }) {
  return {
    paths: locales.map((locale) => ({
      params: { /* 页面参数,如果有的话 */ },
      locale,
    })),
    fallback: false, // 或按需设为true
  };
}

如果缺少getStaticPaths生成对应语言的路径,Next.js无法预渲染该语言的子页面,刷新时就会404。

3. 确保_app.js正确集成next-i18next

在pages/_app.js中必须用appWithTranslation包裹组件:

import { appWithTranslation } from 'next-i18next';

function MyApp({ Component, pageProps }) {
  return <Component {...pageProps} />;
}

export default appWithTranslation(MyApp);

这是next-i18next生效的基础,缺少的话多语言路由逻辑会失效。

4. 验证next-i18next.config.js配置

确认next-i18next.config.js中的localePath指向正确的翻译文件目录,示例:

module.exports = {
  i18n: {
    locales: ['ko', 'en'],
    defaultLocale: 'ko',
  },
  localePath: './public/locales', // 确保路径正确
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:45:57