# General Translation Python SDKs: interpolate_message
URL: https://generaltranslation.com/zh/docs/python/reference/functions/interpolate-message.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 在 General Translation Python 中将变量插值到 ICU MessageFormat 字符串中。interpolate_message 的 API 参考。

`interpolate_message` 是 [`t`](/docs/python/reference/functions/t) 和 [`t_fallback`](/docs/python/reference/functions/t-fallback) 使用的底层格式化器。它用变量值填充 ICU MessageFormat 字符串，并且不会执行翻译查找。

## 概览 [#overview]

调用 `interpolate_message` 时，传入消息、选项 `dict` 以及可选的区域设置。与 [`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
```

从 `gt_i18n` 导入 `interpolate_message`。框架包不会再次导出它。

## 工作原理 [#how-it-works]

* **过滤变量。** 从 `options` 中移除 GT 的保留键，仅保留用户变量。
* **已声明变量。** 它会从 `__fallback` (源) 消息中提取已声明的 `_gt_` 变量；如果存在这类变量，则将消息中带索引的 select 压缩为简单引用，以便译文能够重新调整它们的顺序。
* **格式化。** 它会使用合并后的变量，通过 ICU MessageFormat 对消息进行格式化，然后在设置了 `_max_chars` 时应用截断。
* **错误处理。** 如果格式化出错，它会使用 `__fallback` 源消息重试 (同时清除 `__fallback` 以避免循环) ；如果没有后备内容，则返回原始消息，并在设置了 `_max_chars` 时应用截断。

## 参数 [#parameters]

| 参数                    | 描述                            | Type                | Optional | Default |
| --------------------- | ----------------------------- | ------------------- | -------- | ------- |
| [`message`](#message) | 要进行插值的 ICU MessageFormat 字符串。 | `str`               | 否        | —       |
| [`options`](#options) | 以 dict 形式传入的变量和 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.
