# gt-react: General Translation React SDK: Переход
URL: https://generaltranslation.com/ru/docs/react/guides/migration.mdx
---
title: Переход
description: Узнайте, как перевести проект на gt-react
---
{/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого отредактируйте шаблон в content/docs-templates/. */}
## Обзор
В этом руководстве описаны шаги, необходимые для перевода проекта, уже использующего библиотеку i18n, на `gt-react`.
Мы также дадим несколько советов и рекомендаций, которые помогут сделать этот переход максимально плавным.
## Предварительные требования
* Проект, в котором уже используется другая библиотека i18n.
* Базовое понимание библиотеки `gt-react`.
## Почему стоит перейти?
Есть много причин, по которым стоит перенести проект на `gt-react`.
Вот лишь некоторые из них:
* **Больше никаких JSON-файлов:** Вам больше не придется хранить переводы в JSON-файлах.
Весь ваш контент находится прямо в коде — там, где ему и место.
* **Автоматические переводы:** Создавайте качественные переводы с учетом контекста с помощью нашего CLI-инструмента.
Вам больше не придется ждать переводы.
* **Экспериментируйте в dev:** Легко экспериментируйте с переводами в процессе разработки благодаря горячей перезагрузке переводов.
## Настройка
Установите `gt-react` и CLI-инструмент `gt`.
```bash
npm i gt-react
npm i gt
```
```bash
yarn add gt-react
yarn add --dev gt
```
```bash
bun add gt-react
bun add --dev gt
```
```bash
pnpm add gt-react
pnpm add --save-dev gt
```
Создайте файл `gt.config.json` в корне проекта, указав в нём свойство `defaultLocale` и массив `locales`.
```json title="gt.config.json" copy
{
"defaultLocale": "en",
"locales": ["en", "fr", "es"]
}
```
Добавьте компонент `` в корневой компонент приложения и передайте объект `config` в пропсы с помощью spread-оператора.
```tsx
import { GTProvider } from 'gt-react'
import config from './gt.config.json'
```
Подробные инструкции см. в руководстве [по быстрому старту проекта](/docs/react).
На этом этапе у вас есть 3 варианта:
1. Полностью мигрировать весь проект на `gt-react` и удалить старую i18n-библиотеку.
2. Полностью мигрировать проект, но продолжить использовать словари из старой i18n-библиотеки.
3. Пока продолжить использовать старую i18n-библиотеку и мигрировать на `gt-react` только часть проекта.
Подробнее о каждом варианте см. в разделе [стратегии миграции](#strategies).
## Стратегии миграции [#strategies]
### Вариант 1: Полностью перенесите весь проект
Это самый простой вариант, но он потребует больше всего изменений в коде за один раз.
После настройки проекта вам нужно будет найти все вхождения вашей старой библиотеки i18n и заменить их на `gt-react`.
Если ваше приложение использует React-хуки, такие как `useTranslation`, найдите все вхождения `useTranslation` в кодовой базе и замените их на `useGT`.
Затем нужно будет заменить все ключи строк на сами строковые значения.
Например, если ваш старый код выглядит так:
```json title="dictionary.json"
{
"hello": {
"description": "Hello, world!"
}
}
```
```tsx
export default function MyComponent() {
const { t } = useTranslation()
return
{t('hello.description')}
}
```
Вам нужно заменить это на:
```tsx
export default function MyComponent() {
const { t } = useGT()
return {t('Hello, world!')}
}
// ИЛИ
export default function MyComponent() {
return Hello, world!
}
```
Проделайте это для всех мест, где используется ваша старая библиотека i18n.
### Вариант 2: Полностью переведите проект, но продолжайте использовать словари из старой библиотеки i18n
Допустим, вы хотите перевести проект на `gt-react`, но при этом сохранить использование словарей из старой библиотеки i18n
и применять встроенные возможности GT только для нового контента.
В этом случае можно сделать примерно то же, что и в варианте 1:
Найдите все места, где используется старая библиотека i18n, например хук `useTranslation`, и замените их на хук `useTranslations`.
Хук `useTranslations` работает почти так же, как `useTranslation`, поэтому использовать его можно аналогичным образом.
```tsx
import { useTranslation } from 'react-i18next'
export default function MyComponent() {
const { t } = useTranslation()
return {t('hello.description')}
}
```
```tsx
import { useTranslations } from 'gt-react'
export default function MyComponent() {
const t = useTranslations()
return {t('hello.description')}
}
```
Что касается конфигурации, вам нужно создать файл `dictionary.[js|ts|json]` в корне проекта или в каталоге `src`.
Скопируйте содержимое старого файла словаря в новый файл, а затем передайте его в компонент `GTProvider`.
```tsx
import { GTProvider } from 'gt-react'
import dictionary from './dictionary.json'
import config from './gt.config.json'
```
Подробнее см. в руководстве [dictionaries](/docs/react/guides/dictionaries).
### Вариант 3: Пока продолжайте использовать старую библиотеку i18n и переносите на `gt-react` только часть проекта
Этот вариант наиболее гибкий и потребует минимальных изменений в коде за один раз.
В этом случае можно сделать примерно то же, что и в варианте 2, но перенести на `gt-react` только часть проекта.
Например, можно и дальше использовать старую библиотеку i18n для одних компонентов, а `gt-react` — только для других и нового контента.
Этот вариант не рекомендуется, поскольку вам придется поддерживать в проекте две разные библиотеки i18n, а это может усложнить разработку и привести к ошибкам.
## Советы по переходу
### 1. По возможности используйте хук `useGT` или компонент ``
По возможности рекомендуем использовать хук `useGT` или компонент ``.
Это значительно упростит редактирование контента в будущем и сделает кодовую базу гораздо более читаемой.
### 2. Используйте хук `useTranslations` для существующего контента
Хук `useTranslations` позволяет продолжать работать с уже имеющимися словарями.
Мы предлагаем его, чтобы упростить миграцию, но не рекомендуем использовать его для нового контента.
### 3. Использование ИИ
Если вы используете ИИ, чтобы упростить миграцию проекта, у нас есть файлы `LLMs.txt` и `LLMs-full.txt`, доступные по адресам:
* [LLMs.txt](/llms.txt)
* [LLMs-full.txt](/llms-full.txt)
Эти файлы содержат полный текст документации, поэтому ваш ИИ-инструмент получит доступ ко всей информации, необходимой для миграции проекта.