OminaisuudetLisäosaHinnastoResurssit
Vaihda kieltä
ResurssitKuinka koota .po-tiedostoja .mo-tiedostoiksi (4 menetelmää)

Kuinka koota .po-tiedostoja .mo-tiedostoiksi (4 menetelmää)

SimplePoTranslate Team3. toukokuuta 2026
Kuinka koota .po-tiedostoja .mo-tiedostoiksi (4 menetelmää)

Vietit iltapäivän viimeistellen saksankielistä käännöstä. Jokainen merkkijono de_DE.po-tiedostossasi näyttää hyvältä, paikkamerkit ovat ennallaan, monikot ovat oikein. Lataat sen sivustollesi, vaihdat kielen saksaksi, ja... ei mitään. Sivu on yhä englanniksi. Tarkistat tiedoston nimen, kansion, text domainin. Kaikki näyttää oikealta. Miksi WordPress ei siis näytä käännöstäsi?

Yhdeksän kertaa kymmenestä vastaus on sama: muokkasiit .po-tiedostoa, mutta et koskaan koonnut sitä .mo-tiedostoksi. WordPress ei lue .po-tiedostoja suorituksen aikana — se lataa käännetyn binäärin .mo. Jos haluat käännöksiesi todella näkyvän, sinun on koota po mo:ksi joka kerta, kun muutat tekstiä. .po on muokattava lähdetiedostosi; .mo on se, mitä sivusto näyttää.

Tämä opas selittää, miksi kyseinen kokoamisvaihe on olemassa, ja käy läpi neljä luotettavaa tapaa tehdä se: WP-CLI, klassinen msgfmt-komento, Poedit ja pilvityökalu, joka tuottaa .mo-tiedoston sinulle automaattisesti. Käsittelemme myös yleisimmän sudenkuopan — uudelleenkääntämisen unohtamisen — ja uudemman .l10n.php-muodon, jota WordPress nyt suosii nopeuden vuoksi.

Miksi WordPress lataa .mo- eikä .po-tiedostoja?

WordPress lataa .mo-tiedostoja, koska ne ovat käännettyjä binääritiedostoja, jotka on optimoitu nopeisiin hakuihin, kun taas .po-tiedostot ovat tavallista tekstiä, jotka on luotu ihmisten luettaviksi ja muokattaviksi. Tekstin jäsentäminen jokaisella sivun latauksella olisi hidasta; esikoostetun binäärisen hajautustaulun lukeminen on lähes välitöntä.

.po-tiedosto on rivipohjainen ja ihmisystävällinen. Jokainen merkintä yhdistää lähdemerkkijonon msgid käännettyyn msgstr-merkintään, sekä sisältää kommentteja, jotka osoittavat merkkijonon alkuperän. Tämä on erinomainen muokkaamiseen, mutta kauhea suorituskyvyn kannalta — palvelimen olisi jäsennettävä koko tekstitiedosto uudelleen jokaisella pyynnöllä.

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

A .mo-tiedosto pakkaa samat merkkijonoparit binäärimuotoon sisäisen hakutaulun avulla, joten WordPress voi hypätä suoraan käännökseen skannaamatta tekstiä. Haittapuolena on, että .mo on ihmisille lukukelvoton ja se on luotava uudelleen aina, kun .po-tiedosto muuttuu. Jos .po:n ja .mo:n välinen ero on vielä epäselvä, selityksemme .po vs .mo vs .pot -tiedostoista purkaa jokaisen muodon ja niiden väliset suhteet.

Neljä tapaa koota po mo:ksi

Ei ole olemassa yhtä ainoaa "oikeaa" työkalua — paras valinta riippuu siitä, miten työskentelet jo nyt. Alla on neljä luotettavaa menetelmää, yhden rivin komennosta täysin automatisoituun pilvityönkulkuun. Kaikki neljä tuottavat identtisen binäärisen .mo-tiedoston, jonka WordPress lataa suorituksen aikana.

Menetelmä 1: WP-CLI

Siistein moderni lähestymistapa on WP-CLI, joka voi koota kokonaisen kansion .po-tiedostoja yhdellä komennolla. Jos hallinnoit WordPressiä jo komentoriviltä, tämä sopii luonnollisesti työnkulkuusi.

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

make-mo-komento skannaa kohdehakemiston, kokoaa jokaisen löytämänsä .po-tiedoston ja kirjoittaa vastaavan .mo-tiedoston sen viereen (tai määrittämääsi kohteeseen). Se käsittelee erät sujuvasti, mikä tekee siitä ihanteellisen, kun ylläpidät useita kieliä samanaikaisesti. Se on suositeltu työkalu kaikille projekteille, jotka käyttävät jo WP-CLI:tä.

Menetelmä 2: msgfmt

Alkuperäinen Gettext-apuohjelma tähän tehtävään on msgfmt, joka on osa GNU gettext-pakettia. Se kokoaa yksittäisen .po-tiedoston yksittäiseksi .mo-tiedostoksi ja on saatavilla käytännössä kaikissa Linux- ja macOS-järjestelmissä.

# 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

-o-lippu nimeää tulostiedoston. --statistics-lippu on todella hyödyllinen — se kertoo, kuinka monta merkkijonoa on käännetty, epäselviä tai yhä tyhjiä, joten voit havaita keskeneräisen käännöksen ennen sen julkaisua. Yhden tiedoston skriptaamiseen kerrallaan msgfmt on luotettava, mutkaton valinta.

Koska msgfmt on pelkkä komentorivityökalu, se sopii siististi automaatioon. Voit kääriä sen shell-silmukkaan kootaksesi kokonaisen kansion, tai liittää sen osaksi CI-pipelinea, niin että jokainen sitoumus, joka koskettaa .po-tiedostoa, tuottaa uuden .mo-tiedoston automaattisesti. Yleinen malli on for f in languages/*.po; do msgfmt "$f" -o "${f%.po}.mo"; done, joka kokoaa jokaisen kielen yhdellä ajolla. --check-lippu lisää validoinnin, merkitsemällä formaattimerkkijonojen epäyhtenäisyydet msgid:n ja msgstr:n välillä ennen kuin ne päätyvät tuotantoon — edullinen suojakeino rikkoutuneita paikkamerkkivirheitä vastaan, jotka hiljaisesti vioittavat käännettyjä asetteluita.

Menetelmä 3: Poedit (kääntää tallennettaessa)

Jos muokkaat käännöksiä graafisessa editorissa, Poedit kääntää ne puolestasi automaattisesti. Joka kerta kun tallennat .po-tiedoston, Poedit kirjoittaa vastaavan .mo-tiedoston aivan sen rinnalle — ei erillistä komentoa, ei ylimääräistä vaihetta.

Tämä on yksi syy, miksi Poedit pysyy suosittuna kääntäjien keskuudessa, jotka eivät ole tottuneet komentoriviin. Avaat .po-tiedoston, kirjoitat käännöksesi, painat tallenna, ja molemmat tiedostot päivittyvät samanaikaisesti. Voit varmistaa toiminnan Poeditin asetuksista, jossa automaattinen .mo-kääntäminen tallennettaessa on oletuksena käytössä. Poedit ja vastaavat työpöytätyökalut on arvosteltu artikkelissa 5 parasta ilmaista työkalua PO-tiedostojen muokkaamiseen ja kääntämiseen Macilla ja Windowsilla.

Työpöytäeditorin ongelmana on, että kääntäminen tapahtuu vain, kun ihminen avaa tiedoston ja tallentaa sen. Tämä sopii yhden hengen projektiin, mutta se ei skaalaudu kymmeniin kieliin tai tiimiin, joka siirtää tiedostoja edestakaisin. Jos joku muokkaa .po-tiedostoa eri työkalulla ja kopioi sen repositoryyn avaamatta Poeditia, .mo-tiedosto ei koskaan päivity. Suuremmissa tai yhteistyöprojekteissa automaattinen menetelmä — komentorivi tai pilvi — poistaa riippuvuuden muistaa painaa tallenna.

Menetelmä 4: Pilvityökalu, joka luo .mo-tiedoston puolestasi

Neljäs vaihtoehto poistaa kokoamisvaiheen kokonaan: käytä pilvipalvelua, joka palauttaa käännetyn .mo-tiedoston yhdessä käännetyn .po-tiedoston kanssa. Et koskaan suorita komentoa tai tallenna tiedostoa kahdesti — lataat tiedoston, ja valmiit, oikein nimetyt tiedostot palautuvat.

SimplePoTranslate toimii juuri näin. Lataat .po- tai .pot-tiedoston, se kääntää merkkijonot kontekstitietoisella tekoälyllä, ja se palauttaa yhden ZIP-tiedoston, joka sisältää .po- ja .mo-tiedostot luotuna rinnakkain — jo käännettyinä, jo nimettyinä vastaamaan tekstidomainiasi ja lokaalia. Ei ole erillistä kokoamisvaihetta eikä mahdollisuutta unohtaa sitä.

Se käsittelee myös yksityiskohdat, jotka rikkovat manuaalisia työnkulkuja. Syntax Locking jäädyttää paikkamerkit, kuten %s, %1$s ja {name} sekä HTML-tagit ennen kääntämistä, joten muuttujasi säilyvät .mo-tiedostossa ehjinä. Täysi Gettext-monikkotuki tarkoittaa, että monimutkaiset monikkomuodotkin kääntyvät oikein — aihe, joka kannattaa ymmärtää syvällisesti, ja jota käsittelemme artikkelissa Gettext-monikkojen ymmärtäminen. Ja koska se toimii pilvessä, ei tarvitse asentaa laajennusta eikä ylläpitää rakennustyökaluja.

Yleisin sudenkuoppa: Unohdit koota uudelleen

Suurin yksittäinen syy käännösten puuttumiseen on .po-tiedoston muokkaaminen, mutta .mo-tiedoston uudelleenkääntämisen unohtaminen. WordPress lataa jatkuvasti vanhaa binääritiedostoa, joten uusi sanamuotosi ei koskaan ilmesty — eikä virheilmoitusta ole kertomaan sinulle syytä.

Mielikuvamalli, joka kannattaa painaa mieleen: .po on luonnoksesi, .mo on se, mikä julkaistaan. Mikä tahansa muutos .po-tiedostoon on näkymätön WordPressille, kunnes luot .mo-tiedoston uudelleen. Tee uudelleenkääntämisestä refleksi jokaisen muokkauksen jälkeen, tai käytä työkalua, joka kääntää automaattisesti, jotta tätä vaihetta ei voi koskaan ohittaa.

Tämä sudenkuoppa on erityisen ovela staging-ympäristöstä tuotantoon siirtymisissä. Kehittäjä muokkaa ja kääntää uudelleen paikallisesti, näkee käännöksen toimivan, sitten ottaa käyttöön vain .po-tiedoston ja unohtaa .mo-tiedoston — joten tuotanto säilyttää hiljaisesti vanhan tekstin. Aina kun siirrät käännöstiedostoja ympäristöjen välillä, siirrä .po-tiedosto ja juuri käännetty .mo-tiedosto yhdessä, tai kokoa ne osana käyttöönottoasi, jotta binääri rakennetaan aina uudelleen nykyisestä lähteestä.

Jos käännöksesi eivät vieläkään ilmesty uudelleenkääntämisen jälkeen, ongelmana on yleensä nimen epäsuhta, väärä kansio tai vanhan tiedoston sisältävä välimuisti. Täydellinen tarkistuslista löytyy artikkelista miksi käännöksesi eivät näy WordPressissä.

Huomautus uudemmasta .l10n.php-muodosta

Viimeisimmät WordPress-versiot esittelivät kolmannen suorituksen aikaisen formaatin: .l10n.php. Binäärisen .mo-tiedoston sijaan käännökset tallennetaan tavallisena PHP-taulukkona, jonka PHP-opcode-välimuisti voi pitää muistissa, mikä tekee hauista jopa nopeampia kuin .mo-tiedostoilla ruuhkaisilla sivustoilla.

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

WordPress luo .l10n.php-tiedostot automaattisesti, kun sillä on vastaava .mo-tiedosto käytettävissä, joten sinun ei tarvitse rakentaa niitä käsin. Toistaiseksi oikean .mo-tiedoston kokoaminen pysyy perustana — suorituskykyformaatti on johdettu siitä.

Yhteenveto

Jotta voit koota po mo:ksi luotettavasti, valitse menetelmä, joka vastaa työtapaasi: WP-CLI komentorivikäsittelyyn, msgfmt yksittäisille tiedostoille tilastojen kanssa, Poedit automaattiseen kokoamiseen tallennettaessa, tai pilvityökalu, joka rakentaa .mo-tiedoston puolestasi, jotta vaihetta ei koskaan ohiteta. Kaikki neljä tuottavat saman binäärin, jota WordPress tarvitsee suorituksen aikana.

Minkä tahansa reitin valitsetkin, muista kultainen sääntö: muokkaa .po-tiedostoa, sitten kokoa se .mo-tiedostoksi — joka kerta. Tuo yksi tapa ehkäisee turhauttavimman käännösvirheen WordPressissä, sen jossa kaikki näyttää oikealta, mutta sivusto pysyy itsepäisesti englanniksi.

Oletko valmis ohittamaan manuaalisen kokoamisvaiheen pysyvästi? Kokeile SimplePoTranslatea ilmaiseksi — luottokorttia ei vaadita. Lataa .po-tiedostosi ja lataa käyttövalmis .po + .mo -paketti ilmaistierillä minuuteissa.

Aiheeseen liittyvät aiheet