Az első kérdés, ami felmerül majdnem mindenkiben, hogy lehet egy többnyelvű honlapot megcsinálni, amin váltani lehet a nyelvek között. Vegyünk egy példát, van egy magyar lapunk, rátéved egy külföldi, magyarul nem beszélő látogató, és nem találkozik olyasmivel, hogy nyelvcsere. Mit tegyünk? – rövid gondolkodás után egy kezdőlapot készítünk, ami tartalmazza a választható nyelveket (pl. kis zászlók vagy szöveg formájában). Ehhez nyújt segítséget a leírás.
Mielőtt bármit is kezdenél, készíts egy nyelvek mappát (lehet más a mappa neve, csak akkor a lenti kódokat is ennek megfelelően kell módosítani). Ebben a mappában lesznek a nyelv.php fájlok.
Kezdésként nyiss meg egy webszerkesztő/texteditor programot és hozz létre egy új dokumentumot. A neve pl. legyen: magyar.php, tartalma pedig:
1 2 3 4 5 6 7 8 9 10 | <?php $lang = array ( 'udv' => "Szia, vendég", // Az első példa 'pelda1' => "szék", // A második példa 'pelda2' => "egér", // A harmadik példa ); ?> |
Hozz létre egy új fájlt, mensd angol.php néven.
1 2 3 4 5 6 7 8 9 10 | <?php $lang = array ( 'udv' => "Welcome, guest", // Az első példa 'pelda1' => "chair", // A második példa 'pelda2' => "mouse", // A harmadik példa ); ?> |
Azt hiszem eddig egyértelmű volt, meg”alkottuk” a nyelvi fájlokat, és ezeket a fent is említett nyelvek mappába kell elhelyezni.
Most ismét új dokumentum.. valassz.php
1 2 3 4 5 6 7 8 9 10 11 | <?php $alap = 'magyar'; if(file_exists('nyelvmappa/' . $_GET['nyelv'] . '.php')) { include 'nyelvmappa/' . $_GET['nyelv'] . '.php'; } else { include 'nyelvmappa/' . $alap . '.php'; } ?> |
Az $alap változóban tároljuk, hogy melyik legyen a nyelv, amit megjelenítünk, ha nincs nyelv megadva, vagy az adott nyelvi fájl nem található.
Figyelem! a kódban írt „nyelvmappa” az az a mappa, amiben a nyelvi fájlaidat tárolod (nyelv.php fájlok).
Ismételten új dokumentum (mi más :) ) kiir.php
1 2 3 4 | <?php include 'valassz.php'; echo $lang['udv']; ?> |
Az echo $valami adja meg, mit írjon ki a kód!
Így lehet a nyelvekre hivatkozni: kiir.php?nyelv=magyar
*Magyarázat
a nyelv= (egyenlő) után kell beírni a nyelvet.
Szerző: RoolY
Abban esetleg valaki tudna segíteni, hogy ha azt szeretném, hogy legyen alapból egy get fügvény pl nekem most a
# if ( isset($_GET[‘link’]) ){
# include $_GET[‘link’].’.php’;
# }
És most megcsinálom ezt a nyelvel is akkor az müködhet úgy, hogy pl
http://tutorial.hu/index.php?link=kezdolap&nyelv=magyar
Ez lehetséges? Kerestem gugiba nem találtam. Bocs, hogy megkérdezem de nincs erőm kiprobálni.
Háj!
Kicsit régi cikk, de azért hozzászólok, ha nem baj! :) A nyelvi fájlokban miért tömböt használsz??? Nem egyszerűbb a konstansok használata?
A másik: az if ( file_exists( … ) ) {} rész egy kicsit vicces. Kezdjük azzal, hogy fölöslegesen file műveletet nem végzünk, mert eredendően lassú. Meg azt sem értem, hogy miért az a ‘ha’, hogy létezik-e a file? Van x nyelved, te írod az oldalt, csak tudod, hogy milyen filejaid vannak. :D
Szerintem a legcélravezetőbb megoldás az, hogy sessionben tárolsz egy language elemet, abba berakod pl, hogy ‘hun’, és ennyi. (ez az if-es megoldás bizonyos biztonsági szempontok miatt is előnyös, de ha nem baj ezt most nem magyarázom el) Megmutatom:
Ezzel ‘elmented’, hogy a user melyik nyelvet használja, a következőkben pedig csak annyi a dolgod, hoooogy:
Így szépen működni fog. Plusz a cikkben leírt megoldásnál mindig jelen kell lennie a $_GET[‘language’]-nek, míg a sessionbe elég egyszer berakni inicializálásnál, és többet nem kell vele foglalkozni. Nem hogy minden oldalletöltésnél file_exists()…
Nem kötni akartam, csak ez kicsit szúrta a szemem. :D