Buongiorno... io uso questo codice per gestire un sito bilingue (ita/eng):
Questi link sono su tutte le pagine:
Codice PHP:
[url="?lang=ita"]Italiano[/url] | [url="?lang=eng"]English[/url]
Così come in tutte le pagine è presente questo codice:
Codice PHP:
if (isset($_COOKIE["lang"])) {
$language = $_COOKIE["lang"];
} else {
$language = "ita";
}
if (isset($_GET['lang'])) {
if ($_GET['lang'] == 'eng') {
setcookie ("lang", "eng", 0, "/");
} elseif ($_GET['lang'] == 'ita') {
setcookie ("lang", "ita", 0, "/");
}
$language = $_GET['lang'];
}
Nelle singole pagine, effettuo controlli di questo tipo:
Codice PHP:
if (isset($_COOKIE["lang"])) {
$language = $_COOKIE["lang"];
} else {
$language = 'ita';
}
if ($language == 'ita') {
fai questo
} else {
fai quest'altro
}
Ora, il codice funziona, ma cosa succede? Che il cookie non è "attivo" fino al successivo caricamento della pagina. Cliccando su ENGLISH mentre sono sull'italiano, quindi, cambia il cookie, ma la lingua della pagina rimane la stessa fino a che non ricarico o cambio pagina.
Per sopperire avevo pensato ad usare questo codice (uguale a prima, con le tre righe in più segnate dall'asterisco:
Codice PHP:
*$site = $_SERVER['PHP_SELF'];
if (isset($_COOKIE["lang"])) {
$language = $_COOKIE["lang"];
} else {
$language = "ita";
}
if (isset($_GET['lang'])) {
if ($_GET['lang'] == 'eng') {
setcookie ("lang", "eng", 0, "/");
*header("Location: $site");
} elseif ($_GET['lang'] == 'ita') {
setcookie ("lang", "ita", 0, "/");
*header("Location: $site");
}
$language = $_GET['lang'];
}
che mi permette di vedere immediatamente il cambio di lingua, dato che la pagina viene ricaricata via chiamata header.
Il problema è qui: dato che sono in un ambiente CakePHP, la pagina che viene ricaricata è una generica index e non la view esatta su cui sto lavorando.
Per farla breve: se io ho 3 pagine A, B e C e sono sulla pagina C in italiano, cliccando su inglese il sito switcha correttamente all'inglese, ma torna alla pagina A.
Non ho trovato nulla che possa veramente aiutarmi, avete qualche consiglio?
Come risolvereste voi il problema?
Grazie ragazzi