Pár héttel ezelőtt írtam a többnyelvű oldalak létrehozásának mikéntjéről. Kisvártatva egy kollégám, aki szeretné inkognitóját megőrizni, és szerényen mindössze a becenevét (Zsagi) árulja el nekünk, felajánlotta, hogy megosztja velünk az ő módszerét ugyanerre.

Figyelem! Az alábbi bejegyzés alkalmas a programozói háttérrel nem rendelkező, mondhatni átlagos WordPress-használók nyugalmának megzavarására! 🙂

Következzen tehát Zsagi vendégcikke.

 

Hol volt, hol nem volt, volt egyszer egy designer által megálmodott weboldal terv. Az első, ami problémát okozott, az volt, hogy minden menüpont másmilyen ikonnal volt megjelölve. Sajnos a rendelkezésre álló WordPress verzió sem a legújabb (3.1) a serveren futó PHP régebbi verziója miatt. (Ennek frissítése nem az én hatásköröm.) Így az általam fellelt menü-csinosító pluginok egyike sem működött az elvártnak (azaz a designer elképzeléseinek) megfelelő módon. Maradt a statikus menü-beégetés a header.php-ba. Ez végül is a menü angolra állítását megkönnyítette a későbbiek során.

Én is kipróbáltam a qtranslate és az mlanguage pluginokat az angol tartalom megjelenítéséhez, de ezek a menük, widgetek, search találati oldal fordítására nem voltak képesek. Az időhiány miatt nem vállalkoztam a pluginok, vagy a WordPress újraírására… 🙂 Ezért elkezdtem böngészni a WordPress function-öket, azaz a beépített függvényeket. Itt egy érdekes kódolnivalóra bukkantam, a get_header() függvényre.

Ez ugyanis kaphat egy paraméter értéket, és ezzel megadható, hogy melyik headert hívja be az angol nyelvű template php-ban. Készítsük el a header angol változatát, és nevezzük el header-angol.php-nak. Ezt az angol nyelvű php oldal sablonban így hívjuk meg:

Mivel korábban említettem, hogy a menü statikus módon volt a headerben elhelyezve, így csak a menüpontok angol változatát kellett átírnom a header-angol.php-ban, és megvolt az angol nyelvű menüsor, az angol nyelvű oldal sablon php fájlokhoz (pl page-angol.php). Amikor elkészült egy angol nyelvű oldal, akkor ezt a sablont rendeltem hozzá, és máris angol volt a menüsor is.

Magyar oldalon ugyanez:

Telepítettem a Custom Post Templates plugint, amelynek segítségével a bejegyzésekhez is létrejött egy beállító ablak:

Tehát a menü és a tartalmak kétnyelvesítése ezzel készen volt; következett az oldalsáv magyar és angol nyelvű szétválasztása. Ebben a Custom Sidebars plugin volt segítségemre.

Mint a képen látható, létrehoztam a primary widget area területhez egy angol elnevezésű sidebart. Ide ugyanazokat a widgeteket pakoltam fel, mint az “eredeti” primary sidebar-ra.

A Linkable Title Html and Php Widget-ben én php-val írtam meg a szükséges megjelenítési funkciókat. Tehát a saját kódjaimban át tudtam írni a magyar nyelvű részeket angolra. Véleményem szerint, aki kész widgeteket használ, annak ismét fel kell rakni az angolra is ugyanazt, csak angol címmel. Az angol nyelvű oldalakon ki kell választani a hozzájuk tartozó oldalsávot:

Nem maradt más hátra, mint a találati helyeket megjelenítő search oldal angolosítása. Ehhez szükség volt kétféle searchform.php és kétféle search.php fájlra, az egyiken magyar, a másikon angol szöveggel (és persze a get_header() eltérő beállításával). Mivel nálam a keresőmező a fejlécben kapott helyet, ezért az angol és magyar header.php-ban a megfelelő nyelvű searchformot hívtam meg a get_search_form függvénnyel. Az angol searchform.php-ban egy hidden típusú input elemet illesztettem be, a neve nyelv, az értéke ang lett, így:

Bele kellett írni a wp-includes/theme.php és general-template.php, valamint a library/legacy.php fájlokba is: a theme-ben a get_search_template függvényben megvizsgáltam, milyen értékkel tér vissza a nyelv, és ha ez ang, akkor az angol search.php-t hívja meg, ha nem, akkor a magyar nyelvű ugyanilyet. Erre egy lehetséges megoldás:

 

Eddig Zsagi vendégcikke, amelyet ezúton is hálásan köszönök. Ha ezek után bárki azzal a váddal merne illetni, hogy a WP-Suli blogon kizárólag “amatőr” írásokat közlünk, most már van mivel visszavágnunk 🙂