# General Translation Knowledge Base: Как дать ИИ-переводчику достаточно контекста для строк в ПО?
URL: https://generaltranslation.com/ru/kb/ai-translation-context.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Переводите сообщения целиком и сопровождайте их заметками о значении, описанием ролей подсказок, ограничениями длины и общей терминологией. CLI General Translation извлекает размеченный JSX как структурированный блок и передаёт контекстные заметки в генерацию. Для существующих JSON- и YAML-каталогов инструкции к отдельным строкам задаются через метаданные, привязанные к ключам. Контекстные группы применяют ваш Glossary и пользовательские промпты ко всем назначенным проектам, а рецензенты исправляют результат в панели управления.
Category: Перевод
Last updated: 2026-11-13
Authors: Jackie Chen
Published: 2026-11-13

У короткой строки интерфейса может быть несколько правильных переводов. Возьмём «Free»: на значке с ценой это слово означает «бесплатно» (по-немецки *kostenlos*), а на схеме мест — «свободно» (по-немецки *frei*). По одному слову не понять, какое значение вы имеете в виду. Передавайте ту информацию, о которой спросил бы переводчик-человек: что описывает текст и что пользователь может сделать дальше.

## Какой контекст нужен модели перевода?

| Контекст                           | Что он сообщает модели                                                                    | Пример                                                                                | Как его передать                             |
| ---------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------- |
| Окружающее предложение или блок UI | Как слова связаны между собой, включая ссылки и форматирование                            | «Прочитайте наши **условия**, прежде чем продолжить» переводится как одно предложение | Переводите блоки целиком, а не по фрагментам |
| Заметка о значении                 | Какое значение многозначного слова имеется в виду                                         | «Free» означает «свободный», а не «бесплатный»                                        | Описание, комментарий или заметка `context`  |
| Роль в UI и ограничение длины      | Что это: кнопка, заголовок или всплывающая подсказка, и сколько места доступно для текста | Метка вкладки, которая должна уложиться в 12 символов                                 | Заметка о роли и максимальная длина          |
| Переменные и подсказки           | Что содержит значение и что его не нужно переводить                                       | `{name}` — имя человека                                                               | Синтаксис подсказок и заметка             |
| Терминология                       | Названия продуктов и термины с единственным утверждённым переводом                        | «Workspace» никогда не переводится как «офис»                                         | Глоссарий                                    |
| Тон и степень формальности         | Как продукт обращается к пользователю                                                     | Вежливое *Sie* в немецком                                                             | Стилистические правила                       |
| Где отображается текст             | Как выглядит экран вокруг строки                                                          | Скриншот страницы оформления заказа                                                   | Скриншоты, прикреплённые в TMS               |

Терминология и стилистические правила действуют для каждой строки, поэтому их достаточно задать один раз. О том, как сохранять единообразие терминов, рассказывается в [руководстве по глоссарию](/kb/ai-translation-glossary). Всё остальное — контекст отдельных строк, и именно в этом рабочие процессы различаются сильнее всего.

## Как рабочие процессы на основе каталогов передают контекст?

Когда строки хранятся в каталогах «ключ — значение», контекст передаётся в полях рядом с каждым ключом:

* **Описания сообщений.** [Дескрипторы сообщений react-intl](https://formatjs.github.io/docs/react-intl/api#message-descriptor) принимают поле `description`, которое может сохраняться при извлечении. В PO-файлах gettext есть извлечённые комментарии (`#.`) для переводчиков и поле [`msgctxt`](https://www.gnu.org/software/gettext/manual/html_node/Contexts.html), позволяющее различать одинаковые строки с разным значением.
* **Комментарии платформ.** XML-файлы Android и файлы Apple `.strings` поддерживают комментарии; в записях Apple String Catalogs и .NET `.resx` есть поля для комментариев. Ваш экспорт и интеграция перевода должны передавать эти заметки дальше.
* **Имена ключей.** Ключ вроде `pricing.badge.free` подсказывает смысл, но модель не может на это полагаться. О том, как называть ключи по смыслу, рассказывает [руководство по именованию ключей](/kb/i18n-key-naming).
* **Поля TMS.** Системы управления переводами добавляют к каждому ключу описания, скриншоты и ограничения на количество символов. Например, [SimpleLocalize](/kb/general-translation-vs-simplelocalize) хранит для каждого ключа описание для кода, написанное разработчиком, и описание для переводчика. [SimpleLocalize AI](https://simplelocalize.io/docs/general/auto-translation/#simplelocalize-ai) использует эти описания, скриншоты и комментарии при переводе.

Не разбивайте предложения: храните каждое целиком, вместе с заполнителями и разметкой. В каталоге его можно держать под одним ключом, а если разделить его на отдельно переводимые фрагменты, переставить слова будет сложнее. Затем убедитесь, что заметки доходят до этапа перевода. Описание в редакторе или исходном файле полезно, только если интеграция передаёт его дальше.

## Как General Translation передаёт контекст из вашего кода?

Всё начинается с компонента. [`<T>`](/docs/react/reference/components/t) помечает блок JSX, а CLI извлекает из него текст, структуру элементов, подсказки переменных и заметку и передаёт их сервису перевода. SDK выполняет рендеринг результата, подставляя ваши значения, доступные во время выполнения:

```tsx title="src/SeatStatus.tsx"
import { T, Var } from 'gt-react';

export function SeatStatus({ seat }: { seat: string }) {
  return (
    <T context="Seat map. Free means the seat is available, not that it costs nothing.">
      <p>
        Seat <Var>{seat}</Var> is free. <a href="/checkout">Book it now</a>
      </p>
    </T>
  );
}
```

* **Единица перевода — блок.** Предложение, подсказка места и текст ссылки передаются вместе, поэтому сервис может переводить их и менять их порядок, сохраняя элементы. Значение места, вычисляемое во время выполнения, остаётся в приложении. В [руководстве по условному JSX](/kb/translate-conditional-jsx) показано, как это работает для предложений с ветвями.
* **Заметки и ограничения — рядом с текстом.** Проп `context` устраняет неоднозначность, а проп `maxChars` задаёт ограничение длины по принципу best-effort, например `<T maxChars={12}>` для метки вкладки. Строки вне JSX принимают те же параметры в [`gt()`](/docs/react/reference/hooks/use-gt) в виде `$context` и `$maxChars`.
* **Исходный код как контекст.** В разделе `files.gt.parsingFlags` файла `gt.config.json` задайте для `includeSourceCodeContext` значение `true`, чтобы передавать окружающие строки исходного кода как дополнительный контекст. Эта функция требует явного включения и дополняет извлечённый блок. (См. [разбор встроенного контента](/docs/cli/reference/formats/gt-jsx-files#parsing).)
* **Значения, которые не переводятся.** Оберните имена, адреса электронной почты и другие динамические значения в [`<Var>`](/docs/react/reference/components/var): их содержимое не отправляется на перевод, а подсказка в переводе остаётся на месте.
* **Контекст для существующих каталогов.** Для файлов JSON и YAML сопутствующий файл [метаданных, привязанных к ключам](/docs/cli/reference/keyed-metadata) добавляет к каждому ключу заметку `context` и ограничение `maxChars`. Комментарии в файлах [Android `strings.xml`](/docs/cli/reference/formats/android-strings-files), [Apple `.strings`](/docs/cli/reference/formats/dot-strings-files) и [`.resx`](/docs/cli/reference/formats/resx-files) передаются при переводе в качестве контекста.
* **Общие термины и тон.** [Контекстные группы](/docs/platform/dashboard/guides/defining-context-for-translations) содержат Glossary и пользовательские промпты и применяют их ко всем проектам, которым назначены. Создайте группу из проекта с помощью **Autogenerate from project files**, чтобы получить черновики терминов и промптов на основе существующих текстов. Агент для написания кода может обновлять их через [MCP-сервер](/docs/overview/for-coding-agents#mcp) General Translation.

Для каталога с ключами та же инструкция о схеме мест размещается рядом с исходным файлом. Эти два файла позволяют сохранить существующий ключ и библиотеку:

```json title="locales/en.json"
{
  "seatStatus": "Free"
}
```

```json title="locales/en.metadata.json"
{
  "seatStatus": {
    "context": "Seat map. Free means the seat is available, not that it costs nothing.",
    "maxChars": 12
  }
}
```

## Как понять, что контекста достаточно?

Соберите кнопки из одного слова, многозначные слова, предложения с переменными и формы множественного числа. Переведите их на языки, с которых начинаете запуск, и попросите человека, владеющего каждым из этих языков, проверить их в [панели управления](/kb/review-translations). Исправьте там текущие формулировки, а затем добавьте недостающую информацию туда, где ей место: заметку `context` для этой строки, а если проблема будет повторяться — термин в Glossary или пользовательский промпт. Обновлённые инструкции учитываются при последующей генерации, но сами по себе не меняют уже сохранённые переводы. О том, как провести более полную оценку, рассказано в [руководстве по точности ИИ-перевода](/kb/is-ai-translation-accurate).

## Ключевые выводы

* Храните сообщение вместе с его заполнителями — независимо от того, пишете ли вы его в JSX или под ключом каталога.
* General Translation передаёт при генерации размеченную структуру и явные заметки; строки источника (при явном включении) и общие контекстные группы дают дополнительный смысл, выходящий за рамки самого сообщения.
* Исправляйте уже готовый результат и улучшайте инструкции для будущих переводов. Смысл и компоновку проверяйте по отдельности.

## Related questions

- [Как обеспечить единообразие терминологии при ИИ-переводе?](https://generaltranslation.com/ru/kb/ai-translation-glossary.mdx): Ведите единый глоссарий утверждённых терминов, включая названия, которые не переводятся, применяйте его к каждому запросу на перевод, исключайте переменные и код из перевода и проверяйте результат. В General Translation для этого служат контекстные группы (Context Groups): их Glossary и пользовательские промпты (пользовательские промпты) применяются к каждому проекту, которому назначена группа, а компонент Var — к значениям, которые никогда не переводятся.
- [Достаточно ли точен ИИ-перевод для приложения в рабочей среде?](https://generaltranslation.com/ru/kb/is-ai-translation-accurate.mdx): Для распространённых языков — зачастую да, но только после проверки на ваших языках, строках UI и контенте с повышенными рисками. На WMT25 Gemini 2.5 Pro не уступил эталонным переводам, выполненным людьми, или превзошёл их в 10 из 16 языковых пар, однако бенчмарк на документах не показывает, готовы ли к выпуску короткие строки интерфейса.
- [Как перевести условный текст в JSX?](https://generaltranslation.com/ru/kb/translate-conditional-jsx.mdx): Не разбивайте предложение и переводите каждый его вариант целиком, ведь тернарный оператор дробит его на фрагменты, которые теряют смысл и своё место в порядке слов каждого языка. В General Translation для этого используется `<Branch>` внутри `<T>`, который переводит предложение как единое целое.
- [Можно ли локализовать ПО без переводчиков и команды локализации?](https://generaltranslation.com/ru/kb/localize-without-translators.mdx): Да, локализация возможна и без отдельной команды переводчиков. General Translation генерирует новые и изменённые тексты во время сборки, опираясь на контекст кода и общую терминологию, а Locadex умеет размечать новый текст в React и Next.js. Двуязычные коллеги или внештатные рецензенты правят формулировки в панели управления — без платы за пользовательские места. Требования к проверке задаются в зависимости от языка и цены ошибки.
- [Как называть ключи переводов i18n?](https://generaltranslation.com/ru/kb/i18n-key-naming.mdx): Называйте ключи по тому, где отображается текст и что он означает, например checkout.summary.title, а не по его английской формулировке. Для каждого отдельного случая использования заводите собственный ключ, даже если английский текст совпадает: в немецком кнопка Open переводится как Öffnen, а статус Open — как Offen.

## Previous and next questions

- Previous question: [General Translation или SimpleLocalize: что выбрать?](https://generaltranslation.com/ru/kb/general-translation-vs-simplelocalize.mdx)
- Next question: [Можно ли локализовать ПО без переводчиков и команды локализации?](https://generaltranslation.com/ru/kb/localize-without-translators.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/ru/kb/sitemap.md) for every article.
