# 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