# gt-node: General Translation Node.js SDK: withGT
URL: https://generaltranslation.com/ja/docs/node/reference/functions/with-gt.mdx
Docs index: https://generaltranslation.com/llms.txt
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<T>(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` は同期・非同期どちらのコールバックでも動作します。

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
