Globalizáció és lokalizáció

 

A legtöbb ember számára az a kérdés, hogy “Neked melyik a kedvenc Gettext PO editor-od?” ahhoz hasonló, mint ha azt kérdeznék tőle, hogy mikor a legjobb fogorvoshoz menni… Sajnos már nem emlékszem, hol olvastam ezt a kis szösszenetet, de kiválóan jellemezte az én érzéseimet is, amikor először szembekerültem a WordPress témák és bővítmények “korrekt” magyarítási eljárásának buktatóival.

A “korrekt” szó jelen esetben azért van idézőjelben, mert amikor korábban arról írtam, hogy hogyan lehet a “magyarul nem tudó” sablonokat mégis rávenni, hogy magyarul “szóljanak” a honlapunk látogatóihoz, akkor azt a megoldást javasoltam, hogy magában a kódban (a php fájlokban) írjuk át a megjelenő angol nyelvű üzeneteket magyarra. Néhányan ekkor megróttak, hogy ez nem helyes eljárás, hiszen ha az adott sablont vagy bővítményt frissítik, kezdhetjük elölről az egész munkát. A korrekt eljárás az lenne, ha a nyelvi fájlokat fordítanám le, mert azok függetlenek a php fájloktól, így nem gond a későbbi frissítés sem.

A probléma csak az volt, hogy ezekhez a sablonokhoz és bővítményekhez nem voltak nyelvi fájlok.

Hogy az elejéről kezdjem a történetet (és elnézést, de egy kicsit most muszáj “technikainak” lennem), a WordPress fejlesztői gondoltak arra, hogy rendszerük minél több ember számára használható legyen, anélkül azonban, hogy nekik kellene a világ valamennyi nyelvét beszélniük. Ez a címben említett globalizáció; a lokalizáció pedig a saját nyelvünkre való lefordítást jelenti. Ehhez a fejlesztők a nyílt forráskódú illetve ingyenes szoftverek szokásos lokalizációs eszközét, a GNU gettext eljárást választották.

Az eljárásnak három lépése van.

Az elsőnek a lényege, hogy a WordPress motor, valamint a szabályt betartó sablonok és bővítmények a php nyelv két függvényét használják: az egyik, a __($message) nem magát a szöveget, az “üzenetet” írja ki, hanem azt változóként adja át egy másik függvénynek; a másik, a _e($message) egyenesen a képernyőre ír. Mindkettő esetében a rendszer megpróbál fordítást keresni a $message-hez, és ha talál ilyet, akkor azt a szöveget írja ki, ha nem, akkor magát a $message-et.

A második lépésben egy program végigpásztázza a php fájlokat, és kiszedi a forráskódból az összes $message-et, amelyet a __() vagy a _e() függvények zárójelei között talál. Ebből készít egy speciálisan formázott fájlt, az úgynevezett POT (Portable Object Template) fájlt. Ha le akarsz fordítani egy sablont vagy bővítményt, ez az első, amelyet keresned kell. (Vigyázz, ha Microsoft Office van a gépeden, a .pot fájlokat diavítetítésnek hiszi a géped!)

A harmadik lépésben lesz szükségünk a bevezetőben emlegetett Gettext PO editor programra. Ezekből számos található az interneten, leggyakrabban a Poedit nevűt szokták ajánlani, én is ezt teszem. Ez a program egy könnyen kezelhető felületen tárolja mind az eredeti angol, mind a lefordított szöveget, egy PO (Portable Object), azaz .po kiterjesztésű fájlban, amelyet a .pot alapján készít elő. Ez tehát egy szerkeszthető, átírható fájl, amelyet bármikor a magad képére formálhatsz (tehát ha például létezik magyar fordítás, de tegező, Te viszont magázódót akarsz, át tudod írni magadnak). Minden alkalommal, amikor elmented a .po fájlodat, automatikusan keletkezik egy gépi nyelvre lefordított MO (Machine Object) fájl is – és ez az, amelyet végül is használni fog a rendszer. A gépi nyelvre fordítás azért szükséges, mert ennek a használata sokkal gyorsabbá teszi a rendszert, mint ha szövegesen kellene keresgélnie.

Magához a fordításhoz tehát a .po-ra van szükséged, a tárhelyedre azonban elegendő a .mo fájlt feltölteni.

A .po és .mo fájlok neve tartalmazhatja a bővítmény nevét is, például antivirus-hu_HU.po, de sokszor egyszerűen csak hu_HU.po a fájl neve. A magyar nyelvre utaló két hu közül az első, a kisbetűs a nyelvet, a második, a nagybetűs az országot jelzi, nálunk a kettő nyilván ugyanaz, de például a spanyol esetében van es_ES és es_PE is, az előbbi Spanyolországra, az utóbbi Perura vonatkozik.

Minderről további, részletes leírást olvashatsz a WordPress dokumentációjában ide kattintva, illetve az eljárással foglalkozik többek között Urban Giraffe és a Weblog Tools Collection cikke is (mindhárom angol nyelven van).

Ha pedig a kiválasztott sablonhoz, bővítményhez nem tartozik sem .pot, sem .po fájl, marad az, hogy beleturkászol a php kódba 🙂

 

Az általam lefordított sablonok és bővítmények .po és .mo fájljai, illetve az ilyenekkel nem rendelkező, egy-két fájlból álló bővítmények magyar nyelvre átírt php fájljai ingyenesen letölthetőek erre a linkre kattintva. (A gyűjtemény folyamatosan frissül.)

 

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

“Globalizáció és lokalizáció” bejegyzéshez 46 hozzászólás

  1. Moni!

    Ha az általam választott sablonhoz vannak különböző nyelvű .po meg .mo fájlok, de hu_Hu nincsen, azok egyikéből lehet hu_HU-t csinálni?
    Ha igen, hogyan? Egy kicsit homályos, amit olvastam. Tudnál esetleg segíteni?
    Még egy kérdés: ha a .php-ban írom át a szövegeket magyarra, a honlapon az ékezetes betűk nem mindenhol jelennek meg rendesen.. erre van esetleg valami ötleted, hogy mitől lehet, és mit lehetne átállítani, hogy működjön? (A WhooThemes Mainstream sablonról van szó.

    Előre is köszi a választ!

    Emese

    Válasz
    • Legegyszerűbb, ha átnevezed azét a nyelvét, amelyiket ismered, pl az angolt, tehát en_US.po helyett legyen hu_HU.po, aztán a Poedit fordítóval nyisd meg és írd át az üzeneteket.

      Ha a php-ban rosszak az ékezetek, akkor PSPad Editorral szerkeszd, és a Formátumot UTF-8-ra válaszd ki (akkor is kattints rá, ha látszólag abban van most is), így mentsd el, utána már jó lesz. Nem tudom, miért csinálja, de tapasztalat.

      Válasz
  2. Szia Móni!

    Eddig mindig a kódban turkászva fordítottam de nem volt tökéletes.Gondoltam kipróbálom ezt a poedit es forditást de valamiért nem sikerül. Szóval van egy Fthemes-es sablonom suv cars a neve megnyitom van langueges mapája abban van egy translate po fájl .megnyitottam poeditel leforditottam lett a mappában po meg mo fájl feltöltöttem a sablont de semmi.Mit csináljak? Ilyen en_en meg hu_Hu nem volt meg nem is lett a mapában. Segitségedet köszönöm:Istvan

    Válasz
  3. Sziasztok!

    Segítséget szeretnék kérni, boszimamához hasonló problémával küszködök, de nem tudok tovább lépni rajta.
    Abundance témát használok, amire woocommerce webáruházat telepítettem. Mivel a webáruház pluginnak nincs magyar nyelvű fordítása, ezért
    az angol nyelvi fileokat lefordítottam magyarra és felmásoltam az összes lehetséges mappába őket (wp content/languages és a plugins/woocommerce/languages)

    De semmi változás, illetve telepítettem a WPML plugint, de ezt írja ki, miután bekapcsolom.
    WooCommerce Multilingual is enabled but not effective. It requires WPML in order to work

    Ha valaki tudna segíteni, azt meghálálnám!
    Köszi!

    Válasz
    • Üdv,

      A Woocommerce nyelvi fájl neve pontosan így néz ki:
      woocommerce-hu_HU.mo
      woocommerce-hu_HU.po

      És alkönyvtárhelyesen:
      wp-content/plugins/woocommerce/woocommerce-hu_HU.mo
      wp-content/plugins/woocommerce/woocommerce-hu_HU.po

      Ha így mégsem menne akkor a tárhely szolgáltatód kérd meg, hogy indítsa újra az apache webserver-t. Utána működnie kell.

      Üdvözlettel,
      KardiWeb

      Válasz
      • Én már lefordítottam a lényegi rész kb 70%-át, de sajna valami hibát jelez a poedit és nem tudom megcsinálni a bináris állományt. Ha gondolod, azt bedobom a közösbe (ha nem gond, hogy tegező formában van). Az a gond, hogy nekem durva gyorsban kéne, mert már tegnap késő volt 🙂

        Próbálkoztam a WP e-commerce-el is, de sajna azt amint felrakom, megborul tőle a WP, és nem jövök rá miért. Ha angol WP alá rakom angolul, akkor hibátlan, de amint átállítom a lokalizációt, rotty…

      • Nem tudom, az-e a gond, de a Poeditnél miELŐTT elkezdesz fordítani, be kell írni a beállításoknál a többesszám kódját: nplurals=2; plural=(n != 1);

        Amióta ezzel kezdem, azóta nem jelez hibát a Poedit, azelőtt nekem is gyakran jelzett. Bár azért megcsinálta a .mo-t, de hibát jelzett közben. Szóval nem biztos, hogy Nálad is ezért van a hiba.

      • Az előző és az előző előtti verzióhoz teljes volt a fordítás, most sajnos megint frissítették a bővítményt, így újra meg kell csinálni, tehát per pillanat éppen nincs tökéletes verzió. Szólok, amint lesz, de most nagyon sok a melóm…

      • Köszönöm válaszod. Igaz, nekem is legújabb 1.6.1 verzió van fent, de gondolom sokból nem tartana egy korábbi verziót beszerezni, amelyhez van tökéletes Magyarítás. Szóval, engem érdekelne a korábbi verzió is, mert eléggé sürgős lenne. Szeptemberben nyitni akarunk…
        Erre az e-mail címre várom ajánlatod: trebor.gyan@gmail.com Köszönöm szépen!

  4. Bocs, passz… Kapásból nem tudom a választ, mert nem ismerem sem a sablont, sem a bővítményt. Foglalkoznom kellene vele pár órát, és az most részint nem megy (kb március 18-ig tele vagyok munkával), másrészt az már díjazós.

    Valaki más esetleg?

    Válasz
  5. Előbb cselekszem, aztán olvasok. 🙁 Lefordítottam egy plugin .mo fájlját dreamweaverrel. Most látom, hogy a .po-t kellett volna másképpen. Akkor most kezdhetem előlről az egészet?

    Válasz
  6. Sziasztok!

    Bár két évvel ezelőtt volt itt téma, de sajnos nekem most lenne szükségem segítségre.
    Avada -> woocommerce
    Friss telepítések, magyar a wordpress is, de a webshopban nagyon sok minden nincs lefordítva. Checkout, view cart, …
    Mi a megoldás ilyen esetben? az url-ben is angolul van, de azt nem merem átírni, mert attól félek, akkor nem fognak működni az ide-oda irányítások…
    Megjelenés -> Szerkesztő -> woo config php -ben bátorkodtam átírni, amit megtaláltam, de lehet egy frissítés alkalmával az is elveszik?

    Válasz
    • Szia!

      Az Avada fordítása nem teljes, és a woocommerce.php fájlja is az Avada nyelvi fájljából vesz egyes szavakat. Ne a php-ban fordítsd – ahogy írod, frissítésnél az elvész. Az Avada nyelvi fájljában fordítsd le, ami még hiányzik, és a wp-content -> languages -> themes mappába töltsd fel a nyelvi fájlokat, avada-hu_HU.po és avada-hu_HU.mo néven. Fontos, hogy a nevek pontosan ezek legyenek. Ezek nem fognak elveszni sem a WP, sem az Avada, sem a WooComm frissítése esetén.

      A végpontokat nyugodtan átírhatod magyarra, a linkjeiket is. Ha a szabványos helyen teszed ezt (a WooComm Beállításokban), akkor figyelembe fogja venni és működni fognak az átirányítások, mert ha Te megváltoztatod ezeket, akkor az adatbázisban is megváltoznak mindenhol.

      Sok sikert kívánok!

      Válasz
  7. Köszönöm Móni a válaszodat.
    Megnyitottam FileZilla-ban és a wp-content -> languages -> themes -> Avada -> languages -> Avada.pot -ot találtam kizárólag és csak csak angol. Keressem meg az (úgy látszik még fel nem töltött) avada-hu_HU.po és avada-hu_HU.mo -t és húzzam át FileZilla-ban? :-/
    Vagy hogy csinálják ezt, akik értenek hozzá? 🙂
    (bocs, valszeg a fejedet fogod)
    de köszönöm 🙂

    Válasz
    • Ez esetben nemhogy nem teljes a magyar fordítás, hanem nulla 🙂 A .pot is jó, ugyanúgy nyisd meg a PoEdit nevű programmal, és fordítsd le benne, amit kell, csak azután (vagy előtte, mindegy) nevezd át avada-hu_HU.po -nak. Az avada-hu_HU.mo automatikusan létrejön, amikor a .po -t elmented.

      Amúgy semmi gond, ezért van a WP-Suli 🙂

      Válasz
    • Ja, de várjál, túl gyorsan olvastam, amit írtál.

      Ne a languages-ben keresd, először nézd meg a wp-content -> themes -> Avada mappában, hogy van-e lang vagy languages mappa, hátha abban már van valamennyire kész hu_HU változat, és azt másold le, fordítsd tovább, és majd másold vissza, de ezúttal már a wp-content -> languages -> themes mappába avada-hu_HU.po néven.

      A WordPress először itt nézi, és ha itt nincs, akkor nézi a sablon saját könyvtárában, ezért nem fog felülíródni a Tiéd frissítéskor.

      Válasz
  8. 🙂
    Az egészet fordítsam le? Mert jó lenne, ha minden magyar lenne. Nem jobb ha kicsomagolom az avada-hu_Hu.po -t és áthúzom a szerverre Filezilla-ban? Vagy ettől még nem lesz magyar a sablon? :-/

    Válasz
  9. Olyan gyors vagy, hogy lemaradtam. 🙂 Szóval most hogy írtad, hogy a sablon nincs lefordítva, ekkor jöttem rá hogy igen, mert sehol sincs avada-s magyar nyelvi fájl feltöltve. Valahol a telepítésnél elrontottam bizonyára valamit. Szóval áthúzom a .po fájlt a nyelvi fájlokhoz és utána mit kell tennem?

    Válasz
  10. Megvan a full package és megvan az a fájl is. Betöltöttem Poedit-be. Soronként fordítgassam és mentsem el .mo -ba?
    Van ott .mo fájl is. Cska ezek nincsenek a szerveren még, nincsenek feltöltve, valamiért telepítéskor bizonyára rosszul csináltam. Minden megvan, csak azt nem tudom mit hova kell másolni.

    Válasz
  11. Rájöttem mi a gond :-/ Azt a zip-et telepítettem, amiben nem voltak a nyelvi fájlok.
    Van egy másik avada-s zip, amiben benne van, de én nem azt raktam fel valamiért.
    Ha újratelepítem a másikat wordpress-be, akkor a jelenleg elkészült webshop elveszik?

    Válasz
    • Nem csináltál rosszul semmit és nem kell újratelepítened semmit.

      Az Avada úgy érkezik, hogy egy nagy .zip-ben benne van minden. Van egy külön Avada Theme mappa, abban egy Avada.zip, ezt kell feltöltened a weblapodra. Ennek a languages almappájában csak az eredeti .pot fájl van meg, ami angol nyelvű és nincs benne fordítás.

      Van egy másik mappa a Full Package-ben, aminek Languages a neve, ebben benne van a hu_HU.po nevű fájl. Ezt nyisd meg a PoEdit nevű programmal, és (igen, soronként) fordítsd le benne azokat a kifejezéseket, amelyek kellenek Neked és még angolul vannak. Amikor elmented, automatikusan létre fog jönni a hu_HU.mo nevű fájl is.

      Ezután ezt a két fájlt nevezd át úgy, hogy eléjük írod az avada- részt, tehát a két fájlod neve legyen avada-hu_HU.po és avada-hu_HU.mo. FTP-vel töltsd fel őket a wp-content/languages/themes mappába.

      És kész.

      Válasz
  12. Szia Móni,

    tegnap este így tettem és sikerült. Köszönöm a segítséget és a türelmet!!! 🙂 Nagyon jól le tudod írni, lásd még a gyengék is megértik. 🙂
    Már “csak” szamlazz.hu -t és valami fizetési lehetőséget kell beállítanom. 🙂

    Válasz
  13. Hello!

    Próbálkozom egy teszt modul szövegeinek fordításával de nem akar összejönni.
    A Poeditben létrehoztam a szükséges fileokat, ott figyelnek a languages mappában.

    Egy másik tutorialban olvastam hogy hozzá kell adni a php-hoz ezt a két sort:

    public function your_plugin_name_init() {
    load_plugin_textdomain( ‘your-plugin-name’, false, ‘your-plugin-name/languages’ );
    }

    és

    add_action(‘admin_init’,$plugin_admin, ‘your_plugin_name_init’);

    Azt még hozzá tenném hogy a plugin admin felületét szeretném fordítani mivel még csak annyiból áll…

    Tudnátok valamit javasolni hogy esetleg hol rontom el a dolgot?

    Válasz
    • Na közben rájöttem, a hiba abban volt hogy nem jól neveztem el a po és a mo filet.
      Helyesen most wp-test-hu_hu.po és wp-test-hu_hu.mo szerepelnek a languages mappában és így már működik 🙂

      Válasz
    • A nyelvi fájlokat annak alapján választja ki a rendszer, hogy milyen nyelvű a Vezérlőpult, így nem kell semmit beírni a functions.php-ba.

      Örülök, hogy közben rájöttél a hiba okára! 🙂

      Valójában úgy a hivatalos, hogy wp-test-hu_HU.po (és .mo), és elvileg case-sensitive, de ha jól működik így is, akkor ezek szerint annyira mégsem érzékeny a kisbetű-nagybetűre 🙂

      Válasz

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..