par
Henri » 13 juin 2006, 15:04
Je rajouterais quelques points :
1) Pour les versions "modernes" de PHP, la valeur se trouve dans
$_SERVER['HTTP_ACCEPT_LANGUAGE'];
2) Même si cela ne se produit jamais et qu'il y a 99,99% de chances que cette variable soit toujours en minuscules, forcer les minuscules ne cause pas de perte de performances.
if (!isset($langue)) {
$langue=strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
}
3) La suite de tests if n'est pas très efficace. En effet, une fois qu'une valeur est trouvée, ce n'est pas la peine de continuer à tester.
Tu pourrais déjà mettre des if ... elseif ... else ...
Ou mieux, un switch case qui permettrait par exemple de gérer une langue par défaut (que ce passe t'il avec tes if si la langue que tu récupères est brésilien ou croate ?)
switch ($langue) {
case 'fr':
header ("Location: http://www.monsite.ch/pro/3000/fr/");
break;
case 'de':
header ("Location: http://www.monsite.ch/pro/3000/de/");
break;
default:
header ("Location: http://www.monsite.ch/pro/3000/en/");
break;
}
ou encore envoyer l'internaute vers une page qui lui permette de choisir la langue si elle n'est pas reconnue automatiquement.
switch ($langue) {
case 'fr':
case 'de':
case 'en':
header ("Location: http://www.monsite.ch/pro/3000/".$langue."/");
break;
default:
header ("Location: http://www.monsite.ch/pro/3000/choixlangue.php");
break;
}