Valószínűleg nem én vagyok az egyetlen, akinél nem működött elsőre a WordPress magyarítás. Először is rövid google keresgélés után Tom blogján ráakadtam a 2.3.1-es wordpress magyarítására. Az ott szereplő kis leírás alapján a dolog abszolút egyszerű: be kell másolni egy fájlt és meg kell adni a wp-config.php-ban, hogy ezt olvassa fel a WordPress. Hát akkor hajrá, és hát a mostani bejegyzés apropójából már kitalálható, hogy nem működött.
Elkezdtem debug-olni. Első gyanúm, hogy valamit elcsesztem, tehát újra leellenőriztem minden telepítési lépést, de semmi. Aztán olvasgatni kezdtem a WordPress lokalizációs lehetőségeiről. Kiderült, hogy a népszerű gettext-et használja a fordítások kezelésére. Átnéztem a szerveren futó PHP-t, amin van gettext bővítmény, működik is. Akkor mi lehet?
Következő lépésként felraktam a saját gépemre is egy WordPress-t, beraktam a fordítást és minden ment szépen. Itt derült ki számomra, hogy nem is kell, hogy a PHP rendelkezzen a gettext bővítménnyel, mivel a WordPress egy PHP-ban megírt osztályt használ ennek kiváltására: PHP-gettext. Akkor elő a debuggerrel, nézzük hogyan jut el a fordításban szereplő szöveg a felhasználóhoz. Hosszú-hosszú hibakeresés következett, de végül minden ötletem kudarcba fulladt, a szerveren lévő WordPress sehogy sem jeleníti meg a fordítást.
Ekkor kezdtem a fordítási fájlt feldolgozó függvényekre koncentrálni, mivel az tisztán látszódott, hogy a fájl bekerül a memóriába, de a szövegeket a PHP-gettext nem tudja kiszedni. (A fordításokat tartalmazó fájl bináris.) Mivel nem akartam teljesen megérteni a PHP-gettext bináris feldolgozó eljárásait, megint jött a google és eljutottam a WordPress Trac changelog-jába, ahol a 4003-as revízióban érdekes dologra bukkantam. Ezek szerint a 64 bites gépeken nem tudja rendesen felolvasni a fordítási fájlt a WordPress-ben levő PHP-gettext. Elvileg áttértek az 1.07-es verzióra, ami ezt a hibát is javítaná, mégsem működik. Ekkor döntöttem úgy, hogy nem szarozok, kézzel befrissítem a PHP-gettext-et és CSODA történt! Megjelent a magyar fordítás!
Tehát aki hasonlók miatt szenved:
- töltsd le a PHP-gettext legújabb verzióját
- tömörítsd ki
- lépj fel a szerverre, készíts biztonsági másolatot a wp-includes/gettext.php és a wp-includes/streams.php-ról
- a kitömörített könyvtárból másold át a szerverre a gettext.php-t és a streams.php-t a wp-includes könyvtárba, felülírva a régieket
- ha még nem csináltad meg a nyelvi fájl telepítési lépéseket, akkor tedd meg
- kész vagy!
Nem tudom, hogy 100%-ban bugmentes-e a megoldás, de rövid tesztelés során, csak az admin felületen a Dashboard-on tapasztaltam némi hibát. Máshol minden ok. Elkezdem pedzegetni a kérdést a WordPress fejlesztőinél, kíváncsi vagyok mire jutok.