# python: Локальное хранение переводов URL: https://generaltranslation.com/ru/docs/python/guides/local-tx.mdx --- title: Локальное хранение переводов description: Храните переводы локально, а не загружайте их из CDN --- ## Что такое локальные переводы? По умолчанию Python-библиотеки GT загружают переводы из CDN General Translation во время выполнения. При использовании локальных переводов вы включаете файл перевода в бандл приложения — внешние сетевые запросы не требуются. **Поведение по умолчанию:** по умолчанию GT использует CDN-хранилище. Переключайтесь на локальное хранение только в том случае, если вам нужны его конкретные преимущества. ## Компромиссы ### Преимущества локальных переводов * **Более быстрый отклик**: Не нужны дополнительные сетевые запросы для получения переводов * **Без зависимости от внешних сервисов**: Приложение работает независимо от доступности CDN * **Работает офлайн**: Переводы входят в состав деплоя ### Недостатки локальных переводов * **Увеличенный размер деплоя**: Каждая поддерживаемая локаль добавляет файлы перевода * **Для обновления нужен повторный деплой**: Изменение перевода требует нового деплоя ## Настройка ### Шаг 1: Настройте CLI Установите GT CLI и настройте его для локального хранения: ```bash pip install gtx-cli gt configure ``` Когда появится запрос: * **Сохранить в CDN?** Выберите "Нет" * **Директория с переводами:** Введите `./translations` ### Шаг 2: Сгенерируйте переводы ```bash gt translate ``` В директории `translations/` будут созданы JSON-файлы — по одному для каждой локали. ### Шаг 3: Загрузите переводы в приложение Настройте приложение на использование локальных файлов перевода: ```python import json from pathlib import Path from flask import Flask from gt_flask import initialize_gt app = Flask(__name__) def load_translations(locale: str): path = Path('translations') / f'{locale}.json' if path.exists(): return json.loads(path.read_text()) return {} initialize_gt( app, default_locale='en', locales=['es', 'fr', 'ja'], load_translations=load_translations, ) ``` ```python import json from pathlib import Path from fastapi import FastAPI from gt_fastapi import initialize_gt app = FastAPI() def load_translations(locale: str): path = Path('translations') / f'{locale}.json' if path.exists(): return json.loads(path.read_text()) return {} initialize_gt( app, default_locale='en', locales=['es', 'fr', 'ja'], load_translations=load_translations, ) ``` ## Интеграция на этапе build Генерируйте переводы как часть деплой-пайплайна: ```yaml title=".github/workflows/deploy.yml" - name: Generate Translations run: gt translate - name: Deploy run: ``` Или в `Makefile`: ```makefile deploy: gt translate ``` Всегда генерируйте переводы перед развертыванием. Если файлы перевода отсутствуют, `t()` использует исходную строку из `default_locale`. ## Следующие шаги * [CLI-команда `translate`](/docs/cli/translate) — справка по генерации переводов * [Подходы к переводу строк](/docs/python/guides/strings) — как переводить содержимое * [Определение локали и middleware](/docs/python/guides/middleware) — как работает контекст локали