# node: ローカル翻訳の保存
URL: https://generaltranslation.com/ja/docs/node/guides/local-tx.mdx
---
title: ローカル翻訳の保存
description: CDN から取得する代わりに、訳文をアプリの bundle に保存します
---
## ローカル翻訳とは?
デフォルトでは、`gt-node` は runtime に General Translation CDN から訳文を取得します。ローカル翻訳を使うと、翻訳ファイルをアプリに直接バンドルできるため、外部へのリクエストは不要です。
**デフォルトの動作:** GT はデフォルトで CDN ストレージを使用します。ローカルストレージに切り替えるのは、その固有の利点が必要な場合だけにしてください。
## トレードオフ
### ローカル翻訳の利点
* **レスポンスが速い**: runtime に翻訳を取得するためのネットワークリクエストが不要
* **外部サービスに依存しない**: CDN の可用性に左右されず、アプリが動作
* **オフラインで動作する**: 翻訳はデプロイアーティファクトの一部
### ローカル翻訳の欠点
* **バンドルサイズの増加**: サポートするロケールが増えるほど、デプロイサイズも大きくなります
* **更新には再デプロイが必要**: 訳文を変更するたびに、新しいデプロイが必要です
## セットアップ
### ステップ 1: 読み込み関数を作成する
ロケールを受け取り、対応する翻訳用 JSON ファイルを読み込む関数を記述します。
```js title="loadTranslations.js"
import { readFile } from 'fs/promises';
import path from 'path';
export default async function loadTranslations(locale) {
const filePath = path.join(process.cwd(), 'translations', `${locale}.json`);
const data = await readFile(filePath, 'utf-8');
return JSON.parse(data);
}
```
### ステップ2: `initializeGT` に渡す
```js title="server.js"
import { initializeGT } from 'gt-node';
import loadTranslations from './loadTranslations.js';
initializeGT({
defaultLocale: 'en',
locales: ['en', 'es', 'fr', 'ja'],
projectId: process.env.GT_PROJECT_ID,
loadTranslations,
});
```
### ステップ 3: CLI を設定する
設定コマンドを実行し、ローカルストレージを選択します:
```bash
npx gt configure
```
プロンプトが表示されたら:
* **CDN に保存しますか?** 「No」を選択します
* **訳文ディレクトリ:** `./translations` を入力します
### ステップ 4: 翻訳を生成する
```bash
npx gt translate
```
これにより、翻訳ファイルが `translations/` ディレクトリにダウンロードされます。
## build との連携
訳文を常に最新に保てるよう、build スクリプトに訳文生成を追加します:
```json title="package.json"
{
"scripts": {
"build": "npx gt translate && "
}
}
```
### CI/CD パイプライン
```yaml title=".github/workflows/deploy.yml"
- name: Generate Translations
run: npx gt translate
- name: Build Application
run: npm run build
```
## よくある問題
### 翻訳ファイルが見つからない
build の前に必ず翻訳を生成してください:
```bash
# ❌ 翻訳なしでビルド
node server.js
# ✅ 先に翻訳を生成する
npx gt translate && node server.js
```
### ファイルパスのエラー
読み込み関数内のパスが、CLI の出力ディレクトリと一致していることを確認してください。
```js
// ❌ パスが間違っています
const filePath = path.join(process.cwd(), 'public', `${locale}.json`);
// ✅ 設定済みのディレクトリに合わせる
const filePath = path.join(process.cwd(), 'translations', `${locale}.json`);
```
ローカルストレージは、翻訳内容が安定していて頻繁な更新が不要なアプリに最適です。
## 次のステップ
* [CLI `translate` コマンド](/docs/cli/translate) — 翻訳生成のリファレンス
* [CLI 設定](/docs/cli/reference/config) — 出力ディレクトリとストレージモードを設定
* [文字列翻訳パターン](/docs/node/guides/strings) — コンテンツの翻訳方法