Autor Zpráva
panmagor
Profil *
Něco jsem si tady na diskusi o tom dohledal, pak Google... A moje řešení (tedy návrh) je udělat to takto. Otázkou je, jestli je to nejlepší řešení..

<a href="jazyk.php?lang=en" title="anglicky">Anglicky</a>
  <a href="jazyk.php?lang=de" title="Deutsche">Německy</a>
  <a href="jazyk.php?lang=ru" title="Rusky">Rusky</a>
  <p>
<?php 
session_start();

if ( $_GET['lang'] == "en" ) {$_SESSION['lang'] = 'en';}
if ( $_GET['lang'] == "de" ) {$_SESSION['lang'] = 'de';}
if ( $_GET['lang'] == "ru" ) {$_SESSION['lang'] = 'ru';}
//if ( !$_GET['lang'] ) {session_start(); $_SESSION['lang'] = 'cz';}

//if ($_SESSION['lang'] == 'cz'){ echo "AHOJ!";}
if ($_SESSION['lang'] == 'en'){ echo "Hello!";}
if ($_SESSION['lang'] == 'de'){ echo "Willkomen!";}
if ($_SESSION['lang'] == 'ru'){ echo "Rusky!";}
?>
Taps
Profil
panmagor
no myslím si ž to není ideální. Přeci jen vždy bude zvolený jen jeden jazyk, proto bych navrhoval in_array popř. switch
joe
Profil
A proč to ukládáš do sessions? Když máš parametr v adrese, tak je to zbytečné.
panmagor
Profil *
Jak to tedy nejideálněji vyřešit?
panmagor
Profil *
Takto?

<?php 
if ( $_GET['lang'] == "en" ) { Anglická verze}
if ( $_GET['lang'] == "de" ) {Německá verze}
if ( $_GET['lang'] == "ru" ) {Ruská verze}
?>
ShiraNai7
Profil
panmagor

switch($_SESSION['lang']){
case 'cz': echo 'cesky'; break;
case 'en': echo 'anglicky'; break;
case 'de': echo 'nemecky'; break;
case 'ru': echo 'rusky'; break;
}


Samozřejmě tohle je jenom taková hračka, na reálných stránkách s delšími texty by se to dělalo na 100% jinak.
panmagor
Profil *
A jak by se to dělalo na stránkách s delšími texty? :-)
ShiraNai7
Profil
panmagor
~ pro krátké popisky formulářů, tlačítek, obecných nadpisů, hlášek apod. by se vytvořilo pole popisků pro každý jazyk v externím souboru a to by se vkládalo po zjištění nastaveného jazyka, na načítání popisků by se udělala funkce
~ samotný obsah stránek by byl buď uložen ve více souborech pro každý jazyk zvlášť nebo ve více sloupcích v databázi (pokud by web používal databázi)
~ nastavení jazyka by se ukládalo do session (např po kliknutí na vlajku)
panmagor
Profil *
nastavení jazyka by se ukládalo do session (např po kliknutí na vlajku)

Takže moje řešení pomocí session by se dalo použít na webu....
srigi
Profil
Ja to riesim vo svojom mini frameworku pomocou triedy ROUTER, kde z URL vyextrahujem lang a ten nasledne ulozim do triedy REGISTRY. V controlleroch si potom tuto premennu citam a podla toho sa zariadim. Ak by si mal zaujem, mozem zabalit kostru frameworku do zipka, ale znamenalo by to, ze by si opustil svoj kod.
srigi
Profil
ShiraNai7
~ nastavení jazyka by se ukládalo do session (např po kliknutí na vlajku)

Ale to nie je moc mudre z hladiska SEO, nakolko sa pod jenou URL moze objavit niekolko verzii webu. Lang je vhodne ukladat do URL.
ShiraNai7
Profil
srigi
Jo, to je fakt. Takže bych to řešil virtuálním umístěním webu do podadresářů podle jazyku (example.com/cz/ pro češtinu, example.com/en/ pro angličtinu atd.) - a přes .htaccess bych vše směroval na společné skripty, které by dále fungovaly způsobem mnou popsaným výše.
srigi
Profil
Takže bych to řešil virtuálním umístěním webu do podadresářů podle jazyku


jj, tak to mam vyriesene v tom spominanom FW. Navyse som implementoval na indexovej stranke detekciu jazyka z UA stringu, takze poliak moze byt automaticky presmerovany na polsku verziu (po zadani URL www.example.com sa prevedie detekcia a ak je jazyk podporovany, je presmerovany na www.example.com/pl).
joe
Profil
Jak to tedy nejideálněji vyřešit?
Tak, že pomocí $_REQUEST / $_GET přečteš parametr lang z adresy a podle toho vytvoříš dotaz na db, kde jsou uložené texty.
panmagor
Profil *
joe

Tak přesně tohle jsem chtěl slyšet :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: