# General Translation Changelog: gt 2.12.0: 对象和字典派生
URL: https://generaltranslation.com/zh/blog/gt-cli_v2_12_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Ernest McCarter
Published: 2026-03-19

## 概述

[`derive()`](/docs/react/reference/functions/derive) 现在不仅可以解析函数返回值，还可以从对象和数组中取值。同样的支持也已扩展到 Python 的 [`derive()`](/docs/python/reference/functions/derive)，适用于字典和列表。这意味着 CLI 可以在构建阶段从数据结构中静态提取所有可能的字符串变体，并为每一种分别创建独立的翻译条目。

这是在 gt-react@10.15.0 新增的 [`derive()` 的 tagged template 支持](/devlog/gt-react_v10_15_0) 基础上的进一步扩展。

## 对象和数组访问

给定一个由多个字符串变体组成的对象，[`derive()`](/docs/react/reference/functions/derive) 会提取其中的每个值：

```tsx
const labels = { success: "Saved", error: "Failed", pending: "Saving..." };

t`Status: ${derive(labels[status])}`;
```

CLI 会解析这三个值，并分别为每个值注册单独的翻译条目。

这同时适用于计算属性访问 (`obj[key]`) 和静态属性访问 (`obj.prop`) ，并支持嵌套：

```tsx
const messages = {
  greeting: { formal: "Good evening", casual: "Hey" },
  farewell: { formal: "Goodbye", casual: "See ya" },
};

t`${derive(messages[category][tone])}`;
```

数组也是一样：

```tsx
const ranks = ["Bronze", "Silver", "Gold", "Platinum"];

t`Your rank: ${derive(ranks[level])}`;
```

## Python

在 Python 中，使用字典和列表同样可以实现相同的 object/array 解析：

```python
from gt_flask import t, derive

labels = { "success": "Saved", "error": "Failed" }

t(derive(labels[status_key]))
```

```python
from gt_flask import t, derive

ranks = ["Bronze", "Silver", "Gold", "Platinum"]

t(derive(ranks[level]))
```

将 derive 表达式作为第一个参数传入，或将其放在作为该参数传入的 f-string 中。若将其放在关键字插值的值中，则无法提取出字典或列表中的条目。

## 要求

* 对象和数组必须使用 `const` (TypeScript) 声明，或定义在模块级别 (Python) 。
* 支持展开语法 (`...base`) ，并会在提取时将其展平。
* TypeScript 注解 (`as const`、`satisfies`) 会自动去除包装。
* 会检测循环展开，并发出警告而不是卡死。

## 链接

* [上一篇：tagged template 中的 `derive()` (gt-react@10.15.0) ](/devlog/gt-react_v10_15_0)
* [`derive()` API 参考](/docs/react/reference/functions/derive)
* [PR #1137](https://github.com/generaltranslation/gt/pull/1137)

## Sitemap

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