# General Translation Python SDKs: Объявление переменных и вариантов
URL: https://generaltranslation.com/ru/docs/python/guides/declaring-variables.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как сохранять динамические значения и генерировать ограниченный набор вариантов в переведённых строках Python с помощью General Translation.

Некоторые значения в переведённой строке сами не должны переводиться. SDK для Python предоставляет для этого два маркера: [`declare_var`](/docs/python/reference/functions/declare-var) для по-настоящему динамических значений и [`derive`](/docs/python/reference/functions/derive) для значения с небольшим фиксированным набором исходов.

## Сохранение динамического значения с помощью `declare_var` [#declare-var]

Оберните значение, известное только во время выполнения, — имя пользователя, адрес электронной почты, число — в [`declare_var`](/docs/python/reference/functions/declare-var), чтобы оно встраивалось в сообщение и сохранялось, а не переводилось. Функция возвращает ICU-конструкцию `{_gt_, select, ...}`, которую нужно поместить внутрь вызова [`t`](/docs/python/reference/functions/t).

```python
from gt_flask import t, declare_var

t(f"Signed in as {declare_var(email, name='email')}")
```

Необязательный параметр `name` — это человекочитаемая метка переменной, полезная для переводчиков и для функции [`decode_vars`](/docs/python/reference/functions/decode-vars).

## Генерация конечных вариантов с `derive` [#derive]

Когда предложение содержит значение с небольшим фиксированным набором исходов, одного перевода недостаточно — в других языках окружающие слова для каждого исхода могут изменяться по-разному. [`derive`](/docs/python/reference/functions/derive) помечает такое значение, чтобы CLI создавал отдельный перевод для каждого варианта. Во время выполнения [`derive`](/docs/python/reference/functions/derive) возвращает входное значение без изменений; во время извлечения CLI создает по одной записи для каждого исхода.

```python
from gt_flask import t, derive

gender = "male"
t(f"The {derive('boy' if gender == 'male' else 'girl')} is playing.")
# Генерирует: "The boy is playing." и "The girl is playing."
```

Каждый вариант переводится независимо, поэтому каждая версия звучит естественно на любом языке.

*Примечание: Старайтесь, чтобы набор производных исходов оставался небольшим. Каждый дополнительный вызов [`derive`](/docs/python/reference/functions/derive) увеличивает количество создаваемых записей.*

## Сочетайте оба подхода [#combine]

Даже в производное предложение можно встроить по-настоящему динамическое значение с помощью [`declare_var`](/docs/python/reference/functions/declare-var), чтобы оно сохранялось, а не переводилось.

```python
from gt_flask import t, derive, declare_var

t(f"{declare_var(name, name='name')} adopted a {derive('cat' if is_cat else 'dog')}.")
```

## Извлечение встроенных значений с помощью `decode_vars` [#decode]

[`decode_vars`](/docs/python/reference/functions/decode-vars) заменяет конструкции `{_gt_, select, other {value}}` в строке на встроенные в них значения — это полезно, когда нужно получить обратно обычную заполненную строку из размеченной.

```python
from gt_i18n import declare_var, decode_vars

marked = f"Signed in as {declare_var('a@b.com', name='email')}"
decode_vars(marked)  # "Signed in as a@b.com"
```

*Примечание: [`declare_static`](/docs/python/reference/functions/declare-static) — устаревший алиас [`derive`](/docs/python/reference/functions/derive), сохранённый для обратной совместимости. В новом коде используйте [`derive`](/docs/python/reference/functions/derive).*

## Next steps

- /docs/python/guides/translating-strings
- /docs/python/guides/detecting-locale
- /docs/python/guides/configuring
- /docs/python/guides/storing-translations

## Sitemap

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