如何在Next.js App Router中以编程方式更改页面语言

vkc1a9a2  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(113)

我正在使用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]路径?这甚至是可能的?

daolsyd0

daolsyd01#

复制我自己-这可能是不可能的。根据Next.js文档,没有办法在RootLayout和组件之间传递任何东西,并且底层路径参数对RootLayout不可见。
我发现实现这一点的唯一方法是将所有东西都移到[lang]路径后面(包括RootLayout)。

相关问题