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.

 

hirdetés
Online WordPress Tanfolyam - Hamarosan nyitunk!

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 🙂