# gt: General Translation CLI tool: Autoderive URL: https://generaltranslation.com/ru/docs/cli/features/autoderive.mdx --- title: Autoderive description: Автоматическая деривация интерполируемых значений в функциях перевода и JSX-компонентах --- ## Обзор Когда autoderive включён, интерполированные значения обрабатываются так, как будто они обёрнуты в [`derive()`](/docs/next/api/strings/derive). Это создаёт отдельные записи перевода для каждого возможного значения, сохраняя грамматическое согласование и спряжение в разных языках. Autoderive работает в двух контекстах: * **Строки** — интерполированные значения в вызовах `t()`, `gt()` и `msg()` * **JSX** — выражения внутри компонентов ``, которые ссылаются на объявления переменных `const` По умолчанию autoderive **отключён**. ## Конфигурация Включите autoderive как для строк, так и для JSX: ```json title="gt.config.json" { "files": { "gt": { "parsingFlags": { "autoderive": true } } } } ``` Вы также можете выборочно включить autoderive только для строк или только для JSX: ```json title="gt.config.json" { "files": { "gt": { "parsingFlags": { "autoderive": { "jsx": true, "strings": false } } } } } ``` ## Пример строки ```jsx const gt = useGT(); const role = isAdmin ? "admin" : "user"; // При включённом autoderive это обрабатывается как деривация: gt(`Welcome back, ${role}!`); // Генерирует: // "Welcome back, admin!" → "¡Bienvenido de nuevo, administrador!" // "Welcome back, user!" → "¡Bienvenido de nuevo, usuario!" ``` Без autoderive нужно явно использовать [`derive()`](/docs/next/api/strings/derive), чтобы получить то же поведение. ## Пример JSX ```jsx const label = condition ? "boy" : "girl"; Hello, {label} // Создаёт две записи перевода: // "Hello, boy" → "Hola, chico" // "Hello, girl" → "Hola, chica" ``` JSX autoderive обрабатывает объявления переменных `const`, на которые есть ссылки внутри компонентов ``. Поддерживаются: * Тернарные выражения (`const x = cond ? "a" : "b"`) * Вложенные тернарные выражения (`const x = a ? "small" : b ? "medium" : "large"`) * Строковые, числовые и логические литералы * Конкатенация строк и шаблонные литералы * Цепочки ссылок между `const` (`const alias = base`) **Только `const`:** Поддерживаются только объявления `const`. Переменные `let` и `var` вызывают предупреждение, потому что их можно переназначить. Деструктурированные переменные (`const { x } = obj`) не поддерживаются. **Примечание:** На макрос `t` с тегированным шаблонным литералом это не влияет — он выполняет деривацию через синтаксис шаблонного литерала. ## См. также * [Справка по функции `derive()`](/docs/next/api/strings/derive) * [Автоматическая инъекция JSX](/docs/cli/features/auto-jsx-injection) * [Примечания к выпуску: gt@2.13.0](/devlog/gt_v2_13_0)