# General Translation Python SDKs: Настройка General Translation
URL: https://generaltranslation.com/ru/docs/python/guides/configuring.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как инициализировать General Translation в Python с настройкой приложения, локалей и доставки переводов во Flask, FastAPI и основной библиотеке.

Python SDK настраивается одним вызовом. Во Flask и FastAPI это `initialize_gt(app)`; в основной библиотеке `gt-i18n` вы сами создаёте [`I18nManager`](/docs/python/reference/classes/i18n-manager). В этом руководстве рассматриваются оба варианта, а также доставка и предзагрузка переводов.

## Настройте приложение Flask или FastAPI [#framework]

Вызовите `initialize_gt(app)` один раз, до обработки запросов. Функция считывает `gt.config.json`, создает менеджер переводов, регистрирует определение локали для каждого запроса и выполняет предзагрузку переводов.

<Tabs items={['Flask', 'FastAPI']}>
  <Tab value="Flask">
    ```python title="app.py"
    from flask import Flask
    from gt_flask import initialize_gt

    app = Flask(__name__)
    initialize_gt(app, default_locale="en", locales=["es", "fr"])
    ```
  </Tab>

  <Tab value="FastAPI">
    ```python title="main.py"
    from fastapi import FastAPI
    from gt_fastapi import initialize_gt

    app = FastAPI()
    initialize_gt(app, default_locale="en", locales=["es", "fr"])
    ```
  </Tab>
</Tabs>

Именованные аргументы переопределяют `gt.config.json`. Полный список параметров и ключей конфигурации см. в [справочнике по конфигурации](/docs/python/reference/config).

Обе интеграции используют одну и ту же сигнатуру [`initialize_gt`](/docs/python/reference/functions/initialize-gt); отличается только их внутренняя реализация. Flask регистрирует hook `before_request`, который устанавливает локаль; FastAPI оборачивает жизненный цикл приложения (для предзагрузки) и добавляет HTTP middleware, которое устанавливает локаль.

## Настройте основную библиотеку [#core]

В пакете `gt-i18n` нет [`initialize_gt`](/docs/python/reference/functions/initialize-gt). Создайте [`I18nManager`](/docs/python/reference/classes/i18n-manager), зарегистрируйте его как активный менеджер с помощью [`set_i18n_manager`](/docs/python/reference/functions/set-i18n-manager) и самостоятельно установите локаль запроса. Определение локали и предзагрузка здесь не происходят автоматически.

```python
from gt_i18n import I18nManager, set_i18n_manager, t

manager = I18nManager(default_locale="en", locales=["es", "fr"])
set_i18n_manager(manager)

manager.set_locale("es")   # локаль для каждого запроса задаётся вручную
print(t("Hello, world!"))
```

Любая функция перевода ([`t`](/docs/python/reference/functions/t), [`get_locale`](/docs/python/reference/functions/get-locale) и т. д.) использует менеджер, заданный через [`set_i18n_manager`](/docs/python/reference/functions/set-i18n-manager). Если вызвать такую функцию до установки менеджера, будет выброшено исключение `RuntimeError`.

## Выберите, как доставляются переводы [#delivery]

SDK получает переводы в одном из следующих режимов:

* **General Translation CDN:** укажите `project_id` (в конфигурации или как именованный аргумент), чтобы переводы загружались из CDN по адресу `{cache_url}/{project_id}/{locale}`. Базовый URL можно переопределить через `cache_url`.
* **Локальные файлы:** передайте функцию `load_translations`, которая возвращает `dict[str, str]` для локали. Это переопределяет загрузчик CDN. См. [Хранение переводов локально](/docs/python/guides/storing-translations).

API Key не используется. Доставка через CDN полностью определяется `project_id` и `cache_url`.

## Предзагрузка переводов [#preload]

Функция [`t`](/docs/python/reference/functions/t) читает данные из кэша в памяти, поэтому переводы должны быть загружены до того, как они понадобятся для обработки запроса. По умолчанию [`initialize_gt`](/docs/python/reference/functions/initialize-gt) предзагружает их при запуске (`eager_loading=True`).

*Примечание: предзагрузка выполняется только при известных целевых `locales`. Во Flask используются `locales`, которые вы передаёте непосредственно в [`initialize_gt`](/docs/python/reference/functions/initialize-gt), а не те, что загружаются из `gt.config.json` — если локали указаны только в файле конфигурации, передайте их явно или загрузите переводы самостоятельно. Если переводы ещё не загружены, [`t`](/docs/python/reference/functions/t) возвращает исходную строку.*

*Примечание: кэш в памяти истекает через `cache_expiry_time` (по умолчанию 60 секунд), а синхронный путь чтения, используемый [`t`](/docs/python/reference/functions/t), не перезагружает его — после истечения срока действия [`t`](/docs/python/reference/functions/t) возвращает исходные строки, пока асинхронный загрузчик не запустится снова. [`initialize_gt`](/docs/python/reference/functions/initialize-gt) не позволяет задать `cache_expiry_time`.*

## Обработка отсутствующих переводов [#missing]

Если перевод отсутствует, [`t`](/docs/python/reference/functions/t) возвращает исходную строку с подставленными переменными вместо генерации исключения, поэтому ответ на запрос всегда можно отрендерить. Сгенерируйте переводы через [CLI](/docs/cli/quickstart) перед развертыванием, чтобы в production они уже были готовы.

## Next steps

- /docs/python/guides/translating-strings
- /docs/python/guides/detecting-locale
- /docs/python/guides/declaring-variables
- /docs/python/guides/storing-translations

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
