# react-native: Локальное хранилище переводов URL: https://generaltranslation.com/ru/docs/react-native/guides/local-tx.mdx --- title: Локальное хранилище переводов description: Храните переводы в бандле приложения вместо использования CDN --- {/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого измените шаблон в content/docs-templates/. */} ## Что такое локальные переводы? Локальные переводы хранятся в бандле приложения, а не загружаются из CDN (Content Distribution Network). Когда вы добавляете команду `gt translate` в процесс сборки, она генерирует переводы в формате JSON. Последний шаг — поместить эти переводы в приложение, чтобы их можно было использовать. Сделать это можно двумя способами: 1. **В бандле приложения** (локально): сохранить переводы в бандле приложения после генерации 2. **В CDN** (по умолчанию): загружать переводы из CDN во время выполнения По умолчанию `gt-react-native` загружает переводы из CDN General Translation. Когда вы переводите приложение с помощью нашего API, переводы автоматически сохраняются в нашем CDN. **Поведение по умолчанию:** GT по умолчанию использует CDN. Переходите на локальное хранение, только если вам действительно нужны его преимущества. ## Компромиссы ### Преимущества локальных переводов * **Более быстрая загрузка**: локальные переводы отдаются напрямую из вашего приложения и загружаются быстрее, чем переводы, получаемые через CDN * **Без зависимости от внешних сервисов**: загрузка переводов в вашем приложении не зависит от доступности CDN. Если для локали переводы не найдены, приложение автоматически использует язык по умолчанию * **Работает офлайн**: переводы включены в сборку приложения ### Недостатки локальных переводов * **Увеличение размера бандла**: Локальные переводы увеличивают размер бандла приложения, из-за чего оно может медленнее загружаться при первом запуске * **Управление контентом**: Чтобы изменить перевод, вам придется заново развертывать приложение с обновленным переводом при каждом изменении ## Настройка ### Шаг 1: Создайте функцию загрузки Добавьте файл `loadTranslations.[js|ts]` в каталог `./src` со следующим содержимым: ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { const t = await import(`./_gt/${locale}.json`); return t.default; } ``` ### Шаг 2: Настройте GTProvider Передайте `loadTranslations` в компонент [``](/docs/react-native/api/components/gtprovider) через prop: ```tsx title="src/App.tsx" import { GTProvider } from 'gt-react-native'; import loadTranslations from './loadTranslations'; export default function App() { return ( ); } ``` ### Шаг 3: Настройте CLI Запустите команду конфигурации и выберите локальное хранилище: ```bash npx gt configure ``` Когда появится запрос: * **Save to CDN?** Выберите "No" * **Translation directory:** CLI автоматически использует `./src/_gt` Либо вы можете вручную настроить файл `gt.config.json` для использования локальных переводов. Подробнее см. в [документации по конфигурации CLI](/docs/cli/reference/config). ### Шаг 4: Сгенерируйте переводы Теперь при запуске команды `translate` переводы будут автоматически загружаться и включаться в ваш код: ```bash npx gt translate ``` Переводы будут храниться в `src/_gt/` и включаться в бандл приложения. ## Интеграция со сборкой ### Процесс сборки React Добавьте генерацию переводов в скрипт сборки: ```json { "scripts": { "build": "npx gt translate && <...YOUR_BUILD_COMMAND...>" } } ``` ### Пайплайн CI/CD ```yaml # .github/workflows/deploy.yml - name: Generate Translations run: npx gt translate - name: Build Application run: npm run build ``` ## Распространённые проблемы ### Отсутствуют файлы переводов Перед сборкой убедитесь, что переводы сгенерированы: ```bash # ❌ Сборка без переводов <...YOUR_BUILD_COMMAND...> # ✅ Сначала сгенерируйте переводы npx gt translate && <...YOUR_BUILD_COMMAND...> ``` ### Ошибки в пути импорта Приведите структуру каталогов в функции load в соответствие с вашей: ```ts // ❌ Неверный путь const t = await import(`../translations/${locale}.json`); // ✅ Правильный путь для src/_gt const t = await import(`./_gt/${locale}.json`); ``` ### Большой размер бандла Для приложений с большим количеством языков рассмотрите разделение кода: ```ts // Загружать переводы только по необходимости export default async function loadTranslations(locale: string) { // Загружать только если локаль активна if (locale === getCurrentLocale()) { const translations = await import(`./_gt/${locale}.json`); return translations.default; } return {}; } ``` Локальное хранилище лучше всего подходит для приложений со стабильными переводами, которые не нужно часто обновлять. ## Что дальше * [Руководство по языкам](/docs/react-native/guides/languages) — Настройте поддерживаемые языки