本番環境と開発環境
本番環境と開発環境の違い
概要
gt-next
は、あなたの Next.js アプリケーションが実行されている環境によって異なる動作をします。
この環境は、NODE_ENV
環境変数を確認することで検出されます。
本番環境での挙動
環境変数
本番環境では、gt-next
は GT_PROJECT_ID
と GT_API_KEY
の環境変数のみを読み取ります。
APIキーは gtx-api-
で始まる本番用APIキーである必要があります。
開発用APIキーを使用している場合、gt-next
はエラーをスローします。
翻訳の読み込み挙動
本番環境では、gt-next
はデフォルトで General Translation CDN から翻訳を読み込もうとします。
loadTranslations
関数を使ってローカル翻訳などのカスタム翻訳読み込み挙動を設定している場合は、gt-next
はそちらを使用します。
本番環境のため、翻訳のホットリロードは無効化されています。
<Tx>
コンポーネントや tx()
関数を使った動的コンテンツのオンデマンド翻訳は有効ですが、サーバーコンポーネント内でのみ利用可能です。
開発時の動作
環境変数
gt-next
はGT_PROJECT_ID
とGT_API_KEY
の環境変数を受け取ります。
APIキーは、gtx-api-
で始まるProduction APIキーか、gtx-dev-
で始まるDevelopment APIキーのいずれかです。
開発時にproduction APIキーが提供された場合、gt-next
は本番環境にいるかのように動作します。
これは、翻訳のホットリロードが無効になり、翻訳のないコンポーネントは元のコンテンツをレンダリングすることを意味します。
翻訳読み込み動作
開発時、gt-next
はまず本番環境と同じ方法で翻訳の読み込みを試行します。
これらの翻訳はメモリに読み込まれます。
デフォルト以外の言語でコンポーネント(useGT()
、<T>
、またはuseTranslations()
を使用)をレンダリングする際、gt-next
は以下を実行します:
- 指定されたコンテンツに対して有効で保存された翻訳を検出した場合、その翻訳をレンダリングします。
- 翻訳が見つからない場合、General Translation APIを介してコンテンツを動的に翻訳しようとします。
- 翻訳後、翻訳がレンダリングされ、将来の使用のためにメモリに保存されます。
- 翻訳がタイムアウトした場合、フォールバックして元のコンテンツをレンダリングします。
私たちのAPIは開発翻訳を短期間内部的にキャッシュするため、同じ翻訳が再度リクエストされた場合、キャッシュから提供されます。
これらの翻訳はプロジェクトレベルで分離されているため、他のプロジェクトの翻訳と混同されることはありません。 さらに、キャッシュは開発セッション固有であるため、キャッシュされた翻訳は本番環境では使用されません。
gt-next
はuseGT()
、<T>
、またはuseTranslations()
を使用するコンポーネントの変更を検出し、私たちのAPIを介して変更されたコンテンツを動的に翻訳します。
本番用と開発用のAPIキー
gt-next
の本番環境と開発環境での動作を区別しやすくするために、「本番用APIキー」と「開発用APIキー」という概念があります。
本番用APIキー
本番用APIキーは、gtx-api-
で始まるAPIキーです。
本番用APIキーが指定されている場合、gt-next
は 本番環境での動作 セクションで説明されている通りに動作します。
つまり、Next.jsアプリケーションを開発モードで実行していても、本番用APIキーを指定すると、gt-next
は本番環境と同じように動作します。
翻訳のホットリロードは無効になり、翻訳がないコンポーネントは元の内容を表示します。
この動作以外で、gt-next
が本番用APIキーを利用することはありません。
CLIツールは GT_API_KEY
環境変数を読み取り、本番用APIキーのみを受け付けます。
CLIツールは「production」カテゴリを使って課金およびレート制限を適用します。
開発用APIキー
開発用APIキーは、gtx-dev-
で始まるAPIキーです。
開発用APIキーが指定されている場合、gt-next
は 開発環境での動作 セクションで説明されている通りに動作します。
開発用APIキーを使用している場合、「development」カテゴリを使って課金およびレート制限が適用されます。
開発用APIキーで作成された翻訳は保存されず、本番環境で利用することはできません。
開発用翻訳の目的は、本番環境にリリースする前にアプリケーションをテストできるようにすることです。
このガイドはいかがですか?