# General Translation Python SDKs: Настройка General Translation URL: https://generaltranslation.com/ru/docs/python/guides/configuring.mdx --- title: Настройка General Translation description: "Как инициализировать General Translation в Python: в этом руководстве рассматривается настройка приложения, локалей и доставки переводов во Flask, FastAPI и основной библиотеке." related: links: - /docs/python/guides/translating-strings - /docs/python/guides/detecting-locale - /docs/python/guides/declaring-variables - /docs/python/guides/storing-translations --- 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`, создает менеджер переводов, регистрирует определение локали для каждого запроса и выполняет предзагрузку переводов. ```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"]) ``` ```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"]) ``` Именованные аргументы переопределяют `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`. Создайте [`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`. Если вызвать такую функцию до установки менеджера, будет выброшено исключение `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` выполняет предзагрузку при запуске (`eager_loading=True`). *Примечание: Предзагрузка выполняется только если известны целевые `locales`. Во Flask при этом проверяются `locales`, которые вы передаете напрямую в `initialize_gt`, а не те, что загружаются из `gt.config.json` — если ваши локали берутся только из файла конфигурации, передайте их явно или загрузите переводы самостоятельно. Если переводы еще не загружены, `t` возвращает исходную строку.* *Примечание: Кэш в памяти истекает через `cache_expiry_time` (по умолчанию 60 секунд), а синхронный путь чтения, который использует `t`, не обновляет его — после истечения этого времени `t` возвращает исходные строки, пока асинхронный загрузчик не сработает снова. `initialize_gt` не позволяет задать `cache_expiry_time`.* ## Обработка отсутствующих переводов [#missing] Если перевод отсутствует, `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