Többnyelvű oldal fejlesztése Drupal 6.x alatt

A több helyről érkező pozitív információ nyomán elhatároztam, hogy kipróbálom a Drupal alapú tartalomkezelés gyakorlati megvalósítását. Teljes mértékben kezdőként érkeztem a feladathoz, ezért rengeteg olvasással és videó nézéssel töltöttem a kezdeti időszakot, köszönet érte a szerzőknek. Ennek eredményeként úgy éreztem, hogy az elméleti alapokat megszereztem (természetesen ez a gyakorlat során kiderült, hogy nem igaz), nekiállhatok a tényleges fejlesztésnek.

Ha az ember többnyelvű fejlesztésbe kezd akkor a Drupal több lehetőséget is felkínál erre. Lehetőségünk van a keretrendszer és tartalom vagy csak a tartalom többnyelvű megjelenítésére. Ez utóbbi az egyszerűbb megoldás:

  1. A 6-os verzióban található locale modult (Adminisztráció -> Webhely építés -> Modulok) be kell kapcsolni.
  2. Ha a drupal alaprendszert is szeretnénk több nyelven, akkor a kívánt nyelve(ke)t letölteni a Drupal webhelyéről, és kicsomagolás után bemásolni a Drupal gyökérkönyvtárba a könyvtárakat és fájlokat.
  3. Az Adminisztráció -> Webhely beállítása -> Nyelvek oldalon a nyelv hozzáadása linkre kattintva a kívánt nyelv kiválasztása és mentés.
  4. A tartalom típusoknál a megfelelő tartalomra ( Adminisztráció -> Tartalom kezelés -> Tartalom típusok ) engedélyezni kell az "Általános beállítások" alatt a "Több nyelv támogatása:" választógombok közül a "Engedélyezett, fordítás támogatással" opciót.

Ezután a megadott tartalom típusoknál tartalom beküldésekor kiegészül a beviteli forma egy "Nyelv" választólistával, ahol megadhatjuk a tartalomhoz választott nyelvet. A tartalom mentése után feltűnik egy újabb opció a tartalomnál "Fordítás".

Erre kattintva egy listát kapunk, ahol a tartalom fordításai vannak felsorolva. A különböző nyelvekre kattintva tudjuk a fordítást elvégezni. Amennyiben a fordítást megcsináltuk, akkor a tartalom alatt megjelennek a nyelvek, amin a fordítás elérhető, ezekre kattintva az adott nyelvre fordított szöveg jelenik meg. Ezzel a tartalmak többnyelvű megjelenítését el is végeztük.

Hátradőlhetünk, illetve hátradőlhetnénk, ha egy többnyelvű felülettől csak ennyit várnánk el. Egy igazi többnyelvű oldal azonban több kihívást rejt magában, amikor a címeket, menüket és tartalmakat is úgy akarjuk elkészíteni, hogy az adott nyelvet beszélő felhasználók otthon érezzék magukat az oldalunkon. Ez már keményebb dió, de a Drupalos fejlesztők erre is kidolgozták a megoldásokat. Ez az írás azért született, hogy könnyebben tudjanak eligazodni a hozzám hasonló kezdők ennek a megvalósításában.

Mire lesz szükségünk?

A fentebb írt 1-3 pontokban vázoltak végrehajtására.

Az alaprendszeren túl szükségünk lesz az Internationalization modulra, jó ha megjegyezzük, hogy ez az i18n modul, mindenhol így hivatkoznak rá.

Miután telepítettük a webszerverre, be kell kapcsolnunk a modulok között is: Adminisztráció -> Webhely építés -> Modulok a Multilanguage szekcióban kapcsoljunk be mindent amit csak lehetséges, majd mentsük a beállításokat.

A nyelvválasztó menüt meg kell jeleníteni, ez fontos szerepet tölt be már a fejlesztés során is. Az Adminisztráció -> Webhely építés -> Blokkok oldalon a Nyelv választó blokkot pozicionáljuk az általunk preferált helyre. Mentés.

Ezután menjünk a Adminisztráció -> Webhely beállítása -> Multilingual system oldalra és állítsuk a "Content selection mode: " választómezőt a Mixed current language (if available) or default language (if not) and language neutral opcióra.

Ezzel nagy lépést tettünk előre, de korántsem eleget. Ha eddig nem szerettünk belepiszkálni az alapbeállításokba, most erőt kell venni magunkon és határozott mozdulatokkal be kell másolnunk a következő blokkot
/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n is enabled.
* These are the basic ones for Drupal core, but you can add your own here.
*/
$conf['i18n_variables'] = array(
// Site name, slogan, mission, etc..
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Different front page for each language
'site_frontpage',
// Primary and secondary links
'menu_primary_links_source',
'menu_secondary_links_source',
// Contact form information
'contact_form_information',
);
a telepített drupal rendszerünk sites/default/settings.php fájl végére.

Ezzel elérjük, hogy a telepített nyelveken is meg tudjuk adni a webhely adatait. Ehhez menjünk az Adminisztráció -> Webhely beállítása -> Webhely információk oldalra és figyeljük meg a beviteli mezők alatti feliratot, miszerint a "Név:" mezőnél például a következő szöveg látszik: "A webhely neve. This is a multilingual variable". Furfangos ennek a kezelése, mert mindig a kiválasztott nyelven kell megadni a szövegeket az ilyen információval bíró mezőknél, majd mentés. Így létrejönnek jelen esetben a webhely információi az összes nyelven, amit kiválasztunk és megadjuk az adatokat, majd elmentjük. Ha ezek után nyelvet váltunk, már ezek az adatok az adott nyelven jelennek meg az oldalunkon. Hurrá! Nem is volt olyan nehéz. Akkor most hozzunk létre menüpontokat.

Adminisztráció -> Webhely építés -> Menük és válasszuk az Elsődleges linkek menüt. Adjunk hozzá egy menüpontot. Keressünk olyan mezőt ahol látjuk a "This is a multilingual variable" feliratot. Igen kedves olvasó, nem találunk ilyen mezőt, az elsődleges és másodlagos linkek kezelése egy kicsit másként működik. Ha létrehoztuk ezt a menüpontot akkor töröljük, így semmit nem tudunk kezdeni vele. De akkor hogy lesz nekünk többnyelvű oldalunk? Semmi izgalom, a megoldás a következő:

Adminisztráció -> Webhely építés -> Menük a Menü hozzáadása oldalon adjunk hozzá annyi menüpontot ahány nyelvet felvettünk a Nyelv hozzáadása oldalon. Például egy Magyar, Angol oldalnál vegyünk fel egy menüt "Magyar" és egy menüt "Angol" néven (bármilyen szöveg megadható ). Ha ezek megvannak, akkor az Adminisztráció -> Webhely építés -> Menük oldalon válasszuk a Beállítások pontot. És lássunk csodát! Az "Elsődleges hivatkozások forrása: " választómezőnél láthatjuk a "This is a multilingual variable." feliratot. Innentől könnyű dolgunk van: az éppen kiválasztott nyelv megfelelő menüpontját válasszuk ki (pl. Magyar) és mentsük a beállítást, majd ismét a Beállítások menü, váltsunk másik nyelvre és válasszuk forrásnak a másik hozzáadott menüt (Angol), mentés. Innentől nincs más dolgunk, mint létrehozni a Magyar, Angol, stb. menük alatt a menüpontokat. Ezek fognak megjelenni a kiválasztott nyelvnél.

Most elértük, hogy az oldal több nyelven is tud kommunikálni velünk, már csak a tartalmaknál kell ugyanezt elérni. A fent vázolt megoldás helyett, már sokkal elegánsabb megoldást is választhatunk. Nem kell minden tartalom alatt megjelenniük a nyelveknek, már a nyelv választó menüben választott nyelven "automatikusan" is megjelenhetnek.

Én a taxonómiát választottam a megoldás kidolgozására. Ezért erről tudok most írni, bizonyára van több megoldás is.

Menjünk az Adminisztráció -> Tartalom kezelés -> Taxonómia oldalra és adjunk egy szótárt hozzá a Szótár hozzáadása menüvel.

A "Translation mode" választómezőben válasszuk a "Localize terms. Terms are common for all languages, but their name and description may be localized." opciót. Nyelvnek azt a nyelvet amilyen nyelven a "Szótár nevét" megadjuk. Innentől a szokásos eljárás, tartalom típus ahol használni szeretnénk valamint a választás módja a tartalomnál majd. Mentés.

A szótárhoz most adjunk kifejezéseket a "kifejezések listája" linkre kattintva. Lehetőleg a szótárral azonos nyelven hozzuk létre a kifejezések nevét. Ezt majd később fogjuk fordítani, és bár nem próbáltam másként, logikailag az a gyanúm, hogy a szótárnál megadott nyelv lesz a fordítás alapja.

Ha az összes kifejezést megadtuk akkor kezdhetjük lefordítani az Adminisztráció -> Webhely építés -> Felület fordítása oldalon. A "Keresés" linkre kattintva egy elég komplex oldalra jutunk, itt jelen esetben érdemes a "Keresés csak a következőkben: " választólistából a "Taxonómia" pontot választani, majd a "Keresés"-re kattintani. Ha mindent jól csináltunk akkor itt megjelennek a taxonómiáknál megadott szövegeink amiket elkezdhetünk lefordítgatni a szerkesztés linkre kattintva.

Én az angolt választottam default nyelvnek, nem tudom, hogy mi történik, ha más nyelven hozzuk létre a szótárakat a kifejezésekkel.

Remélem, hogy minden fontos lépést leírtam, ezáltal használható lesz olyan embereknek akik hozzám hasonlóan most ismerkednek a Drupal-lal, illetve a többnyelvű felületekkel Drupal alatt.

Dudás József