静态站点生成

如何为你的 i18n 应用支持静态站点生成

概述

本指南将向你展示如何设置你的 i18n 应用以支持静态站点生成。


什么是静态站点生成?

静态站点生成(SSG)是 Next.js 的一项功能,允许你在构建时生成静态页面。 这对于性能和 SEO 非常有用。

app 路由器的 SSG

要求

为您的 i18n 应用启用静态站点生成有一些要求。 根据您使用的是 app 还是 pages 目录,要求略有不同。

  1. 您的应用必须使用 Next.js app 路由器。
  2. 您的应用必须支持 i18n 路由(参见 i18n 路由
  3. 您的应用必须使用本地翻译(参见 本地翻译

步骤

步骤 1: 首先,确保您的应用在根布局中有一个 <GTProvider> 组件。

app/[locale]/layout.tsx
import { GTProvider } from 'gt-next';

由于应用使用 i18n 路由,提供者应该放在 [locale]/layout.tsx 文件中。

步骤 2: 接下来,确保您的应用使用 loadTranslations 函数来加载翻译。 此外,将语言环境作为参数传递给 <GTProvider>。您可以从 params 对象中获取语言环境。

app/[locale]/layout.tsx
import { loadTranslations } from '@/i18n/loadTranslations';
import { GTProvider } from 'gt-next';

export default async function RootLayout({
  children,
  params,
}: {
  children: React.ReactNode;
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  return (
    <GTProvider loadTranslations={loadTranslations} locale={locale}>
      {children}
    </GTProvider>
  )
}

步骤 3: 然后,确保您的所有钩子和组件都从 gt-next/client 导入。

import { useGT } from 'gt-next/client';
import { T } from 'gt-next/client';

这很重要,因为从 gt-next/client 导入的钩子和组件永远不会读取请求头,而请求头在静态生成页面的构建时并不存在。

确保您已正确配置 Next.js 应用以使用 getStaticParams 函数

就是这样!您的应用现在应该支持多语言的静态站点生成!

pages 路由器提供 SSG

🚧 本节内容正在建设中。🚧

这份指南怎么样?