# 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) — как работает контекст локали