# General Translation React SDKs (gt-react, gt-next, gt-react-native): Миграция библиотек i18n URL: https://generaltranslation.com/ru/docs/react/guides/migrating-i18n-libraries.mdx --- title: Миграция библиотек i18n description: Как перенести существующую конфигурацию интернационализации React в General Translation, сохранив текущие переводы. related: links: - /docs/react/guides/translating-with-dictionaries - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/configuring --- Переносите по одной завершённой функции или маршруту за раз, чтобы на протяжении всего перехода можно было тестировать выбор локали, переведённый результат и резервное поведение. ## Перед началом работы [#before-start] Пройдите Быстрый старт для своего фреймворка и не отключайте существующий i18n-провайдер, пока не мигрируете его последнего потребителя: * [Быстрый старт SPA для React](/docs/react/react-spa-quickstart) * [Быстрый старт Next.js](/docs/react/nextjs-quickstart) * [TanStack Start Быстрый старт](/docs/react/tanstack-start-quickstart) * [React Native Быстрый старт](/docs/react/react-native-quickstart) Зафиксируйте текущую исходную локаль, поддерживаемые локали, поведение резервного варианта и формат URL локали. Перед переносом контента укажите те же значения в `gt.config.json`. ## Выберите стратегию миграции [#strategies] ### Замените ключи исходным текстом Выберите этот подход, если хотите хранить переводимый текст рядом с компонентом, который его отображает. Замените поиск по ключам на [``](/docs/react/reference/components/t) для JSX и [`useGT`](/docs/react/reference/hooks/use-gt) для строк: ```tsx // До const { t } = useTranslation(); return

{t('home.welcome')}

; // После return (

Welcome back

); ``` Скопируйте из старого словаря значение для локали источника, а не переведённое значение. General Translation использует этот исходный контент и окружающую его структуру в качестве контекста для перевода. ### Сохраните существующие словари Выберите этот подход, если стабильные ключи — часть вашего процесса работы с контентом или если нет необходимости заменять каждый поиск. Перенесите исходный словарь в [настройку словаря](/docs/react/guides/translating-with-dictionaries), затем замените старый хук на [`useTranslations`](/docs/react/reference/hooks/use-translations): ```tsx // До import { useTranslation } from 'react-i18next'; const { t } = useTranslation(); return

{t('home.welcome')}

; // После import { useTranslations } from 'gt-react'; const t = useTranslations(); return

{t('home.welcome')}

; ``` В Next.js поместите `dictionary.json`, `dictionary.ts` или `dictionary.js` в корень проекта или в каталог `src/`. [`withGTConfig`](/docs/react/nextjs/config) автоматически обнаружит файл. ### Временно используйте обе библиотеки Выберите этот подход для поэтапной миграции между независимо развертываемыми маршрутами или функциями. Обе библиотеки могут работать одновременно, и, если обе интеграции используют провайдеры, эти провайдеры могут сосуществовать. У каждой строки должен быть один ответственный за перевод, и обе библиотеки должны получать одну и ту же активную локаль. Две i18n-библиотеки могут по-разному обрабатывать активную локаль, cookie-файлы, URL-маршрутизацию и правила резервного варианта. Определите единый источник истины для локали, протестируйте навигацию между мигрированными и немигрированными маршрутами и удалите старый провайдер, как только его последний потребитель будет удалён. ## Миграция одной функции [#migrate-feature] 1. Выберите один маршрут или компонент и перечислите все используемые им старые ключи перевода. 2. Скопируйте текст исходной локали, а также правила интерполяции и множественного числа. 3. Замените каждый поиск на [``](/docs/react/reference/components/t), [`useGT`](/docs/react/reference/hooks/use-gt) или [`useTranslations`](/docs/react/reference/hooks/use-translations) в соответствии с выбранной стратегией. 4. Оставляйте переменные переменными, а не подставляйте их текущие значения в исходный текст. 5. Запустите [`npx gt translate`](/docs/cli/reference/commands/translate). 6. Протестируйте исходную локаль, все целевые локали, резервный вариант при отсутствии перевода и переключение локалей. 7. Удаляйте старые ключи только после того, как в репозитории не останется ссылок на них. Повторяйте эту последовательность, пока старый провайдер и зависимость не перестанут использоваться, затем удалите их конфигурацию, сгенерированные файлы и команды сборки. ## Сохранение существующих переводов [#preserve-translations] Сохранение исходного словаря позволяет сохранить ключи, но существующие файлы на целевых языках не импортируются в General Translation автоматически. Продолжайте загружать эти словари во время миграции или загрузите проверенные переводы через [процесс загрузки в Core](/docs/platform/core/reference/gt-class-methods/translation/upload-translations). Не копируйте переводимые строки вручную в [``](/docs/react/reference/components/t) в качестве исходного контента. Сохраняйте в коде исходный язык и сверяйте импортированные переводы с той же исходной версией. ## Next steps - /docs/react/guides/translating-with-dictionaries - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/configuring