# 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) — コンテンツの翻訳方法