本番と開発

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

概要

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

実行環境は NODE_ENV 環境変数の値で判定します。

本番環境での動作

環境変数

本番環境では、gt-nextGT_PROJECT_IDGT_API_KEY の環境変数のみを参照します。

APIキーは、gtx-api- で始まる本番用の 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 の本番環境と開発環境での挙動を明確に区別できるよう、"Production API Keys" と "Development API Keys" という概念を用意しています。

本番用 API Keys

本番用 API Keys は、gtx-api- で始まる API Keys です。

本番用 API key が指定されると、gt-next本番時の挙動 セクションに記載のとおり動作します。

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

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

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

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

開発用 API Keys

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

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

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

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

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

このガイドはいかがですか?