
PolyLingo vs DeepL API: który lepiej zachowuje JSON i Markdown?
By Robert M
PolyLingo vs DeepL API: który lepiej zachowuje JSON i Markdown?
DeepL tworzy naprawdę doskonałe oprogramowanie do tłumaczeń. Jego neuronowy silnik tłumaczeniowy jest powszechnie uważany za jeden z najlepszych dostępnych, a w przypadku zwykłej prozy trudno go pokonać. Jeśli tłumaczysz zdania, akapity lub dokumenty napisane jako ciągły tekst, DeepL jest mocnym wyborem.
Pytanie, na które odpowiada ten wpis, jest węższe: jak działa DeepL API, gdy Twoja zawartość ma strukturę? Gdy musisz przetłumaczyć plik lokalizacyjny JSON bez zmieniania kluczy, lub wpis na blogu w Markdown bez łamania składni, lub stronę HTML bez uszkadzania atrybutów? I jak wypada na tle PolyLingo w tym konkretnym przypadku użycia?
Jak zbudowane jest DeepL API
API tłumaczenia tekstu DeepL przyjmuje zwykły tekst. To jest jego natywny format wejściowy. Każde żądanie akceptuje do 50 ciągów tekstowych i są one tłumaczone niezależnie, bez wspólnego kontekstu między nimi. Można określić tylko jeden język docelowy na żądanie. Jeśli potrzebujesz pięciu języków, wykonujesz pięć żądań.
DeepL obsługuje tłumaczenie dokumentów dla formatów takich jak PDF, Word, PowerPoint i HTML, ale odbywa się to przez osobny endpoint dokumentów z innym przebiegiem: przesyłasz plik, sprawdzasz status ukończenia, pobierasz wynik. Jest to zaprojektowane dla dokumentów biurowych, nie dla programistycznych przepływów treści.
Dla HTML istnieje parametr tag_handling, który możesz ustawić na html, co mówi DeepL, aby traktował wejście jako HTML i próbował zachować tagi. To działa całkiem dobrze dla prostego markupu, ale jest to opcjonalna flaga, którą musisz znać, aby ją ustawić, i nie rozciąga się na JSON ani Markdown.
Dla JSON nie ma natywnego wsparcia. Endpoint tekstowy DeepL nie wie, co to jest klucz JSON. Jeśli wyślesz mu serializowany obiekt JSON, przetłumaczy zawartość jako ciąg znaków i nie ma gwarancji, że klucze, struktura lub wartości niebędące ciągami pozostaną nienaruszone. Biblioteka R babeldown, która opakowuje DeepL dla zawartości Markdown, udokumentowała przypadki, w których DeepL miesza interpunkcję wewnątrz linków i formatowania Markdown, co jest znanym ograniczeniem przekazywania tekstu strukturalnego przez silnik tłumaczenia tekstu zwykłego.
To nie jest krytyka DeepL. To opis tego, do czego API zostało zaprojektowane. Główne zastosowanie DeepL to wysokiej jakości tłumaczenie prozy czytelnej dla ludzi. Na tym się skupia i jest w tym doskonałe.
Gdzie różnica ujawnia się w praktyce
Różnica staje się widoczna w momencie, gdy Twoja zawartość nie jest zwykłą prozą.
Weźmy standardowy plik lokalizacyjny 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"
}
}
Aby przetłumaczyć to za pomocą DeepL API na pięć języków, musiałbyś:
- Wyodrębnić każdą wartość tekstową osobno
- Wykonać osobne żądanie API dla każdego języka (pięć języków, pięć żądań)
- Odtworzyć strukturę JSON z przetłumaczonymi wartościami na właściwych miejscach
- Obsłużyć przypadki, gdy tłumaczenie zmieniło interpunkcję lub wprowadziło znaki łamiące poprawność JSON To niemała ilość kodu łączącego. Jest też podatne na błędy. Każde odchylenie w wyniku tłumaczenia od tego, czego oczekuje Twój parser, spowoduje cichą awarię lub błąd w czasie działania aplikacji.
Z PolyLingo wysyłasz obiekt tak, jak jest, z format: "json" i otrzymujesz z powrotem przetłumaczoną wersję całej struktury dla każdego języka docelowego w jednej odpowiedzi. Klucze pozostają nienaruszone. Zagnieżdżenia są zachowane. Wartości niebędące ciągami pozostają bez zmian. Wynik trafia bezpośrednio do Twojego projektu.
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"]
}'
Jedno żądanie. Pięć języków. Struktura nienaruszona.
Zawartość Markdown
Ten sam wzorzec dotyczy Markdown. Endpoint tekstowy DeepL nie ma pojęcia o składni Markdown. Wyślij mu wpis na blogu, a on przetworzy całość jako ciąg znaków. Nagłówki mogą przetrwać. Bloki kodu prawie na pewno nie, ponieważ zawartość w nich prawdopodobnie będzie traktowana jako tekst do tłumaczenia. Składnia linków może zostać uszkodzona, szczególnie wokół interpunkcji na granicach tekstu linku.
Flaga formatu markdown w PolyLingo instruuje model, aby traktował składnię Markdown jako strukturalną, a nie do tłumaczenia. Nagłówki pozostają nagłówkami. Bloki kodu pozostają dosłowne. URL-e linków nie są zmieniane. Zmienia się tylko zawartość prozy.
Dla strony dokumentacji lub bloga z treściami technicznymi różnica jest znacząca. Uszkodzony blok kodu w tutorialu to nie drobny problem prezentacyjny, to zepsuty tutorial.
Różnica między jednym żądaniem a jednym na język
Warto się nad tym zatrzymać, ponieważ implikacje kosztowe są realne.
API DeepL akceptuje tylko jeden język docelowy na żądanie. Aby przetłumaczyć fragment treści na dziesięć języków, wykonujesz dziesięć wywołań API. Dla dużej strony lub CMS z częstym publikowaniem to dziesięciokrotność obciążenia żądań, dziesięciokrotność opóźnienia do zarządzania i dziesięciokrotność punktów awarii.
PolyLingo akceptuje tablicę kodów języków docelowych i zwraca wszystkie tłumaczenia w jednej odpowiedzi. Trzydzieści sześć języków to jedno żądanie, nie trzydzieści sześć.
Dla małych projektów różnica jest do opanowania. Dla wszystkiego na dużą skalę zmienia to architekturę budowy Twojej linii tłumaczeń.
Model cenowy
DeepL pobiera opłaty za znak. Plan API Free pozwala na do 500 000 znaków miesięcznie, a plany płatne rozliczają się na podstawie zużycia znaków. Ponieważ wykonujesz jedno żądanie na język, liczba znaków dla fragmentu treści jest mnożona przez liczbę języków docelowych, do których ją wysyłasz, w osobnych żądaniach.
PolyLingo pobiera opłaty za token i liczy łącznie wejście i wyjście dla wszystkich języków w jednym żądaniu. Rozliczenie jest przejrzyste i przewidywalne: darmowy poziom obejmuje 50 000 tokenów miesięcznie, a plany płatne zaczynają się od 9 USD miesięcznie za 600 000 tokenów.
Oba modele nie są bezpośrednio porównywalne pod względem kosztu za słowo, ponieważ używają różnych jednostek, ale architektura PolyLingo z jednym żądaniem na wszystkie języki oznacza, że nie mnożysz liczby żądań liniowo przez liczbę języków docelowych.
Gdzie każdy z nich pasuje
DeepL API jest właściwym wyborem, gdy:
-
Twoja zawartość to zwykła proza bez wymagań strukturalnych
-
Jakość tłumaczenia tekstu czytelnego dla ludzi jest głównym priorytetem
-
Tłumaczysz na niewielką liczbę języków i wolumen żądań jest niski
-
Jesteś już zaangażowany w ekosystem DeepL i korzystasz z ich słownika lub funkcji formalności
-
Potrzebujesz wsparcia dla języka spoza obecnych 36 PolyLingo (DeepL obsługuje ponad 100 języków) PolyLingo jest właściwym wyborem, gdy:
-
Twoja zawartość to JSON, Markdown lub HTML i struktura musi być zachowana
-
Musisz tłumaczyć na wiele języków w jednym wywołaniu API
-
Budujesz integrację CMS lub pipeline i18n, gdzie efektywność żądań ma znaczenie
-
Chcesz spójny interfejs dla wszystkich formatów treści bez specyficznych obejść formatów
-
Chcesz rozliczanie oparte na tokenach z przewidywalnym miesięcznym limitem
Podsumowanie obok siebie
| PolyLingo | DeepL API | |
|---|---|---|
| Natywne wsparcie JSON | Tak | Nie |
| Natywne wsparcie Markdown | Tak | Nie |
| Wsparcie HTML | Tak | Tak (flaga tag_handling) |
| Wszystkie języki w jednym żądaniu | Tak | Nie, jeden język na żądanie |
| Automatyczne wykrywanie formatu treści | Tak | Nie |
| Obsługiwane języki | 36 | 100+ |
| Darmowy poziom | 50 000 tokenów/miesiąc | 500 000 znaków/miesiąc |
| Jednostka rozliczeniowa | Token | Znak |
| Tłumacz webowy bez kodu | Tak | Tak (aplikacja webowa) |
DeepL ma większy katalog języków i dłuższą historię jakości tłumaczeń prozy. PolyLingo jest specjalnie zbudowane dla przepływów pracy z zawartością strukturalną, gdzie integralność formatu jest niepodważalna.
Rozwiązują sąsiednie problemy. Właściwy wybór zależy od tego, jak faktycznie wygląda Twoja zawartość.
Wypróbuj PolyLingo
Darmowy poziom obejmuje 50 000 tokenów miesięcznie. Nie jest wymagana karta kredytowa. Pełna dokumentacja API jest dostępna na 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"]
}'