php session
Hello
Egy sessionban($_SESSION['site_lang']) tárolva vannak az oldal nyelvválasztásához szükséges értékek: hu, en, de, es.
Ezeket egy set_lang.php a kiválasztott nyelvet a nyelvhez tartozó aldomainre irányítja át
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;
}
Akármelyik nyelvet választom csak az angol tartalmat jeleníti meg. Az átirányítás megtörténik, de mindenhol az angol tartalommal.
Egyedi fejlesztésű cms
Mi okozhatja ezt?
■ Egy sessionban($_SESSION['site_lang']) tárolva vannak az oldal nyelvválasztásához szükséges értékek: hu, en, de, es.
Ezeket egy set_lang.php a kiválasztott nyelvet a nyelvhez tartozó aldomainre irányítja át
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;
}
Akármelyik nyelvet választom csak az angol tartalmat jeleníti meg. Az átirányítás megtörténik, de mindenhol az angol tartalommal.
Egyedi fejlesztésű cms
Mi okozhatja ezt?
Előző téma
Hogyan lehetne ezt megoldani?
setcookie ( "lang" , "hu" , 0
setcookie funkció leírása a dokumentációban példákkal.
sajnos nem működik a
a megfelelő domainre átirányítja, de csak az angol nyelvhez tartozó szöveg jelenik meg bármelyik nyelv kiválasztása esetén
Több domain esetén
Az iménti sor elvégzi, hogy a domain.hu összes aldomainjére beállítja az adott cookiet, rendben.
Viszont volna egy olyan kérdésem, hogy miként oldható ez meg ha egy adott szerverre, ip-re etc... nem egy hanem egy rakat domain mutat ami bővül is, ott miként lehet beállítani, hogy az összes domainhez beállítsak egy cookiet nem csak az aldomainekhez?
Megtisztelő válaszotok előre is köszönöm.
egyszerűbb
de egyébként ha annyira subdomainezni akarsz, vagy nem akarsz de muszáj, akkor szerintem ne sessionben tárold el a nyelvet, hanem inkább sütiben, és akkor be tudod állitani a sütinek ügye hogy melyik domainre vonatkozzon melyik könyvtárra és hasonlo finomságok. Br szerintem az igazi megoldás, az továbbra is a külön fileban tárolt feliratok kombinálva a sütivel, aminek megvan továbbá az az előnye, hogy nem kell a felhasználónak minden egyes alkalommal kiválasztania a nyelvet, hanem azon a nyelven jelenik meg legközelebb az oldal amin legutoljára használta. :)
Remélem tudtam segíteni, ha esetleg szükséges van példakódra, vagy bármire, akkor a neogee##kukac##freemail.hu cimen megtalálsz :)
Nem jó
nem fog
De javíts ki ha tévedek, és szívesen veszem az egyéb megoldási javaslatokat is. Subdomain beállítására sajnos egyébként nincsen lehetőség. az urlhez fűzött nyelvi beállítás pedig számomra nem igazán szimpatikus, meg szerintem bonyolultabb a kivitelezés is :)
Megoldas
A gugli altal ajanlott modszer ha tetszik, ha nem a nyelv URLbe kodolasa.
igazad van
Ellenben, engem nagyon érdekelne szerinted hogyan kellene megvalósitani, mert olyan nagyon sok többnyelvű rendszert még én sem írtam... :) És szívesebben tanulok adott esetben egy tapasztaltabbtól :) Nyitott vagyok az újabb elgondolásokra... igazából én az asztali alkalmazásoknál használt megoldást próbáltam átültetni web alapokra... :)
Példa
A sütivel való kivitelezés
A legnagyobb probléma az, hogy most lacalhoston nem működik a kiválasztott nyelvhez tartozó tartalom megjelenítése, ami eddig ment. A másik, hogy az admin felületre sem enged be, adatbázisban viszont naplózza, hogy beléptem, pedig nem.
get vagy session?
Így néz ki a set_lang.php
if( isset( $_GET['lang'] )) {
$_SESSION['site_lang'] = $_GET['lang'];
}
if (isset($_SESSION['nyelv']) && $_SESSION['nyelv']!=''){
switch ($_SESSION['nyelv']) {
case "hu":
header("Location: http://www.domain.hu/fooldal");
unset($_SESSION['nyelv']);
exit;
break;
case "en":
header("Location: http://www.angol.domain.hu/fooldal");
unset($_SESSION['nyelv']);
exit;
break;
case "de":
header("Location: http://www.nemet.domain.hu/fooldal");
unset($_SESSION['nyelv']);
exit;
break;
case "es":
header("Location: http://www.spanyol.domain.hu/fooldal");
unset($_SESSION['nyelv']);
exit;
break;
}
}
switch ($_GET['lang']) {
case "hu":
$_SESSION['nyelv']='hu';
header("Location: http://www.domain.hu/fooldal");
exit;
break;
case "en":
$_SESSION['nyelv']='en';
header("Location: http://www.angol.domain.hu/fooldal");
exit;
break;
case "de":
$_SESSION['nyelv']='de';
header("Location: http://www.nemet.domain.hu/fooldal");
exit;
break;
case "es":
$_SESSION['nyelv']='es';
header("Location: http://www.spanyol.domain.hu/fooldal");
exit;
break;
default:
header("Location: http://www.domain.hu/fooldal");
}
Külön URL-ek
Pl.: www.domain.hu/hasznos-linkek és www.domain.hu/useful-links
A nyelvet adatbázisban tárolom el az adott tartalomhoz. Ha olyan URL-t kér le valaki, ami magyar, akkor a magyar menüt kapja (vagyis a magyar tartalmakat szűröm le, és rendezem menübe), ha angolt, akkor az angolt, és így tovább. A nyelvváltás pedig egyszerűen egy link a másik nyelvű kezdőlapra.
Az adatbázisban egy kapcsolómezőben össze lehet rendelni az azonos, csak különböző nyelvű tartalmakat, így - ha létezik az adott tartalom a kért nyelven - akkor lehet közvetlenül arra is váltani.
Nem kell se session, se cookie, Google is eltehet mindent külön címen.
hasonló
Ellenben ez az url-es saját nyelves dolog ez hasznos lehet. :) Bár én személy szerint nem kifejezetten tartom fontosnak hogy a felhasználó tisztában legyen azzal hogy mi van az urlben... :)
Azt azért kifejthetnéd nekem, ha nem titok, hogy hogyan végzed mondjuk a domain.hu/hasznos-linkek urlből a nyelv kiszűrését... :) ez érdekelne, mert én valahogy ugy tudom elképzzelni a dolgot, hogy valamiféle változóban tárolod hogy melyik linkhez melyik nyelv tartozik, kár egy tömbben akár objektumban, bármiben, és az alapján hajtod végre a lekérdezést. Ez viszont szerintem nem túl rugalmas megoldás ha valóban igy van, én jobbszeretem a teljesen autómatizált dolgokat... :) fogja az alkalmazás megpróbálja megkeresni a nyelvi filet, ha találja akkor beszippantja a tartalmat és megjelenit mindent a megfelelő helyen, ha pedig nem találja akkor a default nyelvi file töltődik be. :) és nem kell flagelni a dolgokat, hanem teljesen önállóan tudja mit kell tennie:) továbbá a lekérdezés összeállítása is kifejezetten egyszerü, hiszen csak annyit mondok hogy:
SELECT * FROM $lang_table stb stb
Tulajdonképpen a konfigurációs fileom dönti el, hogy a usernl beállitott nyelv definiálva van e az oldal számára egyáltalán vagy sem, továbbá azt is, hogy választott-e már a felhasználó nyelvet. Ha még nem választott vagy nem értelmezett az oldal esetében süti aktuális értéke - mondjuk az van benne hogy kis-pista, ilyen nyelv ugye nincsen... - akkor autómatikusan beállitódik a SITELANG konstans értéke a config.ini ben definiált alapértelmezett nyelvi értékre. :) Ezzel megelőztem azt is hogy bele tudjanak piszkálni és bármilyen nem odaillő dolgot megegyen a sütiből az alkalmazás, illetve a google problémája is megoldodott :)
így?
miért session?
Tegyük fel, hogy González úr, aki egyébként először jár az oldalon, kiválasztja a spanyol nyelvet, mivel ő csak ezt érti. De közben el kell mennie ebédszünetre, ezért bezárja a böngészőjét. Miközben eszi a húslevest, azon gondolkodik, hogy még nem tudott mindent elolvasni az oldaladon, ezért úgy dönt, amint visszaér a menzáról, rögtön visszalátogat az oldaladra. De amikor González úr újra beírja a weboldalad címét a böngészőjébe, értelenkedik, mert újra ki kell választania a spanyol nyelvet, hiszen a SESSION már nem érvényes.
Ha azonban cookie-t használtál volna, mondjuk 1 év érvényességel, nem hiszem, hogy a közeljövőben lesz ilyen jellegű problémája a felhasználónak. Hacsak nem vált át másik böngészőre, vagy nem törli a cookie-kat.
igen
Egyébként én is ezzel a mwegoldással értek egyet, mert nagyon sok helyen minden böngészés alkalmával ki kell választani a nyelvet.. és engem is bosszant sokszor :S
mekkora az esélye?
Egyébként az automatikus nyelv kiválasztása php-vel lehet egy jó megoldás:
http://www.tutorial.hu/automatikus-es-manualis-nyelvvalasztas/
kicsi