FunkciókBővítményÁrazásForrások
Nyelv módosítása
ForrásokHogyan fordítsuk le a .po fájlokat .mo fájlokká (4 módszer)

Hogyan fordítsuk le a .po fájlokat .mo fájlokká (4 módszer)

SimplePoTranslate Team2026. május 3.
Hogyan fordítsuk le a .po fájlokat .mo fájlokká (4 módszer)

Egy délutánt azzal töltött, hogy tökéletesítsen egy német fordítást. A de_DE.po fájl minden karaktersora gyönyörűen olvasható, a helyőrzők sértetlenek, a többes számok helyesek. Feltölti a webhelyére, átváltja a nyelvet németre, és... semmi. Az oldal továbbra is angolul jelenik meg. Kétszer ellenőrzi a fájlnevet, a mappát, a text domaint. Minden rendben lévőnek tűnik. Akkor miért nem jeleníti meg a WordPress a fordítását?

Tízből kilencszer a válasz ugyanaz: szerkesztette a .po fájlt, de soha nem fordította le .mo fájllá. A WordPress futási időben nem olvassa a .po fájlokat – a lefordított bináris .mo fájlokat tölti be. Ha azt szeretné, hogy a fordításai valóban megjelenjenek, minden egyes szövegváltoztatásnál le kell fordítania a po-t mo-vá. A .po a szerkeszthető forrása; a .mo az, amit az oldal kiszolgál.

Ez az útmutató elmagyarázza, miért létezik ez a fordítási lépés, majd bemutat négy megbízható módszert annak elvégzésére: a WP-CLI-t, a klasszikus msgfmt parancsot, a Poedit-et és egy felhőalapú eszközt, amely automatikusan elkészíti a .mo fájlt. Kitérünk a leggyakoribb buktatóra is – a fordítás újrakészítésének elfelejtésére –, és az újabb .l10n.php formátumra, amelyet a WordPress most a sebesség miatt preferál.

Miért tölti be a WordPress a .mo-t és nem a .po-t?

A WordPress azért tölti be a .mo fájlokat, mert azok fordított bináris fájlok, amelyek gyors keresésre vannak optimalizálva, míg a .po fájlok egyszerű szövegek, amelyeket emberek számára terveztek olvasásra és szerkesztésre. A szöveg elemzése minden oldalbetöltésnél lassú lenne; egy előre elkészített bináris hash tábla olvasása szinte azonnali.

A .po fájl sor alapú és felhasználóbarát. Minden bejegyzés párosít egy forrás msgid-et egy fordított msgstr-el, plusz megjegyzéseket, amelyek jelzik, honnan származik a karakterlánc. Ez kiváló a szerkesztéshez, de szörnyű a teljesítmény szempontjából – a szervernek minden kérésnél újra kellene elemeznie az egész szövegfájlt.

#: includes/cart.php:88
msgid "Your cart is empty"
msgstr "Ihr Warenkorb ist leer"

A .mo fájl ugyanazokat a karakterlánc-párokat bináris formátumba csomagolja egy belső keresőtáblával, így a WordPress egyből a fordításra ugorhat szövegvizsgálat nélkül. A kompromisszum az, hogy a .mo ember számára olvashatatlan, és újra kell generálni, valahányszor a .po változik. Ha a .po vs. .mo megkülönböztetés még mindig homályos, a .po vs. mo vs. pot fájlok magyarázata című cikkünk részletezi az egyes formátumokat és azok kapcsolatát.

Négy módszer a po fordítására mo-vá

Nincs egyetlen „helyes” eszköz – a legjobb választás attól függ, hogyan dolgozik már most. Alább négy megbízható módszert mutatunk be, egy egysoros parancstól a teljesen automatizált felhőalapú munkafolyamatig. Mind a négy ugyanazt a bináris .mo fájlt hozza létre, amelyet a WordPress futásidőben betölt.

1. módszer: WP-CLI

A legtisztább modern megközelítés a WP-CLI, amely egyetlen paranccsal képes lefordítani egy teljes mappányi .po fájlt. Ha már a parancssorból kezeli a WordPresst, ez természetesen illeszkedik a munkafolyamatába.

# Compile every .po file in the languages folder to .mo
wp i18n make-mo languages/

# Compile into a specific destination directory
wp i18n make-mo languages/ build/languages/

A make-mo parancs átvizsgálja a célkönyvtárat, lefordítja az összes talált .po fájlt, és egyező .mo fájlt ír mellé (vagy az Ön által megadott célhelyre). Zökkenőmentesen kezeli a kötegeket, ami ideálissá teszi, ha egyszerre sok nyelvet tart karban. Ez az ajánlott eszköz minden olyan projekthez, amely már használja a WP-CLI-t.

2. módszer: msgfmt

Az eredeti Gettext segédprogram erre a feladatra a msgfmt, amely a GNU gettext csomag része. Egyetlen .po fájlt egyetlen .mo fájllá fordít, és gyakorlatilag minden Linux és macOS rendszeren elérhető.

# Compile one file
msgfmt my-plugin-de_DE.po -o my-plugin-de_DE.mo

# Add statistics about translated, fuzzy, and untranslated strings
msgfmt --statistics my-plugin-de_DE.po -o my-plugin-de_DE.mo

# Install it first if missing
#   macOS:  brew install gettext
#   Debian: sudo apt-get install gettext

Az -o jelző nevezi meg a kimeneti fájlt. A --statistics jelző valóban hasznos – megmondja, hány karaktersor van lefordítva, bizonytalan vagy még üres, így még a kiadás előtt elkaphatja a hiányos fordítást. Egy fájl szkripteléséhez az msgfmt a megbízható, egyszerű választás.

Mivel az msgfmt egy egyszerű parancssori eszköz, szépen illeszkedik az automatizálásba. Körbeveheti egy shell ciklussal egy teljes mappa fordításához, vagy bekötheti egy CI pipeline-ba, így minden .po fájlt érintő commit automatikusan friss .mo fájlt hoz létre. Gyakori minta a for f in languages/*.po; do msgfmt "$f" -o "${f%.po}.mo"; done, amely egyetlen menetben fordítja le az összes nyelvet. A --check jelző validációt ad hozzá, jelezve a formátum-karakterlánc eltéréseket a msgid és msgstr között, mielőtt azok elérik a gyártást – olcsó biztosíték a sérült helyőrző hibák ellen, amelyek csendben megrongálják a fordított elrendezéseket.

3. módszer: Poedit (mentéskor fordít)

Ha grafikus szerkesztőben szerkeszti a fordításokat, a Poedit automatikusan lefordítja azokat. Minden alkalommal, amikor ment egy .po fájlt, a Poedit azonnal mellé írja a megfelelő .mo fájlt – nincs külön parancs, nincs extra lépés.

Ez az egyik ok, amiért a Poedit továbbra is népszerű azok körében, akik nem érzik magukat kényelmesen a parancssoron. Megnyitja a .po fájlt, beírja a fordításokat, rányom a mentés gombra, és mindkét fájl egyszerre frissül. A viselkedést a Poedit beállításai között ellenőrizheti, ahol az automatikus .mo fordítás mentéskor alapértelmezés szerint engedélyezett. A Poedit és hasonló asztali eszközök áttekintése az 5 legjobb ingyenes eszköz PO fájlok szerkesztéséhez és fordításához Mac-en és Windowson című cikkben található.

Az asztali szerkesztők hátránya, hogy a fordítás csak akkor történik meg, ha egy ember megnyitja és elmenti a fájlt. Ez rendben van egy egyszemélyes projektnél, de nem skálázható tucatnyi nyelvre vagy egy csapatra, amely folyamatosan cserélgeti a fájlokat. Ha valaki egy .po fájlt más eszközben szerkeszt és másolja a tárolóba anélkül, hogy megnyitná a Poeditet, a .mo soha nem frissül. Nagyobb vagy kollaboratív projektek esetén egy automatizált módszer – parancssor vagy felhő – megszünteti a mentésre való emlékezés szükségességét.

4. módszer: Egy felhőalapú eszköz, amely generálja Önnek a .mo fájlt

A negyedik opció teljesen megszünteti a fordítási lépést: használjon egy felhőszolgáltatást, amely a fordított .po fájllal együtt visszaküldi a lefordított .mo fájlt. Soha nem kell parancsot futtatnia vagy kétszer mentenie egy fájlt – feltölti, és a kész, helyesen elnevezett fájlok visszatérnek.

SimplePoTranslate pontosan így működik. Feltölt egy .po vagy .pot fájlt, az Környezettudatos AI-val fordítja a karaktersorokat, és egyetlen ZIP fájlt ad vissza, amely a .po és .mo fájlokat egymás mellett generálja – már lefordítva, már elnevezve a szöveg domainjének és locale-jának megfelelően. Nincs külön fordítási lépés, és nincs esély arra, hogy elfelejtsen egyet.

Emellett kezeli azokat a részleteket is, amelyek tönkreteszik a manuális munkafolyamatokat. A Syntax Locking befagyasztja a helyőrzőket, mint %s, %1$s, és {name}, plusz a HTML címkéket a fordítás előtt, így a változói sértetlenül megmaradnak a .mo fájlban. A teljes Gettext többes szám támogatás azt jelenti, hogy a komplex többes számú formák is helyesen fordulnak – ez egy mélyebb megértést igénylő téma, amelyet a Gettext többes számok megértése című cikkünkben tárgyalunk. És mivel a felhőben fut, nincs szükség beépülő modul telepítésére és nincs karbantartandó build tooling.

A leggyakoribb buktató: Elfelejtette újrafordítani

A fordítások meg nem jelenésének egyetlen legnagyobb oka az, hogy szerkesztik a .po fájlt, de elfelejtik újrafordítani a .mo fájlt. A WordPress továbbra is a régi binárist tölti be, így az új megfogalmazás soha nem jelenik meg – és nincs hibaüzenet, ami megmondaná, miért.

A rögzítendő gondolati modell: a .po a piszkozat, a .mo az, ami megjelenik. A .po fájlban végrehajtott bármely változás láthatatlan a WordPress számára, amíg újra nem generálja a .mo fájlt. Tegye az újrafordítást reflexszé minden szerkesztés után, vagy használjon olyan eszközt, amely automatikusan fordít, így a lépést soha nem lehet kihagyni.

Ez a buktató különösen alattomos a staging és production közötti átadások során. Egy fejlesztő helyben szerkeszti és újrafordítja, látja a fordítást működni, majd csak a .po fájlt telepíti, és elfelejti a .mo fájlt – így a production csendesen megtartja a régi szöveget. Valahányszor fordítási fájlokat mozgat környezetek között, mozgassa együtt a .po és a frissen fordított .mo fájlt, vagy fordítsa le a telepítési lépés részeként, így a bináris fájl mindig az aktuális forrásból épül újjá.

Ha a fordítások az újrafordítás után sem jelennek meg, a probléma általában egy névegyezés hiánya, egy rossz mappa, vagy egy gyorsítótár réteg, amely a régi fájlt tárolja. A teljes ellenőrzőlista a miért nem jelennek meg a fordításai a WordPressben című cikkben található.

Megjegyzés az újabb .l10n.php formátumról

A legújabb WordPress verziók bevezettek egy harmadik futási idejű formátumot: a .l10n.php-t. Bináris .mo helyett a fordításokat egyszerű PHP tömbként tárolják, amelyet a PHP opcode gyorsítótár a memóriában tarthat, így a keresések még gyorsabbak, mint a .mo fájloké a forgalmas webhelyeken.

<?php
return [
	'domain'  => 'my-plugin',
	'messages' => [ 'Your cart is empty' => 'Ihr Warenkorb ist leer' ],
];

A WordPress automatikusan generál .l10n.php fájlokat, amikor rendelkezésre áll a megfelelő .mo fájl, így nem kell manuálisan elkészítenie őket. Egyelőre a helyes .mo fordítása marad az alap – a teljesítményformátum ebből származik.

Összefoglalás

A po mo-vá fordításának megbízható módjához válassza ki az Ön munkamódszeréhez illő eljárást: WP-CLI parancssori kötegeléshez, msgfmt egyes fájlokhoz statisztikákkal, Poedit automatikus fordításhoz mentéskor, vagy egy felhőalapú eszköz, amely elkészíti Önnek a .mo fájlt, így a lépés soha nem marad ki. Mind a négy ugyanazt a bináris fájlt hozza létre, amelyre a WordPressnek futásidőben szüksége van.

Bármely utat is választja, ne feledje az aranyszabályt: szerkessze a .po fájlt, majd fordítsa le .mo fájllá – minden alkalommal. Ez az egyetlen szokás megakadályozza a legfrusztrálóbb fordítási hibát a WordPressben, azt, amikor minden rendben lévőnek tűnik, de az oldal makacsul angolul marad.

Készen áll, hogy örökre kihagyja a kézi fordítási lépést? Próbálja ki ingyen a SimplePoTranslate-et – hitelkártya nélkül. Töltse fel a .po fájlját, és percek alatt töltse le a telepítésre kész .po + .mo csomagot az ingyenes szinten.