# 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) — как переводить содержимое