2010-02-27 6 views
1

je changer de langue à l'aide de tableaux de php qui rend l'apparence d'URL comme ceci:PHP Redirect par navigateur La langue ne fonctionne pas!

http://alexchen.zxq.net/index.php?lang=es 

J'ai ajouté $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; dans mon dossier « contrôleur » dans les sections par défaut, et je choisis une autre langue dans l'option langues préférées (Mozilla Firefox) , mais cela n'a pas fonctionné.

common.php:

<?php 
session_start(); 
header('Cache-control: private'); // IE 6 FIX 

if(isSet($_GET['lang'])) { 
$lang = $_GET['lang']; 

// register the session and set the cookie 
$_SESSION['lang'] = $lang; 

setcookie("lang", $lang, time() + (3600 * 24 * 30)); 
} 
else if(isSet($_SESSION['lang'])) { 
$lang = $_SESSION['lang']; 
} 
else if(isSet($_COOKIE['lang'])) { 
$lang = $_COOKIE['lang']; 
} 
else { 
//$lang = 'en'; <-this was previous code 
     //I tried this: 
     $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; 
} 

// use appropiate lang.xx.php file according to the value of the $lang 
switch ($lang) { 
case 'en': 
$lang_file = 'lang.en.php'; 
break; 

case 'es': 
$lang_file = 'lang.es.php'; 
break; 

case 'tw': 
$lang_file = 'lang.tw.php'; 
break; 

case 'cn': 
$lang_file = 'lang.cn.php'; 
break; 

default: 
//$lang_file = 'lang.en.php'; <-this was before 
     //I also tried this: 
     $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; 
} 

//translation helper function 
function l($translation) { 
global $lang; 
return $lang[$translation]; 
} 

include_once 'languages/'.$lang_file; 
?> 

Toutes les suggestions?

Répondre

2

$_SERVER['HTTP_ACCEPT_LANGUAGE'] est plus complexe qu'un simple code ISO à 2 lettres. Découvrez this question pour une bonne réponse sur la façon d'analyser HTTP_ACCEPT_LANGUAGE en PHP.