如何在 Next.js 中设置多语言环境动态页面的 getStaticPaths

Huu*_*yen 12 multilingual locale reactjs next.js

今天,在我的业余项目中,我遇到了一个与在 Next.js 中设置多语言环境动态页面的 getStaticPaths 相关的问题。我研究了一下,发现有很多人都被这个问题困扰。

我创建了一个动态页面 [slug].js 来处理从数据库获取的所有动态数据。我正在开发的网站也是多语言网站,它使用 next-translate 来处理 i18n。

在 [slug].js 中,我们必须设置一个函数 getStaticPaths 来处理所有静态 url。如果网站有 1 种语言,那就更容易了,但是如果有 2 种以上的语言,我们就必须循环它。

Huu*_*yen 18

这是我用来处理它的代码,我正在使用 Notion API 并将其用作多语言网站的数据库:

export async function getStaticPaths({ locales }) {
  const notion = new Client({ auth: process.env.NOTION_API_OFFICIAL_KEYS });

  const databaseId = process.env.NOTION_PAGE_ID_EMBVN_DATABASE_PAGE;
  const response = await notion.databases.query({
    database_id: databaseId,
  });

  let paths = [];

  response.results.forEach((block) => {
    for (const locale of locales) {
      paths.push({
        params: {
          slug: block.properties.embcode.title[0].plain_text.toString(),
        },
        locale,
      });
    }
  });

  return {
    paths,
    fallback: false,
  };
}
Run Code Online (Sandbox Code Playgroud)

使用 forEach,我们会将每个语言环境的每个 pathName 添加到 paths 数组中,以在 getStaticPaths 的最终结果中返回它。

  • @MikeMajara 我现在只是 Next.js 的初级开发人员。我很早以前就遇到过这个问题,在互联网上到处找,甚至Next.js的文档,但找不到任何解决方案。幸运的是,我的一位朋友是 Javascript 的全栈开发人员,他向我解释了这一点并帮助我解决了这个问题。我想我将来应该再次分享给其他人。 (4认同)