# General Translation Python SDKs: Перевод строк URL: https://generaltranslation.com/ru/docs/python/guides/translating-strings.mdx --- title: Перевод строк description: Как переводить строки с переменными, контекстом и параметрами с помощью функций General Translation `t` и `msg` в Python. related: links: - /docs/python/guides/declaring-variables - /docs/python/guides/detecting-locale - /docs/python/guides/storing-translations - /docs/python/guides/configuring --- Функция [`t`](/docs/python/reference/functions/t) переводит строку в активную локаль запроса. Пишите текст на исходном языке прямо в коде и подставляйте значения с помощью синтаксиса сообщений ICU. ## Перевод с помощью `t` [#t] Вызовите `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` хеширует исходное сообщение, ищет кэшированный перевод для текущей локали, подставляет ваши переменные с помощью ICU MessageFormat и, если перевода нет, использует интерполированную исходную строку. Когда для текущей локали перевод не требуется (например, если она совпадает с локалью по умолчанию), `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`, [`derive`](/docs/python/reference/functions/derive) и связанных вспомогательных функциях. ## Зарегистрируйте сообщение для дальнейшего использования [#msg] Используйте [`msg`](/docs/python/reference/functions/msg), чтобы уже сейчас добавить к строке параметры перевода и обработать её позже, например если вы формируете сообщение в одном месте, а выводите в другом. Без параметров `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