# gt-react: General Translation React SDK: Продакшен и среда разработки URL: https://generaltranslation.com/ru/docs/react/concepts/environments.mdx --- title: Продакшен и среда разработки description: Различия между продакшеном и средой разработки --- {/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого изменяйте шаблон в content/docs-templates/. */} ## Обзор Поведение `gt-react` зависит от среды, в которой выполняется ваше React-приложение. Среда определяется по переменной окружения `NODE_ENV`. ## Поведение в продакшене ### Переменные окружения В production допускается только переменная окружения `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` сначала попытается загрузить переводы так же, как в production. Эти переводы загружаются в память. При рендеринге компонента (использующего `useGT`, `` или `useTranslations`) на языке, отличном от языка по умолчанию, провайдер `gt-react` выполнит следующие действия: 1. Если он обнаружит действительный сохранённый перевод для данного содержимого, то отрендерит его. 2. Если перевод не найден, он попытается динамически перевести содержимое через API General Translation. 3. После перевода результат будет отрендерен и сохранён в памяти для дальнейшего использования. 4. Если при переводе произойдёт тайм-аут, он вернётся к исходному варианту и отрендерит исходное содержимое. Наш API также внутренне кэширует переводы в режиме разработки на короткое время, поэтому, если тот же перевод будет запрошен снова, он будет возвращён из кэша. Эти переводы изолированы на уровне проекта, поэтому они не будут смешиваться с переводами из других проектов. Кроме того, кэш уникален для сессий разработки, поэтому кэшированные переводы не будут использоваться в production. `gt-react` будет отслеживать изменения в компонентах, использующих `useGT`, `` или `useTranslations`, и динамически переводить изменённое содержимое через наш API. ## Production API-ключи и API-ключи для разработки [#api-keys] Чтобы было проще различать поведение `gt-react` в продакшен- и девелоперской среде, мы используем понятия «Production API-ключи» и «API-ключи для разработки». ### Production API-ключи Production API-ключи — это API-ключи, начинающиеся с `gtx-api-`. Если указан Production API-ключ, `gt-react` будет вести себя так, как описано в разделе [Поведение в продакшене](#production-behavior). Это значит, что если вы запускаете React-приложение в режиме разработки, но указываете Production API-ключ, `gt-react` будет работать так, как будто приложение запущено в production. Горячая перезагрузка переводов будет отключена, а компоненты без переводов будут отображать исходный контент. Помимо этого, `gt-react` никак не использует Production API-ключ. Мы просим создавать отдельный Production API-ключ для выкладки в production, потому что CLI-инструмент работает только с Production API-ключами. CLI-инструмент применяет тарификацию и ограничение скорости запросов по категории "production". ### API-ключи для разработки API-ключи для разработки — это API-ключи, начинающиеся с `gtx-dev-`. Если указан API-ключ для разработки, `gt-react` будет вести себя так, как описано в разделе [Поведение при разработке](#development-behavior). При использовании API-ключа для разработки тарификация и ограничение частоты запросов применяются по категории "development". Переводы, созданные с помощью API-ключа для разработки, не сохраняются и недоступны для использования в production. Переводы для разработки нужны, чтобы вы могли протестировать приложение перед выпуском в production.