OminaisuudetLisäosaHinnastoResurssit
Vaihda kieltä
ResurssitDeepL vs Google Translate vs AI: Paras .po-tiedostoille?

DeepL vs Google Translate vs AI: Paras .po-tiedostoille?

SimplePoTranslate Team12. kesäkuuta 2026
DeepL vs Google Translate vs AI: Paras .po-tiedostoille?

Vie .pot-tiedosto WordPress-lisäosastasi, liitä muutama sata merkkijonoa DeepL:iin tai Google Translateen, saat siistin saksankielisen sarakkeen takaisin, pudota se .po-tiedostoosi, käännä ja lähetä. Sitten käyttäjä ilmoittaa, että ostoskorisivulla näkyy raaka %1$s siellä, missä tuotenimen pitäisi olla, tai mikä pahempaa, hintarivi lukee You have 1 items joka kielellä, koska monikkomuoto romahti. Käännöksen laatu oli hyvä. Käännöksen rakenne tuhoutui.

Se on DeepL vs Google Translate -väittelyn ydinkysymys, kun lähde on gettext .po-tiedosto eikä kappale proosaa. Molemmat ovat maailmanluokkaa luonnollisten lauseiden kääntämisessä. Kumpaakaan ei suunniteltu kunnioittamaan printf-paikkamerkkiä, Gettext-monikkomuotoa tai msgctxt-yksiselitteistystä. Ne käsittelevät %1$s:ää kirjoitusvirheenä, joka pitää siivota, ja kaksi-muotoista monikkoa yhtenä lauseena, joka pitää litistää. Markkinointitekstissä tämä on näkymätöntä. Ohjelmistojen lokalisoinnissa se rikkoo sivustoja.

Tässä postauksessa verrataan klassista konekääntämistä – DeepL:iä ja Google Translatea – gettextille erityisesti rakennettuun kontekstitietoiseen tekoälyputkeen. Tarkastelemme niitä akseleita, jotka todella ovat tärkeitä .po-tiedostoille: paikkamerkkien käsittely, monikkomuodot, konteksti, tiedostojen joukkotuki ja kustannukset. Jos haluat syvemmän LLM-versus-LLM-laatuvaikuttavuuskeskustelun, käsittelimme sitä artikkelissa AI-käännösten laatu: Gemini vs GPT-4 vs DeepSeek. Tässä kysymys on kapeampi ja käytännöllisempi: mikä on paras .po-tiedostoille?

DeepL vs Google Translate: Mihin ne on rakennettu

Molemmat ovat yleiskäyttöisiä konekäännöskoneistoja, jotka on optimoitu sujuvaan, luonnollisen kielen tulosteeseen. Kumpikaan ei jäsenä tiedostomuotoja.

DeepL – Sujuva, mutta formaattisokea

DeepL:ää kehutaan laajalti luonnollisimmalta kuuluvasta tulosteesta, erityisesti eurooppalaisten kielten välillä. Mutta se vastaanottaa tekstiä, ei rakennetta. Jos sille syöttää .po msgid-kentän, joka sisältää %1$s ordered %2$s, se kääntää paikkamerkkien ympärillä olevat sanat järjestellen, välilyöden tai jättäen pois tunnuksia – koska DeepL:lle ne ovat vain outoja merkkejä lauseessa.

Google Translate – Laaja kattavuus, sama sokea piste

Google Translate tukee paljon useampia kieliä ja on oletusarvoinen budjettiratkaisu GTranslate-kaltaisten lisäosien takana. Sen paikkamerkkien käsittely ei ole parempi. Molemmilla koneistoilla on sama perustavanlaatuinen rajoitus: ne optimoivat lauseen sujuvuuden, eikä niillä ole mallia gettext-säännöistä.

Todellinen kysymys ei ole laatu – se on rakenne

.po-tiedostojen kohdalla raaka kielellinen laatu on perustekijä. Tuotannon rikkoo rakenteellinen eheys: säilyvätkö muuttujat, pysyvätkö monikot monimuotoisina, kunnioitetaanko kontekstia. Siinä gettext-tietoinen tekoälyputki ohittaa sekä DeepL:n että Google Translaten.

Miksi paikkamerkit ja monikot rikkovat konekäännöstä

.po-tiedosto ei ole proosaa. Se on koodiin liittyvää tekstiä, jolla on tiukat säännöt, ja kolme näistä säännöistä kukistaa rutiininomaisesti klassisen konekäännöksen.

Paikkamerkkien ja muuttujien vääristyminen

WordPress-merkkijonot ovat täynnä printf-tyylisiä paikkamerkkejä: %s, %d ja positionaalisia muotoja kuten %1$s ja %2$s. Positionaaliset ovat tärkeitä, koska jotkin kielet järjestävät lauseen uudelleen, ja numerot kertovat sprintf:lle, mikä argumentti menee minne. Katso, mitä klassinen konekäännös tekee tälle:

// 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

Yksi injektoitu välilyönti (% 1$ s) tai pudotettu tunnus aiheuttaa PHP-varoituksen tai tulostaa raakaa koodia käyttäjillesi. Syvennymme tähän virhetilaan artikkelissa Kuinka kääntää PO-tiedostoja rikkomatta koodimuuttujia.

Monikkomuodot romahtavat

Gettext-monikot eivät ole yksi merkkijono – ne ovat taulukko, jonka avaimena on kielen monikkosääntö. Englannissa on kaksi muotoa; puolassa kolme; arabiassa kuusi. Klassinen konekäännös vastaanottaa msgid_plural-kentän kahtena erillisenä lauseena ja kääntää ne itsenäisesti ilman tietoisuutta siitä, että niiden on pysyttävä yhtenäisenä monimuotoisena joukkona. Tuloksena on usein yksi muoto duplikoituna, joten 1 item ja 5 items renderöityvät identtisesti.

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.

Konteksti (msgctxt) jätetään huomiotta

Gettext käyttää msgctxt-kenttää samojen merkkijonojen selventämiseen –