# General Translation Python SDKs: interpolate_message
URL: https://generaltranslation.com/ru/docs/python/reference/functions/interpolate-message.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Интерполирует переменные в строку ICU MessageFormat в General Translation Python. Справочник по API для interpolate_message.

`interpolate_message` — это низкоуровневый форматтер, на котором основаны [`t`](/docs/python/reference/functions/t) и [`t_fallback`](/docs/python/reference/functions/t-fallback). Он заполняет строку ICU MessageFormat значениями переменных и не выполняет поиск перевода.

## Обзор [#overview]

Вызовите `interpolate_message`, передав сообщение, словарь параметров и необязательную локаль. В отличие от [`t`](/docs/python/reference/functions/t) и [`t_fallback`](/docs/python/reference/functions/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})
```

## Sitemap

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