Kétnyelvű weblap – másképp

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 🙂

 

Oszd meg Te is:

Share on facebook
Facebook
Share on google
Google+
Share on twitter
Twitter
Share on linkedin
LinkedIn

Ezek is érdekesek lehetnek számodra: 

Iratkozz fel hírlevelünkre!

Javasolt eszközök:

Banner250x250.png
Elementor Pro
Generatepress Logo White Asset
GeneratePress
Divi 4.0
Divihello
Prémium támogatás és ajándék Divi licence
Adatvedelem.png
ADATVÉDELEM minta
Aszf.png
Webshop ÁSZF minta

“Kétnyelvű weblap – másképp” bejegyzéshez 7 hozzászólás

  1. Köszönöm, ez nagyon hasznos, én pont erre kerestem megoldást, és jelentkezem, ha a fentieket sikerült végrehajtanom, az én nyugalmamat mindenesetre megzavarta, de jó értelemben:-)

  2. A kérdésem nem a többnyelvűsítéssel, hanem a honosítással kapcsolatos, vagyis azt szeretném elérni hogy a sablon és a pluginok is magyarul jelenjenek meg. Főként a WooCommerce magyarítása lenne fontos! Ehhez feltelepítettem a Honosító plugint, amivel szerkeszteni lehetne elvileg a .po ill. .mo file-okat. Azonban ha az .mo file szerkesztésére kattintok, a következő piros hibaüzenet jelenik meg: Egy olyan fordítási katalógust próbál megnyitni, amely túllépi a PHP NaN MB memória limitet.
    Kérjük engedélyezze az alacsony memória módot az áttekintés oldalon. Csak sajnos hiába engedélyezem, a hibaüzenet akkor is megjelenik, vagyis amikor visszatérek a hibaüzenet után a honosító plugin áttekintő oldalára, akkor már nincs bepipálva a kevés memória mód, tehát nem tartja meg ezt a beállítást. Az Új nyelv hozzáadása sem működik, ekkor egy üres ablak ugrik fel. Vajon ez valami szerver beállítási probléma? Sajnos a szerver üzemeltető sem tudta megoldani ezt a kérdést. Nagyon elkeserítőek ezek a problémák számomra, mert hogy még elképzelni sem tudom merre keressem a megoldást, mivel semmifajta programozói képzettségem nincs. Kérlek segítsetek!
    Nagyon köszönöm előre is!

    • Töltsd le a POEdit nevű programot: http://www.poedit.net/download.php
      Töltsd le FTP-vel a tárhelyedről a wp-content/plugins/woocommerce/languages mappából a woocommerce-en_GB.po nevű fájlt.
      Nyisd meg a POEdittel.
      A Katalógus -> Beállítások menüpontban írd át az adatokat: beírhatod a saját nevedet és e-mail címedet, de ez nem kötelező, viszont írd át a nyelvet Hungarian-re, az országot Hungary-re, és a Többesszámú formához írd be: nplurals=2; plural=n != 1;
      Ezután mentsd el a fájlt woocommerce-hu_HU.po néven.
      Most csináld meg a fordítást, időnként mentsd el. 1762 sor, tehát eltart egy darabig, de ha rám hallgatsz, csak a kívül látható üzeneteket fordítod le, az admin felületet nem…
      Ha mentés után Fatal error hibaüzenetet ír ki, azzal ne foglalkozz, jó az! 🙂
      Amikor kész vagy, töltsd fel FTP-vel az elkészült woocommerce-hu_HU.po, és a közben automatikusan létrejövő woocommerce-hu_HU.mo fájlt is a wp-content/plugins/woocommerce/languages mappába.
      Ezután, ha a Vezérlőpultod magyar, akkor a WooCommerce is magyar lesz. (Nagyrészt 🙂 Az admin felületen ugyanis nem vesz mindent figyelembe, de a lényeg az, hogy kívül jó.)
      (Ezt a leírást meg is osztom egy külön bejegyzésként, mert annyira részletesen leírtam, hogy közkinccsé kell tenni 🙂 )

  3. Köszönöm Móni! Megcsináltam a fenti instrukciók alapján a WooCommerce magyarítást. Bár még nem tökéletes, a CART szócskát egyszerűen nem találom a .po file-ban, pedig már 20adszorra nézem át. Persze sokszor nehéz eldönteni, hogy mi az ami kívül látszani fog, hiszen csak azt fordítom le. Most már csak a honlap blog részében vannak angol szövegek, ezeket hogyan tudom magyarítani? Köszönöm

  4. A CART szócskát a sablonban nem találom, Find-al is rákerestem a POEditben. A WooCommerce .po -ban viszont kétszer is szerepel a Cart szó: cart és Cart, mindkettőt lefordítottam, de a főmenüben továbbra is angolul van. Ami még furább, hogy ha a termékek fölé viszem az egeret, ugye ott van a Kosárba és a (jelenleg sajnos még) Show details felirat, az egyiket simán fordítottam, a másik pedig nem található meg a .po-ban. Pedig feltételezném, hogy valahol egymás közelében kellene lenniük. Ezt is hiába keresem a Find-al. Itt láthatod a problémámat:
    http://wp.pytheas.hu/Pytheas/product-category/reprint/tortenelem/
    Köszönöm

    • Az sajnos előfordul, hogy a bővítmény frissítésekor átírnak egy szövegrészt a bővítmény egyik fájljában (pl ha használsz termékvariációkat, akkor van ott egy “Clear Selection” kifejezés, ami korábban “Reset Selection” volt), viszont a nyelvi fájlban ezt nem írják át. Tehát a nyelvi fájlban a “Reset Selection”-t hiába fordítottam le, mivel a kódban már nem az volt, ezért ezt közvetlenül a kódban kellett átírnom. És van benne még pár ilyen, lehet, hogy Nálad is ilyen gond van.

      (Egyébként a fenti link nem működik, de a http://wp-pytheas.hu igen, ott néztem meg.)

Szólj hozzá!

Ez a weboldal az Akismet szolgáltatását használja a spam kiszűrésére. Tudjunk meg többet arról, hogyan dolgozzák fel a hozzászólásunk adatait..