# react-native: ローカル翻訳の保存
URL: https://generaltranslation.com/ja/docs/react-native/guides/local-tx.mdx
---
title: ローカル翻訳の保存
description: CDN ではなく、翻訳をアプリのバンドル内に保存します
---
{/* 自動生成: 直接編集せず、代わりに content/docs-templates/ 内の template を編集してください。 */}
## ローカル翻訳とは?
ローカル翻訳は、CDN (Content Distribution Network) から取得するのではなく、アプリのバンドル内に保存される翻訳です。ビルドプロセスに `gt translate` コマンドを追加すると、JSON 形式の翻訳が生成されます。最後のステップは、それらの翻訳をアプリ内で使えるように組み込むことです。
これを行う方法は 2 つあります。
1. **アプリのバンドル内** (ローカル) : 生成後の翻訳をアプリのバンドルに保存する
2. **CDN** (デフォルト) : runtime に CDN から翻訳を取得する
デフォルトでは、`gt-react-native` は General Translation の CDN から翻訳を取得します。API を使ってアプリを翻訳すると、翻訳は自動的に CDN に保存されます。
**デフォルトの動作:** GT はデフォルトで CDN を使用します。ローカルストレージに切り替えるのは、その特有の利点が必要な場合だけにしてください。
## トレードオフ
### ローカル翻訳の利点
* **読み込みが速い**: ローカル翻訳はアプリから直接提供されるため、CDN から配信される翻訳よりも速く読み込めます
* **外部サービスに依存しない**: アプリで翻訳を読み込めるかどうかは CDN の稼働状況に左右されません。あるロケールの翻訳が見つからない場合、アプリは自動的にデフォルト言語にフォールバックします
* **オフラインでも動作する**: 翻訳はアプリにバンドルされています
### ローカル翻訳のデメリット
* **バンドルサイズの増加**: ローカル翻訳を使うとアプリのバンドルサイズが大きくなり、初回読み込みが遅くなる可能性があります
* **コンテンツ管理**: 翻訳を編集するたびに、新しい翻訳を反映したアプリを再デプロイする必要があります
## セットアップ
### ステップ1: loadTranslations関数を作成
以下の内容で `./src` 配下に `loadTranslations.[js|ts]` ファイルを追加します。
```ts title="src/loadTranslations.ts"
export default async function loadTranslations(locale: string) {
const t = await import(`./_gt/${locale}.json`);
return t.default;
}
```
### ステップ 2: GTProvider を設定する
[``](/docs/react-native/api/components/gtprovider) コンポーネントの props として `loadTranslations` を渡します。
```tsx title="src/App.tsx"
import { GTProvider } from 'gt-react-native';
import loadTranslations from './loadTranslations';
export default function App() {
return (
);
}
```
### ステップ3: CLI の設定
設定コマンドを実行し、ローカルストレージを選択します。
```bash
npx gt configure
```
プロンプトが表示されたら、次のように選択します。
* **CDN に保存しますか?** "No" を選択
* **翻訳ディレクトリ:** CLI は自動的に `./src/_gt` を使用します
または、`gt.config.json` ファイルを手動で設定してローカル翻訳を使用することもできます。詳しくは、[CLI 設定ドキュメント](/docs/cli/reference/config)を参照してください。
### ステップ4: 翻訳を生成する
これで、translate コマンドを実行すると、翻訳が自動的にダウンロードされ、コードベースに組み込まれます。
```bash
npx gt translate
```
翻訳は `src/_gt/` に保存され、アプリに含まれます。
## ビルドとの統合
### React のビルドプロセス
ビルドスクリプトに翻訳生成を追加します:
```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...>
```
### インポートパスのエラー
loadTranslations 関数のディレクトリ構造に合わせてください:
```ts
// ❌ パスが間違っています
const t = await import(`../translations/${locale}.json`);
// ✅ src/_gt の正しいパス
const t = await import(`./_gt/${locale}.json`);
```
### バンドルサイズが大きい場合
多くの言語に対応するアプリでは、コード分割を検討してください。
```ts
// 必要なときのみ翻訳を読み込む
export default async function loadTranslations(locale: string) {
// ロケールがアクティブな場合のみ読み込む
if (locale === getCurrentLocale()) {
const translations = await import(`./_gt/${locale}.json`);
return translations.default;
}
return {};
}
```
ローカルストレージは、翻訳が安定していて頻繁な更新が不要なアプリに最適です。
## 次のステップ
* [言語ガイド](/docs/react-native/guides/languages) - 対応言語を設定する