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:
<?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.
<?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
<?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
<?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
Harder
Profil
Korábbi hozzászólások (2)
A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.
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:
if ( $_GET['lang'] == 'hun' )
$_SESSION['lang'] = 'hun';
if ( $_GET['lang'] == 'eng' )
$_SESSION['lang'] = 'eng';
Ezzel 'elmented', hogy a user melyik nyelvet használja, a következőkben pedig csak annyi a dolgod, hoooogy:
if( isset( $_SESSION['lang'] ) )
require_once( 'languages/' . $_SESSION['lang'] . '.php' );
Í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
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat