我正在使用App Router在Next.js 13中本地化网站。
大多数路由都在[lang]
后面,那里的过程似乎很简单。但是有一些路由的语言是在数据库中定义的,现有的链接看起来像/post/ABCD123
。我想保持这些不变,只使用<html lang="">
设置正确的语言。语言(和其他Meta数据)只有在从数据库中获取文档后才可用。
Next.js文档提到了根布局静态生成的代码:
export async function generateStaticParams() {
return [{ lang: 'en-US' }, { lang: 'de' }]
}
export default function Root({ children, params }) {
return (
<html lang={params.lang}>
<body>{children}</body>
</html>
)
}
字符串
这正是我想要的-但我如何设置lang参数从内部的一个路由,这是不是behing [lang]
路径?这甚至是可能的?
1条答案
按热度按时间daolsyd01#
复制我自己-这可能是不可能的。根据Next.js文档,没有办法在RootLayout和组件之间传递任何东西,并且底层路径参数对RootLayout不可见。
我发现实现这一点的唯一方法是将所有东西都移到[lang]路径后面(包括RootLayout)。