# gt-node: General Translation Node.js SDK: withGT URL: https://generaltranslation.com/ja/docs/node/reference/functions/with-gt.mdx --- title: withGT description: リクエストの間だけロケールをバインドし、General Translation 関数がそのロケールに基づいて解決されるようにします。withGT の API リファレンス。 --- コールバックをラップし、翻訳関数にロケールのコンテキストを提供します。Node.js サーバーでは、通常、リクエストごとに異なるロケールの異なるユーザーを処理するため、`withGT` はコールバック内で呼び出されるすべての General Translation 関数のロケールを設定します。 ## 概要 [#overview] ロケールと関数を指定して `withGT` を呼び出します。コールバック内で [`getGT`](/docs/node/reference/functions/get-gt)、[`getMessages`](/docs/node/reference/functions/get-messages)、[`getTranslations`](/docs/node/reference/functions/get-translations)、[`tx`](/docs/node/reference/functions/tx)、および [`getLocale`](/docs/node/reference/functions/get-locale) を呼び出すと、いずれもそのロケールを基準に解決されます。 ```ts import { withGT } from 'gt-node'; app.get('/api/greeting', (req, res) => { withGT(req.locale, () => { // ここ内の翻訳関数は req.locale を使用します }); }); ``` シグネチャ: ```ts withGT(locale: string, fn: () => T): T ``` *注: `withGT` は内部で async local storage を使用し、ロケールを現在のリクエストに紐づけます。このコンテキストが、同時に処理される他のリクエストに漏れることはありません。* ## 仕組み [#how-it-works] * **ロケールのスコープ。** ロケールが適用されるのは `fn` の実行中のみです。並行する各リクエストでも、それぞれ独自のロケールが保持されます。 * **ロケールの解決。** 渡されたロケールは、設定された `locales` に基づいて解決されます。サポートされていない値が指定された場合は、`defaultLocale` にフォールバックします。 * **同期・非同期の両方に対応。** `fn` は同期関数でも非同期関数でも使用でき、`withGT` は `fn` の戻り値をそのまま返します。 * **setup が必要です。** [`initializeGT`](/docs/node/reference/functions/initialize-gt) は `withGT` より前に実行する必要があり、そうでない場合はエラーがスローされます。 ## パラメータ [#parameters] | パラメータ | 説明 | 型 | 任意 | デフォルト | | ------------------- | --------------------- | --------- | --- | ----- | | [`locale`](#locale) | コールバック にバインドするロケール。 | `string` | いいえ | — | | [`fn`](#fn) | ロケールのスコープ内で実行する関数。 | `() => T` | いいえ | — | ### `locale` [#locale] **Type** `string` · **必須** コールバック内の翻訳で使用する[ロケールコード](/docs/platform/core/reference/utility-functions/locales/is-valid-locale) (例: `'es'`、`'fr-CA'`) です。 ### `fn` [#fn] **Type** `() => T` · **必須** 指定されたロケールコンテキストで実行されるコールバックです。同期・非同期のいずれにも対応します。 ## 戻り値 [#returns] **型** `T` コールバック関数 `fn` の戻り値。 ## 例 [#examples] ```ts title="server.js" // Expressミドルウェア import express from 'express'; import { initializeGT, withGT, getGT } from 'gt-node'; initializeGT({ defaultLocale: 'en', locales: ['en', 'es', 'fr'], projectId: process.env.GT_PROJECT_ID, }); const app = express(); app.use((req, res, next) => { const locale = req.headers['accept-language']?.split(',')[0] || 'en'; withGT(locale, () => { next(); }); }); app.get('/api/greeting', async (req, res) => { const gt = await getGT(); res.json({ message: gt('Hello, world!') }); }); ``` ```ts title="handler.js" // 非同期ハンドラーのラップ import { withGT, getGT } from 'gt-node'; export async function handleRequest(locale) { return withGT(locale, async () => { const gt = await getGT(); return gt('Welcome to our app!'); }); } ``` ## メモ [#notes] * [`initializeGT`](/docs/node/reference/functions/initialize-gt) は、`withGT` を使用する前に呼び出しておく必要があります。そうしないとエラーがスローされます。 * ロケールコンテキストはコールバック内に限定され、同時実行中のほかのリクエストに漏れることはありません。 * `withGT` は同期・非同期どちらのコールバックでも動作します。