FunktionerPluginPriserRessourcer
Skift sprog
RessourcerDeepL vs Google Translate vs AI: Bedst til .po-filer?

DeepL vs Google Translate vs AI: Bedst til .po-filer?

SimplePoTranslate Team12. juni 2026
DeepL vs Google Translate vs AI: Bedst til .po-filer?

Du eksporterer en .pot fra dit WordPress-plugin, indsætter et par hundrede strenge i DeepL eller Google Translate, får en pæn tysk kolonne tilbage, indsætter den i din .po-fil, kompilerer og udgiver. Derefter rapporterer en bruger, at kurvsiden viser en rå %1$s, hvor et produktnavn burde være, eller værre endnu, at prislinjen lyder You have 1 items på alle sprog, fordi flertalsformen kollapsede. Oversættelsens kvalitet var fin. Oversættelsens struktur blev ødelagt.

Det er den centrale spænding i debatten om DeepL vs Google Translate, når kilden er en gettext .po-fil snarere end et afsnit prosa. Begge er i verdensklasse til at oversætte naturlige sætninger. Ingen af dem er designet til at respektere en printf-pladsholder, et Gettext pluralis-array eller en msgctxt-disambiguering. De behandler %1$s som en stavefejl, der skal ryddes op, og en flertalsform med to bøjninger som en enkelt sætning, der skal flades ud. For marketingtekster er det usynligt. For softwarelokalisering ødelægger det websteder.

Dette indlæg sammenligner klassisk maskinoversættelse – DeepL og Google Translate – med en kontekstbevidst AI-pipeline bygget specifikt til gettext. Vi vil se på de akser, der faktisk betyder noget for .po-filer: håndtering af pladsholdere, flertalsformer, kontekst, understøttelse af bulkfiler og omkostninger. Hvis du ønsker den dybere diskussion om LLM-versus-LLM-kvalitet, har vi dækket det i AI-oversættelseskvalitet: Gemini vs GPT-4 vs DeepSeek. Her er spørgsmålet snævrere og mere praktisk: hvad er bedst til .po-filer?

DeepL vs Google Translate: Hvad de er bygget til

Begge er generelle maskinoversættelsesmotorer optimeret til flydende output på naturligt sprog. Ingen af dem parser filformater.

DeepL - Flydende, men formatblind

DeepL roses bredt for det mest naturligt klingende output, især på tværs af europæiske sprog. Men den indlæser tekst, ikke struktur. Hvis du giver den en .po msgid, der indeholder %1$s ordered %2$s, oversætter den ordene omkring pladsholderne, mens den ofte omarrangerer, tilføjer mellemrum eller udelader tokens – for DeepL er de blot mærkelige tegn i en sætning.

Google Translate - Bred dækning, samme blinde vinkel

Google Translate understøtter langt flere sprog og er standardbudgettet bag plugins som GTranslate. Dens håndtering af pladsholdere er ikke bedre. Begge motorer deler den samme grundlæggende begrænsning: de optimerer sætningens flydende sprog og har ingen model for gettext-regler.

Det virkelige spørgsmål er ikke kvalitet – det er struktur

For .po-filer er rå sproglig kvalitet en selvfølge. Det, der ødelægger produktionen, er strukturel integritet: overlever variablerne, forbliver flertalsformerne flerformede, og respekteres konteksten. Det er her en gettext-bevidst AI-pipeline trækker foran både DeepL og Google Translate.

Hvorfor pladsholdere og flertalsformer bryder maskinoversættelse

En .po-fil er ikke prosa. Det er kode-tilknyttet tekst med strenge regler, og tre af disse regler besejrer rutinemæssigt klassisk MT.

Ødelæggelse af pladsholdere og variabler

WordPress-strenge er fulde af printf-stilpladsholdere: %s, %d og positionelle former som %1$s og %2$s. De positionelle er vigtige, fordi nogle sprog omarrangerer sætningen, og numrene fortæller sprintf, hvilket argument der skal placeres hvor. Se, hvad klassisk MT gør ved dette:

// Source string in your .po file
$msg = sprintf( __( '%1$s left a comment on %2$s', 'mytheme' ), $user, $post );

// What DeepL / Google Translate often return (German):
// "%2$s hat einen Kommentar zu %1$s hinterlassen"  <- reordered, OK
// "% 1$ s hat einen Kommentar..."                   <- spaces injected, BROKEN
// "hat einen Kommentar hinterlassen"                <- placeholders dropped, BROKEN

Et enkelt indsat mellemrum (% 1$ s) eller et tabt token kaster en PHP-advarsel eller udskriver rå kode til dine brugere. Vi dykker dybt ned i denne fejltype i hvordan man oversætter PO-filer uden at ødelægge kodevariabler.

Flertalsformer kollapser

Gettext-pluralis er ikke én streng – det er et array nøglet af sprogets pluralisregel. Engelsk har to former; polsk har tre; arabisk har seks. Klassisk MT modtager msgid_plural som to separate sætninger og oversætter dem uafhængigt, uden bevidsthed om, at de skal forblive et sammenhængende flerformet sæt. Resultatet er ofte en enkelt form duplikeret, så 1 item og 5 items gengives identisk.

msgid "%d item in your cart"
msgid_plural "%d items in your cart"
msgstr[0] ""
msgstr[1] ""
# A gettext-aware pipeline fills BOTH forms correctly with %d preserved.
# DeepL/Google translate each line in isolation and lose the plural relationship.

Kontekst (msgctxt) ignoreres

Gettext bruger msgctxt til at disambiguere identiske strenge –