# General Translation Changelog: gt-next 6.9.0: 支持静态渲染
URL: https://generaltranslation.com/zh/blog/gt-next_v6_9_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Ernest McCarter
Published: 2025-11-18

## 概述

**此行为现已弃用。有关新行为，请参见 [gt-next@6.10.0](/devlog/gt-next_v6_10_0)。**

静态渲染是 Next.js 框架的一项核心能力，可在构建时预先生成页面，从而获得最佳性能和 SEO 效果。
因此，任何原生支持 Next.js 的库都应能在这种渲染模式下无缝工作。
**gt-next 6.9.0** 引入了静态渲染支持，使国际化应用能够充分利用 Next.js 完整的静态生成功能，同时不影响区域设置检测或翻译能力。

## 什么是静态渲染？

静态渲染是在构建阶段生成 HTML，而不是在每次请求时动态生成。
这种方式虽然能带来出色的性能，但对于通常依赖请求头、Cookie 或中间件来确定用户区域设置的 i18n 库来说，也会带来一些挑战。
在静态渲染过程中，这些请求时才能获取的依赖信息并不存在，因此需要采用其他方式来检测区域设置。

***

## 静态渲染设置

在配置 gt-next 之前，请先参考 [generateStaticParams 文档](https://nextjs.org/docs/app/api-reference/functions/generate-static-params)，确保你的 Next.js 应用已配置为静态生成。

该设置涉及三个关键部分：

### 1. 在配置中启用静态渲染

```js
export default withGTConfig(nextConfig, {
  experimentalEnableSSG: true,
})
```


### 2. 配置中间件

为动态请求配置中间件：

```ts
// proxy.ts（Next.js 16+）或 middleware.ts（Next.js 15 及以下版本）
import { createNextMiddleware } from 'gt-next/middleware'

export default createNextMiddleware();

export const config = {
  matcher: [
    "/((?!api|static|.*\\..*|_next).*)",
  ],
}
```


### 3. 定义静态区域设置检测

创建一个 `getStaticLocale` 函数，用于在静态渲染期间确定区域设置。此函数仅在静态生成期间运行；在 SSR 期间，则使用默认行为 (读取请求头、Cookie 等) 。

#### Next.js 15.5+

```ts
// getStaticLocale.ts
import { locale } from "next/root-params";

export default async function getStaticLocale() {
  return await locale();
}
```


#### Next.js 15.1-15.4

```ts
// getStaticLocale.ts  
import { unstable_rootParams } from "next/server";

export default async function getStaticLocale() {
  return (await unstable_rootParams())?.locale;
}
```

*可以调用 `getStaticRegion`，以在静态渲染期间自定义区域检测。*

***


## 优势

**原生支持 Next.js**：利用 Next.js 内置的根参数系统，兼容静态渲染。

***

## 其他特性

除了静态生成外，此版本还新增了对自定义 [`getLocale()`](/docs/react/nextjs/reference/functions/get-locale) 和 [`getRegion()`](/docs/react/nextjs/reference/functions/get-region) 函数的支持，可在 SSR 和静态渲染环境中进行配置。

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
