我有一个 Next 应用程序,它只有两条路线:
index.tsx
和 [slug].tsx
。 slug 路由使用 getStaticProps
和 getStaticPaths
从 CMS 获取页面。
我通过将其添加到我的
next.config.js
中启用了国际化路由:
i18n: {
locales: ["en", "fr"],
defaultLocale: "en",
}
index
路线工作正常,如果我去 /
与 Accept-Language
标题为 fr-FR
我被重定向到 /fr
子路线。不起作用的是动态路线[slug].tsx
。如果我直接使用它,它不会将我重定向到 fr 语言环境版本。并在 getStaticProps
中打印我的语言环境显示默认的 en
语言环境,而不是从我的 Accept-Language
标题计算的语言环境。
我知道人们通常会忘记在
getStaticPaths
中生成区域设置路径,我不认为这是问题所在,这是我生成它们的方式:
const paths = locales
.map((locale) => posts.map((p) => ({ params: { slug: c.id }, locale })))
.flat();
// { params: { slug: "post1" }, locale: "en" }
// { params: { slug: "post1" }, locale: "fr" }
知道出了什么问题吗?谢谢!