# General Translation Python SDKs: Перевод строк
URL: https://generaltranslation.com/ru/docs/python/guides/translating-strings.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как переводить строки с переменными, контекстом и параметрами с помощью функций General Translation `t` и `msg` в Python.

Функция [`t`](/docs/python/reference/functions/t) переводит строку в активную локаль запроса. Пишите текст на исходном языке прямо в коде и подставляйте значения с помощью синтаксиса сообщений ICU.

## Перевод с помощью `t` [#t]

Вызовите [`t`](/docs/python/reference/functions/t), передав исходную строку. Значения интерполяции передавайте как именованные аргументы, соответствующие заполнителям ICU, а не в виде dict.

```python
from gt_flask import t  # или from gt_fastapi import t, или from gt_i18n import t

t("Hello, world!")
t("Hello, {name}!", name="Alice")
```

[`t`](/docs/python/reference/functions/t) хеширует исходное сообщение, ищет кэшированный перевод для текущей локали, подставляет ваши переменные с помощью ICU MessageFormat и, если перевода нет, использует интерполированную исходную строку. Когда для текущей локали перевод не требуется (например, если она совпадает с локалью по умолчанию), [`t`](/docs/python/reference/functions/t) пропускает поиск и только подставляет переменные.

## Добавление контекста и опций [#options]

Для зарезервированных опций используется начальное подчёркивание, чтобы они не воспринимались как переменные интерполяции. Все три влияют на хеш сообщения, поэтому изменение любой из них создаёт отдельную запись перевода.

* `_context` — уточнить строку, у которой больше одного значения.
* `_id` — присвоить записи стабильный идентификатор.
* `_max_chars` — ограничить длину перевода в символах.

```python
t("Bank", _context="the edge of a river")
t("Welcome", _id="home.hero.title")
t("This is a long message that may need truncation", _max_chars=20)
```

*Примечание: пользовательская переменная, имя которой начинается с одного символа подчёркивания (например, `_name`), всё равно передаётся как переменная интерполяции — отфильтровываются только перечисленные выше зарезервированные ключи.*

## Подстановка динамических значений [#variables]

Если значение не нужно переводить — например, имя пользователя в предложении, — оберните его в [`declare_var`](/docs/python/reference/functions/declare-var), чтобы оно сохранялось при переводе на разные языки.

```python
from gt_flask import t, declare_var

t(f"Signed in as {declare_var(email, name='email')}")
```

(См. [Объявление переменных и вариантов](/docs/python/guides/declaring-variables) — о [`declare_var`](/docs/python/reference/functions/declare-var), [`derive`](/docs/python/reference/functions/derive) и связанных вспомогательных функциях).

## Зарегистрируйте сообщение для дальнейшего использования [#msg]

Используйте [`msg`](/docs/python/reference/functions/msg), чтобы уже сейчас добавить к строке параметры перевода и обработать её позже, например если вы формируете сообщение в одном месте, а выводите в другом. Без параметров [`msg`](/docs/python/reference/functions/msg) возвращает сообщение без изменений; с параметрами он возвращает закодированную строку вида `{interpolated}:{base64options}`, которую [`m_fallback`](/docs/python/reference/functions/m-fallback) затем может декодировать.

```python
from gt_i18n import msg, m_fallback

encoded = msg("Save", _context="button")
# ... позже, во время рендеринга:
m_fallback(encoded)
```

## Next steps

- /docs/python/guides/declaring-variables
- /docs/python/guides/detecting-locale
- /docs/python/guides/storing-translations
- /docs/python/guides/configuring

## Sitemap

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