本番環境と開発環境

本番環境と開発環境の違い

概要

gt-next は、Next.js アプリケーションの実行環境によって動作が異なります。

実行環境は、NODE_ENV 環境変数を確認して判別します。

本番環境での動作

環境変数

本番環境では、gt-nextGT_PROJECT_IDGT_API_KEY の環境変数のみを読み取ります。

APIキーは本番用のもの(先頭が gtx-api-)である必要があります。

開発用のAPIキーを使用している場合、gt-next はエラーを送出します。

翻訳の読み込み動作

本番環境では、デフォルトで gt-next は General Translation の CDN から翻訳を読み込みます。

loadTranslations 関数でローカルの翻訳などのカスタム読み込みを設定している場合は、gt-next はその設定を使用します。

本番環境では、翻訳のホットリロードは無効です。

動的コンテンツに対する <Tx> コンポーネントまたは tx 関数のオンデマンド翻訳は有効ですが、サーバーコンポーネント内に限られます。

開発時の動作

環境変数

gt-nextGT_PROJECT_IDGT_API_KEY の環境変数を受け付けます。

APIキーは、gtx-api- で始まる本番用APIキー、または gtx-dev- で始まる開発用APIキーのいずれかです。

開発環境で本番用APIキーが指定された場合、gt-next は本番環境として動作します。 この場合、翻訳のホットリロードは無効になり、翻訳がないコンポーネントは元のコンテンツをそのままレンダリングします。

翻訳の読み込み動作

開発環境では、gt-next はまず本番環境と同様の方法で翻訳を読み込みます。 読み込まれた翻訳はメモリに保持されます。

デフォルト以外の言語で(useGT<T>、または useTranslations を使用する)コンポーネントをレンダリングする場合、gt-next は次の処理を行います。

  1. 対象コンテンツに有効な保存済み翻訳が見つかった場合は、その翻訳をレンダリングします。
  2. 翻訳が見つからない場合は、General Translation API を使用してコンテンツを動的に翻訳します。
  3. 翻訳後は、その結果をレンダリングし、将来の再利用のためにメモリに保存します。
  4. 翻訳がタイムアウトした場合は、フォールバックとして元のコンテンツをレンダリングします。

当社の API は、開発時の翻訳を短時間内部キャッシュするため、同じ翻訳が再度要求された場合はキャッシュから返されます。

これらの翻訳はプロジェクト単位で分離されており、他のプロジェクトの翻訳と混在することはありません。 さらに、キャッシュは開発セッションごとに固有であるため、キャッシュされた翻訳が本番環境で使用されることはありません。

gt-next は、useGT<T>、または useTranslations を使用するコンポーネントの変更を検出し、当社の API 経由で変更内容を動的に翻訳します。

本番環境と開発環境の API Keys

gt-next における本番環境と開発環境での動作を明確に区別するため、「本番用 API Keys」と「開発用 API Keys」という概念を設けています。

本番用 API Keys

本番用の APIキーは、gtx-api- で始まる APIキーです。

本番用 APIキーが指定されると、gt-next本番時の挙動で説明されているとおりに動作します。

つまり、Next.js アプリを開発モードで実行していても、本番用 APIキーを設定すると、gt-next は本番環境として動作します。 翻訳のホットリロードは無効になり、未翻訳のコンポーネントは元のコンテンツをそのままレンダリングします。

この挙動以外で、gt-next が本番用 APIキーを利用することはありません。

CLI ツールは GT_API_KEY 環境変数を読み取り、本番用 APIキーのみを受け付けます。

CLI ツールは「production」カテゴリで課金およびレート制限を適用します。

開発用 API Keys

開発用 APIキーは、gtx-dev- で始まる APIキーです。

開発用 APIキーが指定されている場合、gt-next開発時の挙動の説明どおりに動作します。

開発用 APIキーを使用する場合、課金およびレート制限は「development」カテゴリとして適用されます。

開発用 APIキーで作成された翻訳は保存されず、本番環境では利用できません。

開発用の翻訳は、本番リリース前にアプリケーションをテストするためのものです。

このガイドはどうでしたか?

本番環境と開発環境