# gt-node: General Translation Node.js SDK: クイックスタート
URL: https://generaltranslation.com/ja/docs/node/quickstart.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: General Translationの`gt-node`ライブラリをインストールして、最初のNode.jsサービスを翻訳します。

`gt-node`は、Node.jsのサーバーやサービスで文字列を翻訳するためのライブラリです。初期化は一度だけ行い、受信した各リクエストにロケールを紐付けて、handler内で文字列を翻訳します。

ExpressやFastifyのAPIなどのバックエンドサービスでは`gt-node`を使用してください。Reactアプリでは[`gt-react`](/docs/react/react-quickstart)、Next.jsでは[`gt-next`](/docs/react/nextjs-quickstart)を使用してください。

*注: `gt-node`を使用するにはNode.js 18以降が必要です。リクエストごとのロケールの紐付けには、`node:async_hooks`の`AsyncLocalStorage`を使用します。*

## gt-node でできること [#what-it-does]

`gt-node` では、次のことができます。

* ハンドラー内で使うローカルな文字列向けの、[`getGT`](/docs/node/reference/functions/get-gt) による**文字列翻訳**。
* 共有定数やエラー向けの、[`msg`](/docs/node/reference/functions/msg) と [`getMessages`](/docs/node/reference/functions/get-messages) による**登録済みメッセージ**。
* 動的コンテンツ向けの、[`tx`](/docs/node/reference/functions/tx) による**ランタイム翻訳**。
* [`withGT`](/docs/node/reference/functions/with-gt) による**リクエスト単位のロケール**のバインディングと、リクエストのロケールを検出するためのヘルパー。

## クイックスタート [#quickstart]

ライブラリをインストールし、初期化して、リクエストごとにロケールをバインドし、文字列を翻訳します。

### 1. `gt-node` をインストール

依存関係として `gt-node` と Express を、開発依存関係として [`gt` CLI](/docs/cli/quickstart) をインストールします。

<Tabs items={['npm', 'yarn', 'bun', 'pnpm']}>
  <Tab value="npm">
    ```bash
    npm install gt-node express && npm install gt --save-dev
    ```
  </Tab>

  <Tab value="yarn">
    ```bash
    yarn add gt-node express && yarn add --dev gt
    ```
  </Tab>

  <Tab value="bun">
    ```bash
    bun add gt-node express && bun add --dev gt
    ```
  </Tab>

  <Tab value="pnpm">
    ```bash
    pnpm add gt-node express && pnpm add --save-dev gt
    ```
  </Tab>
</Tabs>

*メモ: 以下のサーバーコードでは ES module の `import` 構文を使用しています。Node.js で実行できるように、`package.json` で `"type": "module"` を設定してください。*

### 2. ライブラリを初期化する

プロジェクト ID と開発用 API キーを Node.js プロセスで使用できるようにします。

```bash
export GT_PROJECT_ID="your-project-id"
export GT_DEV_API_KEY="gtx-dev-..."
```

起動時に、リクエストを処理する前に [`initializeGT`](/docs/node/reference/functions/initialize-gt) を一度だけ呼び出します。ロケールは直接渡してください。認証情報のフィールドを省略した場合、`gt-node` は環境変数から `GT_PROJECT_ID`、`GT_API_KEY`、`GT_DEV_API_KEY` を読み込みます。`gt.config.json` は自動的に読み込みません。

```ts title="server.js"
import { initializeGT } from 'gt-node';

initializeGT({
  defaultLocale: 'en',
  locales: ['en', 'es', 'fr'],
});
```

### 3. リクエストのロケールを関連付ける

各リクエストを [`withGT`](/docs/node/reference/functions/with-gt) でラップし、翻訳関数が対象のロケールを認識できるようにします。検出には、`Accept-Language` header から判定する [`getRequestLocale`](/docs/node/reference/functions/get-request-locale) を使用します。

```js title="server.js"
import express from 'express';
import { withGT, getRequestLocale } from 'gt-node';

const app = express();
app.use((req, res, next) => withGT(getRequestLocale(req), () => next()));
```

### 4. 文字列を翻訳する

ハンドラー内で [`getGT`](/docs/node/reference/functions/get-gt) を await し、リクエストのロケールに対応する翻訳関数を取得してから、文字列を翻訳します。値の埋め込みには ICU プレースホルダーを使用します。

```js title="server.js"
import { getGT } from 'gt-node';

app.get('/api/greeting', async (req, res) => {
  const gt = await getGT();
  res.json({ message: gt('Hello, {name}!', { name: 'Alice' }) });
});

app.listen(3000, () => console.log('Listening on http://localhost:3000'));
```

### 5. 実行して確認する

手順2〜4のスニペットを1つの`server.js`ファイルにまとめてから、サーバーを起動します。翻訳を生成する前は、ハンドラーはソース文字列を返します。これにより、サービスが正しく設定されていることを確認できます。

```bash
node server.js
```

別のターミナルで、リクエストを送信します。

```bash
curl http://localhost:3000/api/greeting
```

```json title="Output"
{"message":"Hello, Alice!"}
```

### 6. 翻訳を生成する

本番環境にデプロイする前に CLI を実行し、ランタイムで翻訳を利用できるようにします。

```bash
npx gt translate
```

*注: [`gt translate`](/docs/cli/reference/commands/translate) は `gt.config.json` を読み込み、プロジェクト ID と API キーが必要です。これらを作成するには、先に [`npx gt init`](/docs/cli/reference/commands/init) を実行してください。*

 ([`getGT`](/docs/node/reference/functions/get-gt)、[`msg`](/docs/node/reference/functions/msg)、[`tx`](/docs/node/reference/functions/tx) の使い分けについては [文字列の翻訳](/docs/node/guides/translating-strings) を、認証情報と配信については [gt-node の設定](/docs/node/guides/configuring) を参照してください) 。

## Next steps

- /docs/node/guides/translating-strings
- /docs/node/guides/detecting-locale
- /docs/node/guides/configuring
- /docs/node/guides/storing-translations

## Sitemap

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