# General Translation Changelog: gt 2.12.0: Деривация объектов и словарей
URL: https://generaltranslation.com/ru/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 может статически извлекать все возможные строковые варианты из структур данных на этапе сборки, создавая отдельную запись перевода для каждого из них.

Это развитие [поддержки тегированных шаблонных литералов для `derive()`](/devlog/gt-react_v10_15_0), добавленной в gt-react@10.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 — со словарями и списками:

```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]))
```

Передайте производное выражение первым аргументом или поместите его внутрь f-строки, передаваемой в качестве этого аргумента. Если поместить его в значение именованной интерполяции, записи словаря или списка не будут извлечены.

## Требования

* Объекты и массивы должны быть объявлены с `const` (TypeScript) или на уровне модуля (Python).
* Синтаксис spread (`...base`) поддерживается и разворачивается на этапе извлечения.
* Аннотации TypeScript (`as const`, `satisfies`) автоматически снимаются.
* Циклические spread-выражения обнаруживаются и приводят к предупреждению вместо зависания.

## Ссылки

* [Предыдущая запись: `derive()` в тегированных шаблонных литералах (gt-react@10.15.0)](/devlog/gt-react_v10_15_0)
* [Справка по API `derive()`](/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.
