ciao,
vorrei un consiglio su delle pagine multilingua.
in pratica quando accedo alla index del sito, lo script controlla il tipo di lingua impostata nel browser e passa atuomaticamente l'informazione alle sessioni che mi caricano le variabili a seconda della lingua. stessa cosa succede quando decido di modificare manualmente la lingua ( link dalle classiche bandierine ).
La cosa fastidiosa è che se accedo al sito attraverso pagine che non è l'index, oppure le sessioni sono scadute, mi escono per circa 2-3 secondi tutta una serie di warning perchè tutte le variabili per la lingua non sono settate, prima di essere rediretto all'index e quindi risettare il tutto.
domanda, è possibile evitare questo fastidioso inconveniente?
index:
Codice PHP:
<?php
$default = 'home.php?lingua=en&page=main';
$redirect = array( 'it' => 'home.php?lingua=it&page=main',
'fr' => 'home.php?lingua=fr&page=main',
'en' => 'home.php?lingua=en&page=main', );
// get the language string proposed by the browser if there is one
function lang_from_browser() {
$lang_list = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$lang_block = explode(',', $lang_list);
$lang_ar = array();
foreach ($lang_block as $t) {
array_push($lang_ar, strtolower(substr(trim($t), 0,2)));
}
return $lang_ar;
}
// redirect to the browser language if there is one
function redirect($lang){
global $redirect;
if(count($lang) > 0){
foreach($lang as $l){
if(array_key_exists($l,$redirect)){
header('Location: '.$redirect[$l]);
die();
}
}
}
return true;
}
## redirect ##
if(redirect(lang_from_browser())){
header('Location: '.$default);
die();
}
?>
mentre le sessioni:
Codice PHP:
<?php
// Avvia la sessione
session_start();
ini_set('arg_separator.output', '&');
// SETTAGGIO SESSIONI PER LA LINGUA
if(isSet($_GET['lingua'])){
$_SESSION['lingua'] = $_GET['lingua'];
}
$menu = "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_header.php";
$scheda = "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_scheda.php";
$varie = "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_varie.php";
$checkout = "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_checkout.php";
?>
grazie