# General Translation React SDKs (gt-react, gt-next, gt-react-native): リクエストロケールを登録する
URL: https://generaltranslation.com/ja/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、アイコン、Apple アイコンの各ファイルも、ルートの `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` は、ルートから現在のセグメントまでの動的な route param を受け取るため、メタデータ画像ハンドラーのような制約はありません。

生成された `sitemap.ts`、`robots.ts`、`manifest.ts` ファイルには、route param もリクエストオブジェクトも渡されません。生成ロジック内でロケールを明示的に選択し、`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.
