# Yandex Translate API: Перевести HTML с терминами из глоссария

Сценарий из mcp-everything. Актуально на 2026-10-24.

Перевод страниц и писем с разметкой, где названия продуктов и термины должны переводиться одинаково.

1. Отправь запрос: POST /translate/v2/translate с format = HTML — разметка сохранится, переведётся только текст.
2. Для глоссария обязательно укажи sourceLanguageCode и передай glossaryConfig.glossaryData.glossaryPairs — до 50 пар sourceText и translatedText (до 20 000 символов).
3. Чтобы термин переводился ровно как в глоссарии, поставь exact = true.

```bash
curl -X POST https://translate.api.cloud.yandex.net/translate/v2/translate \
  -H "Authorization: Api-Key $YANDEX_API_KEY" -H 'Content-Type: application/json' \
  -d '{
        "sourceLanguageCode": "ru",
        "targetLanguageCode": "en",
        "format": "HTML",
        "texts": ["<p>Оформите <b>Подписку Плюс</b> и получайте бесплатную доставку.</p>"],
        "glossaryConfig": {"glossaryData": {"glossaryPairs": [{"sourceText": "Подписка Плюс", "translatedText": "Plus Membership", "exact": true}]}}
      }'
```

## Базовые URL

- Боевой: `https://translate.api.cloud.yandex.net`

## Авторизация

Тип: Bearer-токен

- IAM-токен (пользовательский или сервисный аккаунт): `Authorization: Bearer <IAM-токен>`
- API-ключ (сервисный аккаунт): `Authorization: Api-Key <API-ключ>`

Пользовательский аккаунт авторизуется только IAM-токеном и обязательно передаёт `folderId` в теле запроса; для сервисного аккаунта `folderId` не указывается.

## Методы сценария

### POST /translate/v2/translate — Перевод текста

Пример тела:

В ответе — массив `translations`: `text` (перевод) и `detectedLanguageCode` (язык исходного текста).

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `targetLanguageCode` | body | string | да | Язык перевода, до 3 символов (обычно ISO 639-1) |
| `texts` | body | array | да | Строки для перевода, суммарно до 10 000 символов |
| `sourceLanguageCode` | body | string | нет | Язык исходного текста; нужен для перевода с глоссарием |
| `format` | body | string | нет | PLAIN_TEXT (по умолчанию) или HTML |
| `folderId` | body | string | нет | ID каталога; обязателен для пользовательского аккаунта |
| `model` | body | string | нет | ID пользовательской модели |
| `glossaryConfig.glossaryData.glossaryPairs` | body | array | нет | Пары глоссария: от 1 до 50 |
| `glossaryConfig.glossaryData.glossaryPairs[].sourceText` | body | string | да | Текст на исходном языке |
| `glossaryConfig.glossaryData.glossaryPairs[].translatedText` | body | string | да | Текст на целевом языке |
| `glossaryConfig.glossaryData.glossaryPairs[].exact` | body | boolean | нет | Точный перевод термина (нейроглоссарий) |
| `speller` | body | boolean | нет | Проверка орфографии |

Пример запроса:

```
{
    "folderId": "<идентификатор_каталога>",
    "texts": ["Hello", "World"],
    "targetLanguageCode": "ru"
}
```

Пример ответа:

```json
export API_KEY=<API-ключ>
curl \
  --request POST \
  --header "Content-Type: application/json" \
  --header "Authorization: Api-Key ${API_KEY}" \
  --data '@body.json' \
  "https://translate.api.cloud.yandex.net/translate/v2/translate"
```

## Нюансы

- Если `sourceLanguageCode` не передан, исходный язык определяется автоматически.
- Глоссарий передаётся только в теле запроса (`glossaryData`): до 50 пар и до 20 000 символов Unicode.
- Коды языков в основном ISO 639-1, но формат этим не ограничен; названия языков — на английском.

## Другие сценарии

- [Перевести тексты на нужный язык](https://mcp-everything.ru/integrations/yandex-translate/scenarios/perevesti-teksty-na-nuzhnyy-yazyk.md)
- [Определить язык текста](https://mcp-everything.ru/integrations/yandex-translate/scenarios/opredelit-yazyk-teksta.md)

---

Если этого недостаточно — официальная документация: https://aistudio.yandex.ru/ru/docs/translate/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-translate.md
