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

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.

  1. mcryan

    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.

  2. BlindingLight

    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