# General Translation React SDKs (gt-react, gt-next, gt-react-native): Регистрация локалей запроса
URL: https://generaltranslation.com/ru/docs/react/nextjs/registering-request-locales.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как зарегистрировать локаль для обработчиков маршрутов Next.js App Router и обработчиков сгенерированных изображений метаданных с помощью General Translation.

Если в корне есть сегмент `[locale]`, `gt-next` обычно считывает локаль через `next/root-params`. Обработчики маршрутов и обработчики сгенерированных изображений метаданных не могут использовать этот модуль. Считайте локаль из входных данных обработчика, а затем вызовите [`registerLocale`](/docs/react/nextjs/reference/functions/register-locale) перед вызовом любой другой функции `gt-next/server`.

## Зарегистрируйте обработчик маршрута [#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]` извлеките локаль из URL объекта `Request`, заголовков, параметров строки запроса или тела запроса в соответствии с вашим API, а затем зарегистрируйте её таким же образом.

Зарегистрированная локаль будет доступна в [`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`.

Регистрация действует в пределах запроса. Вызовите [`registerLocale`](/docs/react/nextjs/reference/functions/register-locale) один раз: после определения локали и до вызова любой другой серверной функции General Translation.

## 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.
