# General Translation React SDKs (gt-react, gt-next): Настройка General Translation URL: https://generaltranslation.com/ru/docs/react/guides/configuring.mdx --- title: Настройка General Translation description: "Как настроить General Translation в React: это руководство охватывает инициализацию, провайдер, учетные данные и доставку переводов в React, Next.js, TanStack Start и React Native." related: links: - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/managing-locales - /docs/react/guides/storing-translations --- Для React с серверным рендерингом и каждой интеграции с фреймворком нужны настройка и `GTProvider`, который предоставляет переводы вашим компонентам. React SPA инициализируются напрямую через `initializeGTSPA`; для такой настройки следуйте руководству [Быстрый старт React SPA](/docs/react/react-spa-quickstart). *Примечание: `gt-react`, `gt-tanstack-start` и `gt-react-native` не читают `gt.config.json` автоматически — импортируйте его и передайте его поля в вызов инициализации. В Next.js плагин `withGTConfig` сам считывает `gt.config.json`.* ## Инициализируйте библиотеку [#initialize] Настройте General Translation один раз — до первого рендера. Вызовите [`initializeGT`](/docs/react/reference/config#initialize) один раз в модуле, который загружается и на сервере, и на клиенте. Фреймворк определяет локаль запроса и передаёт соответствующие переводы во время серверного рендеринга. ```tsx title="src/routes/root.tsx" import { initializeGT } from 'gt-react'; import gtConfig from '../../gt.config.json'; const loadTranslations = (locale: string) => import(`../_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); ``` Колбэки [`loadTranslations`](/docs/react/reference/functions/load-translations) и [`loadDictionary`](/docs/react/reference/functions/load-dictionary), учётные данные и конфигурация локали — всё это передаётся в `initializeGT`, а не в `GTProvider`. В Next.js нет отдельного вызова инициализации. Добавьте плагин `withGTConfig` в `next.config.ts`; он считывает `gt.config.json` и настраивает переводы во время сборки и обработки запросов. ```ts title="next.config.ts" import { withGTConfig } from 'gt-next/config'; const nextConfig = {}; export default withGTConfig(nextConfig, { // такие параметры, как `dictionary`, `loadTranslationsPath` и переопределения локали }); ``` Вызовите `initializeGT` один раз при запуске сервера и клиента, передав вашу конфигурацию через оператор расширения. ```tsx import { initializeGT } from 'gt-tanstack-start'; import gtConfig from '../gt.config.json'; const loadTranslations = (locale: string) => import(`./_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); ``` Используйте `parseLocale` из `gt-tanstack-start` в серверной функции, чтобы определить локаль запроса по cookie-файлам и заголовку `accept-language`. Вызовите `initializeGT` один раз при запуске приложения, передав вашу конфигурацию через оператор расширения. ```tsx import { initializeGT } from 'gt-react-native'; import gtConfig from '../gt.config.json'; const loadTranslations = (locale: string) => import(`./_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); ``` ## Добавьте провайдер [#provider] Оберните приложение в `GTProvider`, чтобы компоненты могли получать переводы. Загрузите переводы для активной локали на сервере, а затем передайте оба значения в провайдер. Точный API загрузчика зависит от вашего фреймворка. ```tsx title="src/routes/root.tsx" import { GTProvider, getTranslationsSnapshot, parseLocale } from 'gt-react'; export async function loadRoot(request: Request) { const locale = parseLocale(request); return { locale, translations: await getTranslationsSnapshot(locale), }; } export function Root({ locale, translations, children }) { return ( {children} ); } ``` Провайдер также принимает `region` и `enableI18n` (по умолчанию `true`). Когда `enableI18n` равно `false` или активная локаль совпадает с локалью по умолчанию, содержимое отображается на исходном языке. Оберните корневой layout в [``](/docs/react/reference/components/gt-provider). Он получает локаль запроса и переводы из плагина, поэтому пропсы `locale` и `translations` ему не нужны. ```tsx title="app/layout.tsx" import { GTProvider, useLocale } from 'gt-next'; export default function RootLayout({ children }: { children: React.ReactNode }) { const locale = useLocale(); return ( {children} ); } ``` Передайте активную `locale` и `translations` для неё. Оба параметра обязательны. ```tsx import { GTProvider, getTranslationsSnapshot } from 'gt-tanstack-start'; const translations = await getTranslationsSnapshot(locale); ; ``` Оберните приложение в ``. Он сам загружает переводы для активной локали, поэтому `translations` не требуется; `locale` необязателен и по умолчанию берётся из локали устройства. ```tsx import { GTProvider } from 'gt-react-native'; ; ``` **Изменено в v11 (React):** провайдер `gt-react` больше не принимает `config`, `loadTranslations` или учётные данные через пропсы. Теперь эта настройка задаётся при вызове инициализации; провайдер получает только готовые `locale` и `translations`. Все параметры провайдера и инициализации см. в [справочнике по конфигурации](/docs/react/reference/config). ## Добавьте учетные данные [#credentials] Для доставки переводов и возможностей разработки используются идентификатор проекта и API-ключ, заданные через переменные окружения. Передайте идентификатор проекта и API-ключ для разработки через принятую в вашем фреймворке схему клиентских переменных окружения, а затем передайте их в `initializeGT`. Никогда не раскрывайте production API-ключ. Задайте их в окружении; плагин считывает их автоматически. `GT_API_KEY` (production key) используется на сервере и CLI в CI. Используйте префикс `NEXT_PUBLIC_` только для значений, которые должны попасть в браузер. ```bash title=".env.local" GT_PROJECT_ID="..." GT_DEV_API_KEY="gtx-dev-..." ``` Задайте их через публичные переменные окружения вашего сборщика и передайте в вызов инициализации. ```bash title=".env (Vite)" VITE_GT_PROJECT_ID="..." VITE_GT_DEV_API_KEY="gtx-dev-..." ``` Задайте их через публичные переменные окружения вашего сборщика и передайте в вызов инициализации. ```bash title=".env (Expo)" EXPO_PUBLIC_GT_PROJECT_ID="..." EXPO_PUBLIC_GT_DEV_API_KEY="gtx-dev-..." ``` *Примечание: На клиенте раскрывайте только API-ключ для разработки. Production API-ключи используются CLI в CI и никогда не попадают в клиентский код.* ## Выберите способ доставки переводов [#delivery] General Translation предоставляет переводы в одном из следующих режимов — в зависимости от вашей конфигурации. Во всех фреймворках это работает одинаково: * **Локальные файлы:** укажите `loadTranslations`, чтобы импортировать JSON, включённый в бандл. См. [Хранение переводов локально](/docs/react/guides/storing-translations). * **General Translation CDN:** укажите `projectId` (без пользовательского загрузчика), чтобы получать переводы из CDN GT во время выполнения. * **Пользовательский эндпоинт:** задайте собственный `cacheUrl`, чтобы загружать переводы со своего хоста. В среде разработки указание `projectId` и API-ключа для разработки включает перевод по запросу и горячую перезагрузку, поэтому новые строки переводятся прямо по мере работы. В production переводы загружаются из заранее сгенерированных файлов или из CDN. ## Next steps - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/managing-locales - /docs/react/guides/storing-translations