Продакшен и разработка
Отличия между средами продакшена и разработки
Обзор
gt-react ведёт себя по-разному в зависимости от среды, в которой запускается ваше приложение на React.
Среда определяется по значению переменной окружения NODE_ENV.
Поведение в продакшене
Переменные окружения
В продакшн-среде единственной допустимой переменной окружения является GT_PROJECT_ID (или её вариант с префиксом, например NEXT_PUBLIC_GT_PROJECT_ID).
Если ключ API задан через переменную окружения, gt-react выдаст ошибку. Это сделано, чтобы предотвратить утечку ключей API на стороне клиента.
Поведение загрузки переводов
В production-среде провайдер gt-react по умолчанию пытается загружать переводы с CDN General Translation.
Если вы настроили кастомное поведение загрузки, например локальные переводы, через функцию loadTranslations, gt-react будет использовать его.
Горячая перезагрузка переводов отключена, так как это production.
Поведение в режиме разработки
Переменные окружения
Поскольку разработка ведётся локально и недоступна внешним пользователям, gt-react принимает любые переменные окружения General Translation, даже если они начинаются с префикса NEXT_PUBLIC_, VITE_ (или аналогичного).
Поведение загрузки переводов
В режиме разработки провайдер gt-react сначала попытается загрузить переводы тем же способом, что и в продакшене.
Эти переводы загружаются в память.
При рендеринге компонента (который использует useGT, <T> или useTranslations) на языке, отличном от языка по умолчанию, провайдер gt-react выполнит следующее:
- Если обнаружен корректный, сохранённый перевод для данного контента, будет отрендерен этот перевод.
- Если перевод не найден, будет предпринята попытка динамически перевести контент через General Translation API.
- После перевода результат будет отрендерен и сохранён в памяти для последующего использования.
- Если перевод не будет получен из‑за тайм‑аута, будет показан исходный контент.
Наш API также кэширует переводы для разработки на короткое время, поэтому при повторном запросе того же перевода он будет выдан из кэша.
Эти переводы изолируются на уровне проекта, поэтому они не будут смешиваться с переводами из других проектов. Кроме того, кэш уникален для сессий разработки, поэтому закэшированные переводы не используются в продакшене.
gt-react будет отслеживать изменения в компонентах, использующих useGT, <T> или useTranslations, и динамически переводить изменённый контент через наш API.
Production vs Development API Keys
Чтобы различать поведение gt-react в продакшене и в разработке, мы вводим понятия «Production API Keys» и «Development API Keys».
Production API Keys
Ключи Production API — это API‑ключи, начинающиеся с gtx-api-.
При использовании ключа Production API gt-react будет работать так, как описано в разделе Production Behavior.
Это означает, что если вы запускаете React‑приложение в режиме разработки и указываете ключ Production API, gt-react будет вести себя так, как будто приложение работает в продакшене.
Горячая перезагрузка переводов будет отключена, а компоненты без переводов отобразят исходный контент.
Кроме этого, gt-react никак не использует ключ Production API.
Мы просим создавать отдельный production‑ключ API для продакшена, потому что CLI‑инструмент обращается только к ключам в категории Production API.
CLI‑инструмент будет применять биллинг и лимиты запросов в категории «production».
Ключи API для разработки
Ключи API для разработки — это ключи, начинающиеся с gtx-dev-.
При использовании ключа API для разработки gt-react будет работать, как описано в разделе Поведение в режиме разработки.
При использовании ключа API для разработки тарификация и ограничение частоты запросов применяются в категории «development».
Переводы, созданные с использованием ключа API для разработки, не будут сохраняться и не будут доступны в продакшене.
Назначение переводов для разработки — дать вам возможность протестировать приложение перед выпуском в продакшен.
Насколько полезно это руководство?