# General Translation Python SDKs: Определение локали запроса
URL: https://generaltranslation.com/ru/docs/python/guides/detecting-locale.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как автоматически определять локаль для каждого запроса или задавать собственную логику в General Translation для Python.

Каждый вызов [`t`](/docs/python/reference/functions/t) переводит текст в локаль текущего запроса. [`initialize_gt`](/docs/python/reference/functions/initialize-gt) настраивает определение локали за вас; вы можете использовать вариант по умолчанию или передать собственный callback.

## Используйте определение по умолчанию [#default]

По умолчанию SDK читает заголовок `Accept-Language`, разбирает его q-параметры и выбирает наиболее подходящее значение из настроенных `locales`, а если совпадения нет — использует локаль по умолчанию. Flask делает это в хуке `before_request`, а FastAPI — в HTTP middleware. Дополнительная настройка не требуется.

Получить определённую локаль в любом месте запроса можно с помощью [`get_locale`](/docs/python/reference/functions/get-locale).

```python
from gt_flask import get_locale  # или: from gt_fastapi import get_locale

get_locale()
```

## Настройте собственное определение локали [#custom]

Чтобы учитывать явный выбор — параметр строки запроса, cookie-файл или префикс пути, — передайте callback [`get_locale`](/docs/python/reference/functions/get-locale) в [`initialize_gt`](/docs/python/reference/functions/initialize-gt). Пользовательский callback полностью заменяет определение через `Accept-Language`; при его использовании `Accept-Language` больше не учитывается.

<Tabs items={['Flask', 'FastAPI']}>
  <Tab value="Flask">
    ```python
    def detect_locale(request):
        return request.args.get("lang") or request.cookies.get("locale") or "en"

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

  <Tab value="FastAPI">
    ```python
    def detect_locale(request):
        return request.query_params.get("lang") or request.cookies.get("locale") or "en"

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

Возвращённое вами значение сохраняется для запроса как есть. Если callback возвращает ложное значение, например `None`, локаль будет разрешаться до настроенной локали по умолчанию (а не `Accept-Language`), поэтому, если вам нужно другое поведение, возвращайте явное резервное значение.

*Примечание: в отличие от встроенного определения через `Accept-Language`, возвращаемое значение пользовательского callback не проверяется повторно на соответствие настроенным `locales`. Возвращайте поддерживаемую локаль или самостоятельно разрешайте неподдерживаемые значения.*

## Next steps

- /docs/python/guides/translating-strings
- /docs/python/guides/configuring
- /docs/python/guides/declaring-variables
- /docs/python/guides/storing-translations

## Sitemap

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