# General Translation React SDKs (gt-react, gt-next): 注册请求区域设置 URL: https://generaltranslation.com/zh/docs/react/nextjs/registering-request-locales.mdx --- title: 注册请求区域设置 description: 如何使用 General Translation 为 Next.js App Router 路由处理程序和生成的元数据图像注册区域设置。 related: links: - /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 --- 使用根级 `[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(
{gt('Welcome')}
); } ``` 在 `twitter-image.tsx`、`icon.tsx` 和 `apple-icon.tsx` 中也使用相同的写法。 ## 处理其他入口文件 [#other-entry-points] `generateMetadata` 会接收从根段到当前段的动态路由参数,因此它不像元数据图像处理程序那样受此限制。 生成的 `sitemap.ts`、`robots.ts` 和 `manifest.ts` 文件不会接收路由参数或请求对象。请在生成逻辑中显式选择区域设置,然后在调用 `gt-next/server` 函数之前完成注册。 注册是请求级别的。请在解析出区域设置后、调用任何其他 General Translation 服务器函数之前,调用一次 `registerLocale`。 ## 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