# node: Локальное хранение переводов
URL: https://generaltranslation.com/ru/docs/node/guides/local-tx.mdx
---
title: Локальное хранение переводов
description: Храните переводы в бандле приложения вместо загрузки с CDN
---
## Что такое локальные переводы?
По умолчанию `gt-node` загружает переводы из CDN General Translation во время выполнения. При использовании локальных переводов вы встраиваете файлы перевода прямо в приложение — внешние запросы не требуются.
**Поведение по умолчанию:** GT по умолчанию использует CDN-хранилище. Переходите на локальное хранилище только в том случае, если вам нужны его конкретные преимущества.
## Компромиссы
### Преимущества локальных переводов
* **Более быстрый отклик**: Не нужны сетевые запросы для получения переводов во время выполнения
* **Нет зависимости от внешних сервисов**: Ваше приложение работает независимо от доступности CDN
* **Работает офлайн**: Переводы включены в артефакт deployment
### Недостатки локальных переводов
* **Увеличение размера бандла**: Каждая поддерживаемая локаль увеличивает размер deployment
* **Чтобы обновить переводы, нужен новый deployment**: Изменение перевода требует нового deployment
## Сетап
### Шаг 1: Создайте функцию loadTranslations
Напишите функцию, которая загружает JSON-файл с переводами для указанной локали:
```js title="loadTranslations.js"
import { readFile } from 'fs/promises';
import path from 'path';
export default async function loadTranslations(locale) {
const filePath = path.join(process.cwd(), 'translations', `${locale}.json`);
const data = await readFile(filePath, 'utf-8');
return JSON.parse(data);
}
```
### Шаг 2: Передайте его в `initializeGT`
```js title="server.js"
import { initializeGT } from 'gt-node';
import loadTranslations from './loadTranslations.js';
initializeGT({
defaultLocale: 'en',
locales: ['en', 'es', 'fr', 'ja'],
projectId: process.env.GT_PROJECT_ID,
loadTranslations,
});
```
### Шаг 3: Настройте CLI
Выполните команду настройки и выберите локальное хранилище:
```bash
npx gt configure
```
Когда появится запрос:
* **Сохранить в CDN?** Выберите "No"
* **Директория переводов:** Введите `./translations`
### Шаг 4: Сгенерируйте переводы
```bash
npx gt translate
```
Это скачивает файлы перевода в директорию `translations/`.
## Интеграция в build-процесс
Добавьте генерацию переводов в свой скрипт build, чтобы переводы всегда были актуальными:
```json title="package.json"
{
"scripts": {
"build": "npx gt translate && "
}
}
```
### CI/CD-пайплайн
```yaml title=".github/workflows/deploy.yml"
- name: Generate Translations
run: npx gt translate
- name: Build Application
run: npm run build
```
## Распространённые проблемы
### Отсутствуют файлы перевода
Всегда генерируйте переводы перед build:
```bash
# ❌ Сборка без переводов
node server.js
# ✅ Сначала сгенерируйте переводы
npx gt translate && node server.js
```
### Ошибки в пути к файлу
Убедитесь, что путь в вашей функции loadTranslations совпадает с директорией вывода CLI:
```js
// ❌ Неверный путь
const filePath = path.join(process.cwd(), 'public', `${locale}.json`);
// ✅ Укажите настроенную директорию
const filePath = path.join(process.cwd(), 'translations', `${locale}.json`);
```
Локальное хранилище лучше всего подходит для приложений со стабильными переводами, которые не требуют частых обновлений.
## Следующие шаги
* [Команда CLI `translate`](/docs/cli/translate) — справка по генерации переводов
* [Конфигурация CLI](/docs/cli/reference/config) — настройте директорию вывода и режим хранения
* [Подходы к переводу строк](/docs/node/guides/strings) — как переводить содержимое