根据Next.js的子路径路由文档i8n:
默认区域设置没有前缀。
然而我的问题是,当添加到我的next.config.js:
i18n: {
locales: ['en'],
defaultLocale: 'en',
localeDetection: false,
}
我所有的页面都存在于两个路由下。/en/page
和/page.
这意味着他们的文档是错误的?
也看看这个GitHub问题,似乎人们要求defaultLocale
不要有前缀,而是使用default
作为黑客来强制前缀,这与我正在发生的事情完全相反。
我是否错过了一些关键的东西,而黑客实际上是我需要的?我能想到的唯一解决方案就是添加这样的重定向,这样两个页面就不会同时存在,但我最终会陷入一个无限循环:
{
"source": "/en/:path*",
"destination": "/:path*",
"permanent": false
}
我在这些版本:
"next": "12.1.5",
"i18next": "^22.4.6",
"next-i18next": "^13.0.2",
"react-i18next": "^12.1.1",
谢谢!
我也遇到过同样的问题,但通过使用区域设置格式"en-US",只有一条路由和另一条404,使其正常工作。而不仅仅是"en"就像这里的文档一样。希望这对你有帮助!