# General Translation React SDKs (gt-react, gt-next, gt-react-native): 注册请求区域设置
URL: https://generaltranslation.com/zh/docs/react/nextjs/registering-request-locales.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 如何使用 General Translation 为 Next.js App Router 路由处理程序和生成的元数据图像注册区域设置。

使用根级 `[locale]` 段时，`gt-next` 通常会通过 `next/root-params` 读取区域设置。路由处理程序和生成的元数据图像处理程序无法使用该模块。请从处理程序的输入中读取区域设置，然后在调用任何其他 `gt-next/server` 函数之前，先调用 [`registerLocale`](/docs/react/nextjs/reference/functions/register-locale)。

## 注册路由处理函数 [#route-handlers]

对于位于 `app/[locale]` 下的处理函数，请从 `params` 中读取区域设置：

```ts title="app/[locale]/api/greeting/route.ts"
import { getGT, registerLocale } from 'gt-next/server';

export async function GET(
  _request: Request,
  { params }: { params: Promise<{ locale: string }> },
) {
  const { locale } = await params;
  registerLocale(locale);

  const gt = await getGT();
  return Response.json({ greeting: gt('Welcome') });
}
```

对于位于 `[locale]` 之外的 处理程序，请根据你的 API，从 `Request` 的 URL、请求头、查询参数或请求体中确定区域设置，然后以相同方式注册它。

在该请求的后续处理过程中，已注册的区域设置可供 [`getGT`](/docs/react/nextjs/reference/functions/get-gt)、[`getLocale`](/docs/react/nextjs/reference/functions/get-locale)、[`getTranslations`](/docs/react/nextjs/reference/functions/get-translations)、[`getMessages`](/docs/react/nextjs/reference/functions/get-messages) 以及其他 `gt-next/server` 函数使用。

## 注册元数据图像处理程序 [#metadata-images]

生成的 Open Graph、Twitter、icon 和 Apple icon 文件也会接收路由 `params`：

```tsx title="app/[locale]/opengraph-image.tsx"
import { ImageResponse } from 'next/og';
import { getGT, registerLocale } from 'gt-next/server';

export default async function Image({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  registerLocale(locale);

  const gt = await getGT();
  return new ImageResponse(<div>{gt('Welcome')}</div>);
}
```

在 `twitter-image.tsx`、`icon.tsx` 和 `apple-icon.tsx` 中也使用相同的写法。

## 处理其他入口文件 [#other-entry-points]

`generateMetadata` 会接收从根段到当前段的动态路由参数，因此它不像元数据图像处理程序那样受此限制。

生成的 `sitemap.ts`、`robots.ts` 和 `manifest.ts` 文件不会接收路由参数或请求对象。请在生成逻辑中显式选择区域设置，然后在调用 `gt-next/server` 函数之前完成注册。

注册是请求级别的。请在解析出区域设置后、调用任何其他 General Translation 服务器函数之前，调用一次 [`registerLocale`](/docs/react/nextjs/reference/functions/register-locale)。

## Next steps

- /docs/react/nextjs/reference/functions/register-locale
- /docs/react/nextjs/app-router-middleware
- /docs/react/nextjs/reference/functions/get-locale
- /docs/react/nextjs/reference/functions/get-gt

## Sitemap

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