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