
PolyLingo vs DeepL API: hvilken bevarer JSON og Markdown best?
By Robert M
PolyLingo vs DeepL API: hvilken bevarer JSON og Markdown best?
DeepL lager virkelig utmerket oversettelsessoftware. Deres nevrale oversettelsesmotor regnes bredt som en av de beste tilgjengelige, og for vanlig prosa er det vanskelig å slå. Hvis du oversetter setninger, avsnitt eller dokumenter skrevet som kontinuerlig tekst, er DeepL et sterkt valg.
Spørsmålet denne posten svarer på er snevrere: hvordan fungerer DeepL API når innholdet ditt har struktur? Når du må oversette en JSON-lokalisasjonsfil uten å berøre nøklene, eller et Markdown-blogginnlegg uten å bryte syntaksen, eller en HTML-side uten å ødelegge attributtene? Og hvordan sammenlignes det med PolyLingo for det spesifikke bruksområdet?
Hvordan DeepL API er bygget
DeepL tekstoversettelses-API tar imot ren tekst. Det er dets native inndataformat. Hver forespørsel godtar opptil 50 tekststrenger, og de oversettes uavhengig, uten delt kontekst mellom dem. Bare ett målspråk kan spesifiseres per forespørsel. Hvis du trenger fem språk, må du gjøre fem forespørsler.
DeepL støtter dokumentoversettelse for formater som PDF, Word, PowerPoint og HTML, men det går gjennom en separat dokumentendepunkt med en annen flyt: last opp filen, sjekk for ferdigstillelse, last ned resultatet. Det er designet for kontordokumenter, ikke for programmerbare innholdspipelines.
For HTML spesielt finnes det en tag_handling-parameter du kan sette til html, som forteller DeepL å behandle inndata som HTML og forsøke å bevare tagger. Dette fungerer rimelig godt for enkel markup, men det er et valgfritt flagg du må vite om for å sette, og det gjelder ikke for JSON eller Markdown.
For JSON finnes det ingen native støtte. DeepLs tekstendepunkt vet ikke hva en JSON-nøkkel er. Hvis du sender det et serialisert JSON-objekt, vil det oversette innholdet som en streng, og det er ingen garanti for at nøkler, struktur eller ikke-strengverdier overlever intakt. R-biblioteket babeldown, som pakker DeepL for Markdown-innhold, har dokumenterte tilfeller der DeepL blander sammen tegnsetting inne i Markdown-lenker og formatering, noe som er en kjent begrensning ved å sende strukturert tekst gjennom en ren tekst-oversettelsesmotor.
Dette er ikke en kritikk av DeepL. Det er en beskrivelse av hva API-en er designet for å gjøre. DeepLs kjernebrukstilfelle er høy kvalitet oversettelse av menneskelig lesbar prosa. Det er det den optimaliserer for, og den er utmerket til det.
Hvor gapet viser seg i praksis
Forskjellen blir synlig i det øyeblikket innholdet ditt ikke er ren prosa.
Vurder en standard Next.js locale-fil:
{
"nav": {
"home": "Home",
"about": "About us",
"contact": "Get in touch"
},
"hero": {
"title": "Welcome to our platform",
"subtitle": "Everything you need in one place"
}
}
For å oversette dette med DeepL API til fem språk må du:
- Trekke ut hver strengverdi individuelt
- Lage en separat API-forespørsel per språk (fem språk, fem forespørsler)
- Rekonstruere JSON-strukturen med de oversatte verdiene på riktig sted
- Håndtere eventuelle tilfeller der oversettelsen endret tegnsetting eller introduserte tegn som bryter JSON-validiteten Dette er en ikke-triviell mengde limkode. Det er også skjørt. Enhver avvik i oversettelsesutgangen fra det parseren din forventer vil føre til stille feil eller en kjøretidsfeil i applikasjonen din.
Med PolyLingo sender du objektet som det er med format: "json" og mottar tilbake en oversatt versjon av hele strukturen for hvert målspråk i ett svar. Nøkler er uberørt. Nesting bevares. Ikke-strengverdier blir stående. Utdata går rett inn i prosjektet ditt.
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"]
}'
Én forespørsel. Fem språk. Struktur intakt.
Markdown-innhold
Det samme mønsteret gjelder for Markdown. DeepLs tekstendepunkt har ikke noe konsept for Markdown-syntaks. Send det et blogginnlegg, og det vil behandle hele som en streng. Overskrifter kan overleve. Kodeblokker vil nesten helt sikkert ikke, siden innholdet inni dem sannsynligvis behandles som oversettbar tekst. Lenkesyntaks kan bli ødelagt, spesielt rundt tegnsetting ved grensene av lenketekst.
PolyLingos markdown formatflagg instruerer modellen til å behandle Markdown-syntaks som strukturell snarere enn oversettbar. Overskrifter forblir overskrifter. Innrammede kodeblokker blir stående ordrett. Lenke-URL-er blir ikke endret. Bare prosa-innholdet endres.
For et dokumentasjonsnettsted eller en blogg med teknisk innhold er forskjellen betydelig. En ødelagt kodeblokk i en veiledning er ikke et lite presentasjonsproblem, det er en ødelagt veiledning.
Én forespørsel vs én per språk forskjell
Dette er verdt å dvele ved fordi kostnadsimplikasjonene er reelle.
DeepLs API godtar bare ett målspråk per forespørsel. For å oversette et innhold til ti språk må du gjøre ti API-kall. For et stort nettsted eller et CMS med hyppig publisering er det ti ganger forespørselsbelastningen, ti ganger ventetiden å håndtere, og ti ganger feilpunktene.
PolyLingo godtar en matrise av målspråkkoder og returnerer alle oversettelser i ett svar. Trettiseks språk er én forespørsel, ikke trettiseks.
For små prosjekter er forskjellen håndterbar. For alt i stor skala endrer det arkitekturen for hvordan du bygger oversettelsesrøret ditt.
Prisingsmodell
DeepL tar betalt per tegn. API Free-planen tillater opptil 500 000 tegn per måned, og betalte planer fakturerer basert på tegnforbruk. Fordi du gjør én forespørsel per språk, multipliseres tegnantallet for et innhold med antall målspråk du sender det til i separate forespørsler.
PolyLingo tar betalt per token og teller over kombinert inndata og utdata for alle språk i én forespørsel. Faktureringen er gjennomsiktig og forutsigbar: gratisnivået inkluderer 50 000 tokens per måned, med betalte planer som starter på $9 per måned for 600 000 tokens.
De to modellene er ikke direkte sammenlignbare på kostnad per ord fordi de bruker forskjellige enheter, men PolyLingos arkitektur med én-forespørsel-alle-språk betyr at du ikke multipliserer forespørselsantallet lineært med antall målspråk.
Hvor hver passer
DeepL API er riktig valg når:
-
Innholdet ditt er ren prosa uten strukturelle krav
-
Oversettelseskvalitet for menneskelig lesbar tekst er hovedfokus
-
Du oversetter til et lite antall språk og forespørselsvolumet er lavt
-
Du allerede er investert i DeepL-økosystemet og bruker deres ordliste- eller formalitetsfunksjoner
-
Du trenger støtte for et språk utenfor PolyLingos nåværende 36 (DeepL støtter over 100 språk) PolyLingo er riktig valg når:
-
Innholdet ditt er JSON, Markdown eller HTML og struktur må bevares
-
Du trenger å oversette til flere språk i én API-kall
-
Du bygger en CMS-integrasjon eller i18n-pipeline der forespørselseffektivitet er viktig
-
Du ønsker et konsistent grensesnitt på tvers av alle innholdsformater uten formatspesifikke løsninger
-
Du ønsker token-basert fakturering med en forutsigbar månedlig tildeling
Side-ved-side oppsummering
| PolyLingo | DeepL API | |
|---|---|---|
| Native JSON-støtte | Ja | Nei |
| Native Markdown-støtte | Ja | Nei |
| HTML-støtte | Ja | Ja (tag_handling flagg) |
| Alle språk i én forespørsel | Ja | Nei, ett språk per forespørsel |
| Automatisk oppdager innholdsformat | Ja | Nei |
| Støttede språk | 36 | 100+ |
| Gratisnivå | 50 000 tokens/måned | 500 000 tegn/måned |
| Faktureringsenhet | Token | Tegn |
| Kodefri nettoversetter | Ja | Ja (webapp) |
DeepL har en større språkkatalog og en lengre merittliste for prosaoversettelseskvalitet. PolyLingo er spesialbygd for strukturerte innholdsarbeidsflyter der formatintegritet ikke kan forhandles.
De løser tilstøtende problemer. Riktig valg avhenger av hvordan innholdet ditt faktisk ser ut.
Prøv PolyLingo
Gratisnivået inkluderer 50 000 tokens per måned. Ingen kredittkort kreves. Full API-dokumentasjon finnes på 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"]
}'