# General Translation Python SDKs: interpolate_message URL: https://generaltranslation.com/ru/docs/python/reference/functions/interpolate-message.mdx --- title: interpolate_message description: Интерполирует переменные в строку ICU MessageFormat в General Translation Python. Справочник по API для interpolate_message. --- Интерполирует переменные в строку ICU MessageFormat. Это низкоуровневый форматтер, на котором основаны [`t`](/docs/python/reference/functions/t) и [`t_fallback`](/docs/python/reference/functions/t-fallback); он не выполняет поиск перевода. ## Обзор [#overview] Вызовите `interpolate_message`, передав сообщение, словарь параметров и необязательную локаль. В отличие от `t` и `t_fallback`, переменные передаются в виде позиционного `dict`, а не через именованные аргументы. ```python from gt_i18n import interpolate_message interpolate_message("Hello, {name}!", {"name": "Alice"}) ``` Сигнатура: ```python interpolate_message( message: str, options: dict[str, object], locale: str | None = None, ) -> str ``` Импортируйте `interpolate_message` из `gt_i18n`. `interpolate_message` не реэкспортируется пакетами фреймворка. ## Как это работает [#how-it-works] * **Фильтрация переменных.** Зарезервированные ключи GT удаляются из `options`, остаются только пользовательские переменные. * **Объявленные переменные.** Из сообщения `__fallback` (исходного) извлекаются объявленные переменные `_gt_`, и, если они есть, индексированные селекты в сообщении сводятся к простым ссылкам, чтобы перевод мог менять их порядок. * **Форматирование.** Сообщение форматируется с помощью ICU MessageFormat с использованием объединённых переменных, после чего, если задано, применяется ограничение `_max_chars`. * **Обработка ошибок.** При ошибке форматирования выполняется повторная попытка с исходным сообщением `__fallback` (при этом `__fallback` очищается, чтобы избежать цикла); если резервного варианта нет, возвращается исходное сообщение как есть, с применением ограничения, если задан `_max_chars`. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательный | По умолчанию | | --------------------- | -------------------------------------------- | ------------------- | -------------- | ------------ | | [`message`](#message) | Строка ICU MessageFormat с подстановками. | `str` | Нет | — | | [`options`](#options) | Переменные и параметры GT в виде словаря. | `dict[str, object]` | Нет | — | | [`locale`](#locale) | Локаль, используемая для форматирования ICU. | `str \| None` | Да | `None` | ### `message` [#message] **Тип** `str` · **Обязательно** Строка ICU MessageFormat для подстановки значений. ### `options` [#options] **Тип** `dict[str, object]` · **Обязательно** Пользовательские переменные и необязательные ключи GT: `_max_chars` для ограничения длины, а также `__fallback` (исходное сообщение), которое используется для разрешения объявленных переменных `_gt_` и повторной попытки при ошибке. ### `locale` [#locale] **Тип** `str | None` · **Необязательный** · **По умолчанию** `None` Локаль, передаваемая в ICU для форматирования чисел, дат и правил множественного числа. ## Возвращает [#returns] **Тип** `str` Интерполированная строка либо исходное/резервное сообщение, если форматирование не удаётся. ## Пример [#example] ```python from gt_i18n import interpolate_message interpolate_message("{greeting}, {name}!", {"greeting": "Hi", "name": "Bob"}) # → "Hi, Bob!" # Переведённое сообщение, ссылающееся на объявленные переменные из источника по индексу interpolate_message("Bienvenido de nuevo, {_gt_1}!", {"__fallback": source}) ```