# General Translation React SDKs (gt-react, gt-next): declareVar URL: https://generaltranslation.com/ru/docs/react/reference/functions/declare-var.mdx --- title: declareVar description: Помечает непереводимую переменную в производном контенте с помощью General Translation gt-react. Справочник API для declareVar. --- Функция `declareVar` помечает динамический контент в контенте [`derive`](/docs/react/reference/functions/derive), которое должно быть исключено из перевода и обрабатываться как переменная во время выполнения. Это строковый эквивалент компонента [``](/docs/react/reference/components/var). *Доступно в `gt-react`, `gt-next`, `gt-tanstack-start` и `gt-react-native`. В примерах используется импорт из `gt-react`; вместо него импортируйте из пакета вашего фреймворка.* ## Обзор [#overview] Оберните динамическое значение в функцию, которую анализирует `derive`. `declareVar` оборачивает его в совместимый с ICU заполнитель, который во время выполнения подставляет исходное значение. ```tsx function getGreeting(name) { return 'Hello, ' + declareVar(name); // "Hello, {_gt_, select, other {Brian}}" } gt(`${derive(getGreeting(name))}. How are you?`); // "Hello, Brian. How are you?" ``` *Примечание: используйте `declareVar` только внутри функций, вызываемых из [`derive`](/docs/react/reference/functions/derive). Чтобы удалить маркеры ICU при обработке строк, используйте [`decodeVars`](/docs/react/reference/functions/decode-vars).* ## Как это работает [#how-it-works] Когда значение оборачивается с помощью `declareVar`, происходит следующее: 1. Значение преобразуется в формат ICU-выражения `select`. 2. Оно помечается как динамический контент для обработки при переводе. 3. Оно исключается из вычисления хеша перевода. 4. Исходное значение сохраняется для интерполяции во время выполнения. На выходе получается строка, совместимая с ICU MessageFormat: ```tsx declareVar('John'); // → "{_gt_, select, other {John}}" ``` ## Параметры [#parameters] | Параметр | Описание | Тип | Необязателен | По умолчанию | | ----------------------- | ------------------------------------------------------------- | -------------------------------------------------- | ------------ | ------------ | | [`variable`](#variable) | Динамическое значение, которое нужно пометить как переменную. | `string \| number \| boolean \| null \| undefined` | Нет | — | | [`options`](#options) | Параметры, такие как `$name`. | `object` | Да | — | ### `variable` [#variable] **Тип** `string | number | boolean | null | undefined` · **Обязательно** Динамическое значение, которое следует пометить как переменную. ### `options` [#options] **Тип** `object` · **Необязательно** Параметры переменной. `options.$name` (`string`) задаёт имя переменной для контекста перевода, аналогично пропу `name` у [``](/docs/react/reference/components/var). ## Возвращает [#returns] **Тип** `string` Строка, содержащая ICU-совместимые маркеры, которые сохраняют исходное значение и позволяют восстановить его во время выполнения. ## Примеры [#examples] ```tsx title="BasicUsage.tsx" import { derive, declareVar, gt } from 'gt-react'; function getGreeting(name) { return `Hello, ${declareVar(name)}!`; } function Component() { const name = 'Brian'; const message = gt(`${derive(getGreeting(name))} Welcome back.`); return

{message}

; } ``` ```tsx title="WithOtherFunctions.tsx" import { declareVar, derive, useGT } from 'gt-react'; function Component({ name1, name2 }) { const gt = useGT(); const message = gt('Hello, {name1}! My name is ' + derive(declareVar(name2)), { name1 }); return

{message}

; // «Привет, Brian! Меня зовут Archie» } ``` ## Примечания [#notes] * Используйте `declareVar` только внутри функций, вызываемых из [`derive`](/docs/react/reference/functions/derive). * Она добавляет ICU-маркеры, которые могут мешать обработке строк; при необходимости используйте [`decodeVars`](/docs/react/reference/functions/decode-vars), чтобы получить исходные значения. * Переменные исключаются из перевода и сохраняются во время выполнения. * Для JSX-варианта см. компонент [``](/docs/react/reference/components/var).