# gt-next: General Translation Next.js SDK: Локальное хранение переводов
URL: https://generaltranslation.com/ru/docs/next/guides/local-tx.mdx
---
title: Локальное хранение переводов
description: Храните переводы в составе бандла приложения, а не через CDN
---
## Что такое локальные переводы?
Локальные переводы хранятся в составе бандла вашего приложения, а не загружаются из CDN (Content Distribution Network). Когда вы добавляете команду `gt translate` в процесс сборки, она генерирует переводы в формате JSON. Последний шаг — поместить эти переводы в приложение, чтобы их можно было использовать.
Сделать это можно двумя способами:
1. **В составе бандла приложения** (локально): сохранять переводы в бандле приложения после генерации
2. **В CDN** (по умолчанию): загружать переводы из CDN во время выполнения
По умолчанию `gt-next` загружает переводы из CDN General Translation. Когда вы переводите приложение с помощью нашего API, переводы автоматически сохраняются в нашем CDN.
**Поведение по умолчанию:** GT по умолчанию использует CDN. Переходите на локальное хранилище только в том случае, если вам действительно нужны его преимущества.
## Компромиссы
### Преимущества локальных переводов
* **Более быстрая загрузка**: Локальные переводы отдаются напрямую из вашего приложения и загружаются быстрее, чем переводы с CDN
* **Нет зависимости от внешних сервисов**: Возможность вашего приложения загружать переводы не зависит от доступности CDN. Если для локали переводы не найдены, приложение автоматически переключается на язык по умолчанию
* **Работает офлайн**: Переводы входят в состав вашего приложения
### Недостатки локальных переводов
* **Увеличение размера бандла**: Локальные переводы увеличивают размер бандла приложения, из-за чего оно может медленнее загружаться при первом запуске
* **Управление контентом**: Чтобы изменить перевод, вам придется заново разворачивать приложение с обновлённым переводом при каждом изменении
## Сетап
### Шаг 1: Создайте функцию loadTranslations
Добавьте файл `loadTranslations.[js|ts]` в каталог `./src` со следующим содержимым:
```ts title="src/loadTranslations.ts"
export default async function loadTranslations(locale: string) {
const translations = await import(`../public/_gt/${locale}.json`);
return translations.default;
}
```
[`withGTConfig`](/docs/next/api/config/with-gt-config) автоматически находит файл `loadTranslations.[js|ts]` в каталоге `src/` или в корне проекта.
### Шаг 2: Настройте CLI
Выполните команду настройки и выберите локальное хранение:
```bash
npx gt configure
```
Когда появится запрос:
* **Сохранить в CDN?** Выберите "No"
* **Каталог переводов:** Введите `./public/_gt`
Также можно вручную настроить файл `gt.config.json` для использования локальных переводов. Подробнее см. в [документации по настройке CLI](/docs/cli/reference/config).
### Шаг 3: Сгенерируйте переводы
Теперь при запуске команды `translate` переводы будут автоматически загружаться и включаться в вашу базу кода:
```bash
npx gt translate
```
Переводы будут храниться в `public/_gt/` и входить в бандл вашего приложения.
## Интеграция в процесс сборки
### Процесс сборки в Next.js
Добавьте генерацию переводов в скрипт сборки:
```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...>
```
### Ошибки пути импорта
Приведите структуру каталогов в funzione loadTranslations в соответствие:
```ts
// ❌ Неверный путь
const t = await import(`../translations/${locale}.json`);
// ✅ Правильный путь для public/_gt
const t = await import(`../public/_gt/${locale}.json`);
```
### Большой размер бандла
Используйте разделение кода, если приложение поддерживает много языков:
```ts
// Загружать переводы только при необходимости
export default async function loadTranslations(locale: string) {
// Загружать только если локаль активна
if (locale === getCurrentLocale()) {
const translations = await import(`../public/_gt/${locale}.json`);
return translations.default;
}
return {};
}
```
Локальное хранение лучше всего подходит для приложений со стабильными переводами, которым не требуются частые обновления.
## Что дальше
* [Руководство по Middleware](/docs/next/guides/middleware) - Определение языка и маршрутизация
* [Руководство по языкам](/docs/next/guides/languages) - Настройка поддерживаемых языков
* Справка по API: