# gt-react: General Translation React SDK: Локальное хранилище переводов
URL: https://generaltranslation.com/ru/docs/react/guides/local-tx.mdx
---
title: Локальное хранилище переводов
description: Храните переводы в бандле приложения вместо CDN
---
{/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого измените шаблон в content/docs-templates/. */}
## Что такое локальные переводы?
Локальные переводы хранятся в бандле вашего приложения, а не загружаются из CDN (сети доставки контента). Когда вы добавляете команду `gt translate` в процесс сборки, она генерирует переводы в формате JSON. Последний шаг — добавить эти переводы в приложение, чтобы их можно было использовать.
Сделать это можно двумя способами:
1. **В бандле вашего приложения** (локально): сохранять переводы в сборке приложения после генерации
2. **В CDN** (по умолчанию): загружать переводы из CDN во время выполнения
По умолчанию `gt-react` загружает переводы из CDN General Translation. Когда вы переводите приложение с помощью нашего API, переводы автоматически сохраняются в нашем CDN.
**Поведение по умолчанию:** GT по умолчанию использует хранение в CDN. Переходите на локальное хранение только в том случае, если вам нужны его конкретные преимущества.
## Компромиссы
### Преимущества локальных переводов
* **Более быстрая загрузка**: Локальные переводы отдаются напрямую из приложения и загружаются быстрее, чем переводы с CDN
* **Нет зависимости от внешних сервисов**: Возможность приложения загружать переводы не зависит от доступности CDN. Если для локали переводы не найдены, приложение автоматически использует язык по умолчанию
* **Работает офлайн**: Переводы поставляются вместе с приложением
### Недостатки локальных переводов
* **Увеличение размера бандла**: Локальные переводы увеличивают размер бандла приложения, из-за чего оно может медленнее загружаться при первом запуске
* **Управление контентом**: Чтобы изменить перевод, вам придётся заново развёртывать приложение с обновлённым переводом после каждого изменения
## Сетап
### Шаг 1: Создайте функцию load
Добавьте файл `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/api/components/gtprovider):
```tsx title="src/App.tsx"
import { GTProvider } from 'gt-react';
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/guides/languages) — настройте поддерживаемые языки