Назад в блог
Split-screen flat illustration on a white background. Left side shows a simple document icon labeled “.txt” in muted blue-grey, producing a single output document tagged “EN.” Right side shows a JSON file with visible nested keys, connected to three separate document outputs labeled “EN,” “FR,” and “ES.” The right side uses teal and amber accents. A thin vertical line divides the two halves. Clean geometric style, minimal detail, no people or branding.

PolyLingo против DeepL API: кто лучше сохраняет JSON и Markdown?

By Robert M

PolyLingo против DeepL API: что лучше сохраняет JSON и Markdown?

DeepL создает действительно отличное программное обеспечение для перевода. Его нейронный переводческий движок широко признан одним из лучших, и для простой прозы его трудно превзойти. Если вы переводите предложения, абзацы или документы, написанные сплошным текстом, DeepL — сильный выбор.

Вопрос, на который отвечает этот пост, более узкий: как API DeepL работает, когда ваш контент имеет структуру? Когда нужно перевести JSON-файл локализации, не трогая ключи, или блог-пост в Markdown, не нарушая синтаксис, или HTML-страницу, не искажая атрибуты? И как он сравнивается с PolyLingo для этого конкретного случая?


Как построен API DeepL

API перевода текста DeepL принимает простой текст. Это его нативный формат ввода. Каждый запрос принимает до 50 текстовых строк, которые переводятся независимо, без общего контекста между ними. В запросе можно указать только один целевой язык. Если вам нужно пять языков, делаете пять запросов.

DeepL поддерживает перевод документов для форматов PDF, Word, PowerPoint и HTML, но это происходит через отдельный документный эндпоинт с другим процессом: загрузка файла, опрос статуса, скачивание результата. Это предназначено для офисных документов, а не для программных конвейеров контента.

Для HTML есть параметр tag_handling, который можно установить в html, что говорит DeepL обрабатывать вход как HTML и пытаться сохранять теги. Это работает достаточно хорошо для простой разметки, но это опциональный флаг, который нужно знать и установить, и он не распространяется на JSON или Markdown.

Для JSON нативной поддержки нет. Текстовый эндпоинт DeepL не знает, что такое ключ JSON. Если отправить сериализованный JSON-объект, он переведет содержимое как строку, и нет гарантии, что ключи, структура или нестроковые значения сохранятся целыми. Библиотека R babeldown, которая оборачивает DeepL для Markdown-контента, документировала случаи, когда DeepL путает пунктуацию внутри Markdown-ссылок и форматирования, что является известным ограничением передачи структурированного текста через движок перевода простого текста.

Это не критика DeepL. Это описание того, для чего API был разработан. Основной кейс DeepL — высококачественный перевод читаемой человеком прозы. На это он оптимизирован и в этом он превосходен.


Где разрыв проявляется на практике

Разница становится заметна, как только ваш контент перестает быть простой прозой.

Рассмотрим стандартный файл локализации Next.js:

{
  "nav": {
    "home": "Главная",
    "about": "О нас",
    "contact": "Связаться"
  },
  "hero": {
    "title": "Добро пожаловать на нашу платформу",
    "subtitle": "Всё, что вам нужно, в одном месте"
  }
}

Чтобы перевести это с помощью API DeepL на пять языков, вам нужно:

  1. Извлечь каждое строковое значение отдельно
  2. Сделать отдельный API-запрос для каждого языка (пять языков, пять запросов)
  3. Воссоздать JSON-структуру с переведёнными значениями на нужных местах
  4. Обработать случаи, когда перевод изменил пунктуацию или ввёл символы, нарушающие валидность JSON

Это немалое количество вспомогательного кода. Это также хрупко. Любое отклонение в выходных данных перевода от ожидаемого парсером вызовет тихую ошибку или ошибку во время выполнения в вашем приложении.

С PolyLingo вы отправляете объект как есть с format: "json" и получаете обратно переведённую версию полной структуры для каждого целевого языка в одном ответе. Ключи остаются нетронутыми. Вложенность сохраняется. Нестроковые значения остаются без изменений. Вывод сразу готов к использованию в вашем проекте.

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "{\"nav\":{\"home\":\"Главная\",\"about\":\"О нас\"}}",
    "format": "json",
    "targets": ["fr", "de", "es", "ja", "nl"]
  }'

Один запрос. Пять языков. Структура сохранена.


Контент Markdown

Та же схема применима к Markdown. Текстовый эндпоинт DeepL не понимает синтаксис Markdown. Отправьте блог-пост, и он обработает всё как строку. Заголовки могут сохраниться. Блоки кода почти наверняка нет, так как содержимое внутри них, скорее всего, будет обрабатываться как переводимый текст. Синтаксис ссылок может быть искажен, особенно вокруг пунктуации на границах текста ссылки.

Флаг формата markdown PolyLingo инструктирует модель воспринимать синтаксис Markdown как структурный, а не переводимый. Заголовки остаются заголовками. Ограждённые блоки кода остаются без изменений. URL ссылок не меняются. Меняется только текстовая часть.

Для сайта документации или блога с техническим контентом разница существенна. Повреждённый блок кода в учебнике — это не мелкая проблема отображения, это сломанный учебник.


Разница между одним запросом и запросом на каждый язык

Это стоит обсудить, потому что последствия для стоимости реальны.

API DeepL принимает только один целевой язык на запрос. Чтобы перевести контент на десять языков, нужно сделать десять вызовов API. Для большого сайта или CMS с частыми публикациями это в десять раз больше накладных расходов на запросы, в десять раз больше задержек и в десять раз больше точек отказа.

PolyLingo принимает массив кодов целевых языков и возвращает все переводы в одном ответе. Тридцать шесть языков — один запрос, а не тридцать шесть.

Для небольших проектов разница управляемая. Для масштабных — меняет архитектуру построения конвейера перевода.


Модель ценообразования

DeepL взимает плату за символ. Бесплатный план API позволяет до 500 000 символов в месяц, а платные планы тарифицируются по потреблению символов. Поскольку вы делаете один запрос на язык, количество символов для контента умножается на количество целевых языков в отдельных запросах.

PolyLingo взимает плату за токен и считает сумму входных и выходных токенов для всех языков в одном запросе. Оплата прозрачна и предсказуема: бесплатный уровень включает 50 000 токенов в месяц, платные планы начинаются с $9 в месяц за 600 000 токенов.

Эти две модели нельзя напрямую сравнивать по стоимости за слово, так как используются разные единицы, но архитектура PolyLingo с одним запросом на все языки означает, что вы не умножаете количество запросов линейно на число целевых языков.


Где каждый подходит

API DeepL — правильный выбор, когда:

  • Ваш контент — простая проза без структурных требований
  • Качество перевода для читаемого человеком текста — главный приоритет
  • Вы переводите на небольшое количество языков и объем запросов невелик
  • Вы уже инвестировали в экосистему DeepL и используете их глоссарий или функции формальности
  • Вам нужна поддержка языка вне текущих 36 PolyLingo (DeepL поддерживает более 100 языков)

PolyLingo — правильный выбор, когда:

  • Ваш контент — JSON, Markdown или HTML, и структура должна сохраняться
  • Нужно переводить на несколько языков в одном API-вызове
  • Вы строите интеграцию CMS или i18n-конвейер, где важна эффективность запросов
  • Хотите единый интерфейс для всех форматов контента без обходных путей для конкретных форматов
  • Хотите оплату по токенам с предсказуемой ежемесячной квотой

Сравнительная таблица

PolyLingoDeepL API
Нативная поддержка JSONДаНет
Нативная поддержка MarkdownДаНет
Поддержка HTMLДаДа (флаг tag_handling)
Все языки в одном запросеДаНет, один язык на запрос
Автоопределение формата контентаДаНет
Поддерживаемые языки36100+
Бесплатный уровень50 000 токенов/мес500 000 символов/мес
Единица оплатыТокенСимвол
Веб-переводчик без кодаДаДа (веб-приложение)

DeepL имеет более широкий каталог языков и более длительную историю качества перевода прозы. PolyLingo создан для рабочих процессов со структурированным контентом, где целостность формата не обсуждается.

Они решают смежные задачи. Правильный выбор зависит от того, как выглядит ваш контент.


Попробуйте PolyLingo

Бесплатный уровень включает 50 000 токенов в месяц. Кредитная карта не требуется. Полная документация API доступна на usepolylingo.com/docs.

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# Привет\n\nЭто **структурированный** контент.",
    "format": "markdown",
    "targets": ["fr", "de", "es"]
  }'

Получите ваш API-ключ