# General Translation Python SDKs: Объявление переменных и вариантов URL: https://generaltranslation.com/ru/docs/python/guides/declaring-variables.mdx --- title: Объявление переменных и вариантов description: Как сохранять динамические значения и генерировать ограниченный набор вариантов в Python с помощью General Translation declare_var, derive и decode_vars. related: links: - /docs/python/guides/translating-strings - /docs/python/guides/detecting-locale - /docs/python/guides/configuring - /docs/python/guides/storing-translations --- Некоторые значения в переведённой строке сами не должны переводиться. SDK для Python предоставляет для этого два маркера: [`declare_var`](/docs/python/reference/functions/declare-var) для по-настоящему динамических значений и [`derive`](/docs/python/reference/functions/derive) для значения с небольшим фиксированным набором исходов. ## Сохранение динамического значения с помощью `declare_var` [#declare-var] Оберните значение, известное только во время выполнения, — имя пользователя, адрес электронной почты, число — в `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` помечает такое значение, чтобы CLI создавал отдельный перевод для каждого варианта. Во время выполнения `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` увеличивает количество создаваемых записей.* ## Сочетайте оба подхода [#combine] Даже в производное предложение можно встроить по-настоящему динамическое значение с помощью `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`, сохранённый для обратной совместимости. В новом коде используйте `derive`.* ## Next steps - /docs/python/guides/translating-strings - /docs/python/guides/detecting-locale - /docs/python/guides/configuring - /docs/python/guides/storing-translations