url átirányítás probléma
Hello
4 nyelvválasztási lehetőség van: magyar, angol, német, spanyol
Mindegyik nyelvhez tartozik egy aldomain: pl angol -> angol.domain.hu stb...
.htaccesben be van állítva, hogy melyik mappából töltse be az adott nyelvnek megfelelően: nyelvvaltas/hu ....
Egy php fájlban swich elágazással meg van adva, hogy ha az angol nyelv van kiválasztva akkor irányítsa át a megfelelő aldomainra
case "en":
header("location: http://www.angol.domain.hu/fooldal");
exit;
break;
ez jól is működik: a kiválasztott nyelvnél átirányítja a megfelelő aldomainra, de nem a megfelelő nyelvet jeleníti meg.
Még egyszer kattintva a kívánt nyelvre akkor már jól jelenik meg.
Mitől van ez a probléma? Hogyan lehetne elérni, hogy az első kattintásnál a megfelelő nyelv jelenjen meg a hozzá tartozó aldomain-el?
■ 4 nyelvválasztási lehetőség van: magyar, angol, német, spanyol
Mindegyik nyelvhez tartozik egy aldomain: pl angol -> angol.domain.hu stb...
.htaccesben be van állítva, hogy melyik mappából töltse be az adott nyelvnek megfelelően: nyelvvaltas/hu ....
Egy php fájlban swich elágazással meg van adva, hogy ha az angol nyelv van kiválasztva akkor irányítsa át a megfelelő aldomainra
case "en":
header("location: http://www.angol.domain.hu/fooldal");
exit;
break;
ez jól is működik: a kiválasztott nyelvnél átirányítja a megfelelő aldomainra, de nem a megfelelő nyelvet jeleníti meg.
Még egyszer kattintva a kívánt nyelvre akkor már jól jelenik meg.
Mitől van ez a probléma? Hogyan lehetne elérni, hogy az első kattintásnál a megfelelő nyelv jelenjen meg a hozzá tartozó aldomain-el?
Pontosan mi van a
RewriteRule
Ha jól értem, amikor nyelvet
A set_lang.php-ban megtörténik a nyelv tényleges beállítása a session-be, vagy csak az al-domainre átirányítás van benne, ahol az első oldalmegjelenítés után történik meg a nyelvbeállítás?
Kb így van, a
csak az a probléma, hogy ha kattintok az adott nyelvre, nem azon a nyelven jeleníti meg.
magyar, angol, német, spanyol ilyen sorrendben vannak és ha kiválasztom a németet, akkor nem az jelenik meg
itt a forrás
include_once($_SERVER['DOCUMENT_ROOT'].'/includes/site_config.inc.php');
if( isset( $_GET['lang'] )) {
$_SESSION['site_lang'] = $_GET['lang'];
}
switch ($_GET['lang']) {
case "hu":
header("location: http://www.domain.hu/fooldal");
exit;
break;
case "en":
header("location: http://www.angol.domain.hu/fooldal");
exit;
break;
case "de":
header("location: http://www.nemet.domain.hu/fooldal");
exit;
break;
case "es":
header("location: http://www.spanyol.domain.hu/fooldal");
exit;
break;
default:
header("location: http://www.domain.hu/fooldal");
}
A megjelenítés nyelve
Tehát, ha pl valaki az angol.domain.hu oldalt nézi, akkor neki a frontcontroller (pl index.php)állítsa be explicit az angol nyelvet a session-be, és akkor ki is hagyhatod a set_lang.php-t.
Kicsit leírnád ezt
Tehát, ha pl valaki az angol.domain.hu oldalt nézi, akkor neki a frontcontroller (pl index.php)állítsa be explicit az angol nyelvet a session-be, és akkor ki is hagyhatod a set_lang.php-t.
Köszönöm
Arról lenne szó, hogy nem a
Ezen logika mentén, ha a spanyol.domain.hu/fooldal linket nézi, akkor meg spanyolul.
Amikor meg valaki nyelvet akar váltani, akkor csak annyi dolgod van, hogy a másik nyelvnek megfelelő aldomain-re irányítod a usert.
Ezzel a megoldással nyugodtan elhagyhatod a SESSION-ben tárolt nyelvi beállítást, vagy csak arra érdemes használni, hogy a megfelelő aldomain-re átirányítsd.
Pl az aldomain szerinti nyelvi beállításra:
$aldomain = $domain_explode[0]; // az aldomaint kivalasztjuk a tombbol
switch($aldomain)
{
default:
case 'domain': // ez akkor lesz, ha valaki a www.domain.hu-t vagy a domain.hu-t nezi
$_SESSION['site_lang'] = 'hu';
break;
case 'angol':
$_SESSION['site_lang'] = 'en';
break;
case 'spanyol':
$_SESSION['site_lang'] = 'es';
break;
}
A lényeg igazából az lenne, hogy ne a SESSION-től függjön a megjelenítés nyelve, hanem az aldomaintől.
helyezzem el az index.php-ban
különben úgy gondoltam, hogy készítek egy másik session-t az index.php-ban és megvizsgálom, hogy mi az érteke, milyen nyelvet választott a felhasználó és még egyszer átirányítom a nyelvnek megfelelő domainra. Ez úgy működne mintha még egyszer kattintana (pont ez a probléma, ha kattint a nyelvre jó domainra irányítja, csak nem jó a hozzá tartozó tartalom és ha még egyszer kattintok akkor már igen), de a akkor már nem a felhasználó kattint.
Isten ments, hogy ezt a kódot
Persze valami hasonlót kell majd írnod, hogy megvalósítsd azt a követelményt, hogy az aldomainnek megfelelő nyelven jelenjen meg a tartalom. A lényeg az, hogy a követelmény az aldomaintől teszi függővé a nyelvet, ezért a kódban is érdemes ehhez igazodni, mert kevesebb hibalehetőséget rejt ez magában.
Kezelés
Egy saját fejlesztésű cms
session
Első körben beállítódik az éppen aktuális domainre, majd átirányítás után ugye nem látszik a session változó, majd ha újra kattintasz a nyelvváltásra, akkor már a jó domainre állítja be a változót.
Amennyiben a session változókat el akarod érni az összes aldomainen, akkor a cookie domain-t vagy az Apache-ban, vagy .htaccess-ben, vagy ini_set-tel be kell állítanod.
.htaccesben elhelyeztem az
sort is a forrásban.( ezt az ini_set-et nem ismerem, jó helyre raktam?)