# General Translation React SDKs (gt-react, gt-next): リクエストロケールを登録する URL: https://generaltranslation.com/ja/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、アイコン、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(
{gt('Welcome')}
); } ``` `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` を一度だけ呼び出してください。 ## 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