# gt-next: General Translation Next.js SDK: ローカル翻訳の保存
URL: https://generaltranslation.com/ja/docs/next/guides/local-tx.mdx
---
title: ローカル翻訳の保存
description: CDNを使わず、翻訳をアプリのバンドルに含めて保存します
---
## ローカル翻訳とは?
ローカル翻訳は、CDN (Content Distribution Network) から取得するのではなく、アプリのバンドル内に保存される翻訳です。ビルドプロセスに `gt translate` コマンドを追加すると、JSON 形式の翻訳が生成されます。最後のステップは、それらの翻訳をアプリ内で使えるように組み込むことです。
これを行う方法は 2 つあります。
1. **アプリのバンドル内** (ローカル) : 生成後の翻訳をアプリのバンドルに保存する
2. **CDN** (デフォルト) : runtime に CDN から翻訳を取得する
デフォルトでは、`gt-next` は General Translation の CDN から翻訳を取得します。API を使ってアプリを翻訳すると、翻訳は自動的に CDN に保存されます。
**デフォルトの動作:** GT はデフォルトで CDN ストレージを使用します。ローカルストレージに切り替えるのは、その特有の利点が必要な場合だけにしてください。
## トレードオフ
### ローカル翻訳の利点
* **読み込み時間の短縮**: ローカル翻訳はアプリから直接配信されるため、CDN経由で配信される翻訳よりも高速に読み込まれます
* **外部サービスに依存しない**: アプリで翻訳を読み込めるかどうかがCDNの稼働状況に左右されることはありません。あるロケールの翻訳が見つからない場合は、アプリが自動的にデフォルト言語にフォールバックします
* **オフラインでも動作**: 翻訳はアプリにバンドルされています
### ローカル翻訳のデメリット
* **バンドルサイズの増加**: ローカル翻訳を使うとアプリのバンドルサイズが大きくなり、初回読み込みが遅くなる可能性があります
* **コンテンツ管理**: 翻訳を編集するたびに、新しい翻訳を含めてアプリを再デプロイする必要があります
## セットアップ
### ステップ 1: 読み込み関数を作成する
`./src` 配下に、以下の内容で `loadTranslations.[js|ts]` ファイルを追加します。
```ts title="src/loadTranslations.ts"
export default async function loadTranslations(locale: string) {
const translations = await import(`../public/_gt/${locale}.json`);
return translations.default;
}
```
[`withGTConfig`](/docs/next/api/config/with-gt-config) は、`src/` ディレクトリまたはプロジェクトルートにある `loadTranslations.[js|ts]` ファイルを自動的に検出します。
### ステップ 2: CLI を設定
設定コマンドを実行し、ローカルストレージを選択します。
```bash
npx gt configure
```
プロンプトが表示されたら:
* **CDN に保存しますか?** `No` を選択します
* **翻訳ディレクトリ:** `./public/_gt` を入力します
または、`gt.config.json` ファイルを手動で設定してローカル翻訳を使用することもできます。詳しくは、[CLI Configuration docs](/docs/cli/reference/config)を参照してください。
### ステップ 3: 翻訳を生成する
これで、translate コマンドを実行すると、翻訳が自動的にダウンロードされ、コードベースに組み込まれます。
```bash
npx gt translate
```
翻訳は `public/_gt/` に保存され、アプリにバンドルされます。
## ビルドへの統合
### Next.js のビルドプロセス
ビルドスクリプトに翻訳生成を追加します。
```json
{
"scripts": {
"build": "npx gt translate && <...YOUR_BUILD_COMMAND...>"
}
}
```
### CI/CD パイプライン
```yaml
# .github/workflows/deploy.yml
- name: Generate Translations
run: npx gt translate
- name: Build Application
run: npm run build
```
## よくある問題
### 翻訳ファイルが見つからない
ビルド前に翻訳が生成されていることを確認してください。
```bash
# ❌ 翻訳なしでビルド
<...YOUR_BUILD_COMMAND...>
# ✅ 先に翻訳を生成する
npx gt translate && <...YOUR_BUILD_COMMAND...>
```
### インポートパスのエラー
`読み込み` 関数では、ディレクトリ構造に合わせてください。
```ts
// ❌ 誤ったパス
const t = await import(`../translations/${locale}.json`);
// ✅ public/_gt の正しいパス
const t = await import(`../public/_gt/${locale}.json`);
```
### バンドルサイズが大きい場合
多数の言語を扱うアプリでは、コード分割を検討してください。
```ts
// 必要なときのみ翻訳を読み込む
export default async function loadTranslations(locale: string) {
// ロケールがアクティブな場合のみ読み込む
if (locale === getCurrentLocale()) {
const translations = await import(`../public/_gt/${locale}.json`);
return translations.default;
}
return {};
}
```
ローカルストレージは、翻訳内容が安定していて頻繁な更新が不要なアプリに最適です。
## 次のステップ
* [Middleware ガイド](/docs/next/guides/middleware) - 言語の検出とルーティング
* [Languages ガイド](/docs/next/guides/languages) - サポートする言語を設定
* API リファレンス: