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