Повернутися до блогу
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 — це сильний вибір.

Питання, на яке відповідає цей допис, є більш вузьким: як працює DeepL API, коли ваш контент має структуру? Коли потрібно перекласти JSON-файл локалізації, не торкаючись ключів, або блог-пост у Markdown, не порушуючи синтаксис, або HTML-сторінку, не пошкоджуючи атрибути? І як це порівнюється з PolyLingo для цього конкретного випадку?


Як побудований DeepL API

API перекладу тексту DeepL приймає простий текст. Це його рідний формат введення. Кожен запит приймає до 50 текстових рядків, які перекладаються незалежно, без спільного контексту між ними. Можна вказати лише одну цільову мову на запит. Якщо вам потрібно п’ять мов, ви робите п’ять запитів.

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

Для HTML конкретно є параметр tag_handling, який можна встановити в html, що каже DeepL обробляти вхідні дані як HTML і намагатися зберегти теги. Це працює досить добре для простої розмітки, але це опційний прапорець, який потрібно знати і встановити, і він не поширюється на JSON або Markdown.

Для JSON немає рідної підтримки. Текстова кінцева точка DeepL не знає, що таке ключ JSON. Якщо ви надішлете серіалізований JSON-об’єкт, він перекладе вміст як рядок, і немає гарантії, що ключі, структура або не рядкові значення залишаться цілими. Бібліотека babeldown для R, яка обгортає DeepL для Markdown-контенту, задокументувала випадки, коли DeepL плутає пунктуацію всередині Markdown-посилань і форматування, що є відомим обмеженням передачі структурованого тексту через простий текстовий перекладач.

Це не критика DeepL. Це опис того, для чого API було створено. Основне використання DeepL — це високоякісний переклад текстів, зрозумілих людині. Саме на це він оптимізований і в цьому він відмінний.


Де різниця проявляється на практиці

Різниця стає помітною в момент, коли ваш контент не є простим прозовим текстом.

Розглянемо стандартний файл локалізації Next.js:

{
  "nav": {
    "home": "Home",
    "about": "About us",
    "contact": "Get in touch"
  },
  "hero": {
    "title": "Welcome to our platform",
    "subtitle": "Everything you need in one place"
  }
}

Щоб перекласти це за допомогою DeepL API на п’ять мов, вам потрібно:

  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\":\"Home\",\"about\":\"About us\"}}",
    "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 з одним запитом для всіх мов означає, що ви не множите кількість запитів лінійно на кількість цільових мов.


Де кожен підходить

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

  • Ваш контент — це простий прозовий текст без структурних вимог
  • Якість перекладу для тексту, зрозумілого людиною, є головним пріоритетом
  • Ви перекладаєте на невелику кількість мов і обсяг запитів низький
  • Ви вже інвестували в екосистему 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": "# Hello\n\nThis is **structured** content.",
    "format": "markdown",
    "targets": ["fr", "de", "es"]
  }'

Отримайте свій API ключ