8721 sujets

Développement web côté serveur, CMS

Bonjour je suis actuellement sur le code suivant : http://www.phpdebutant.org/article107.php
et http://www.phpdebutant.org/article106.php et j'aimerais savoir si vous avez quelque chose qui permetterai de l'ameliorer ou quelque chose je veux bien car je n'arrive pas a faire en sorte (avec le code cité si dessus) qu'il detecté la langue automatiquement donc si vous savais comment faire je suis prener
 <?php 
  	 
  	 if(isset($_COOKIE['lang'])) {
  	     $lang = $_COOKIE['lang'];
  	 } else {
  	     // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
  	     $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); 
  	 }
  	 
  	 //script d'origine
  	 if ($lang=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
  	     include('lang/fr-lang.php'); 
  	 } elseif ($lang=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
  	     include('lang/en-lang.php'); 
  	 } 
  	 //fin du script d'origine
  	 
  	 //définition de la durée du cookie (1 an)
  	 $expire = 365*24*3600; 
  	 
  	 //enregistrement du cookie au nom de lang
  	 setcookie('lang', $lang, time() + $expire); 
  	 
  	 ?>


 <?php
  	 
  	 if ($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
  	 include('lang/fr-lang.php');
  	 } 
  	 
  	 else if ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
  	 include('lang/en-lang.php');
 	 }
  	 
  	 else {                       // si aucune langue n'est déclarée on inclut le fichier fr-lang.php par défaut
  	 include('lang/fr-lang.php');
  	 }
  	 
  	 ?>


Je vous remercie de votre aide Smiley smile
Voici le bout de code que j'utilise pour cette choisir la langue préférée entre fr et en par l'utilisateur.

function getLanguage() {
  $langValues = array('en' => 0, 'fr' => 0);
      /* mettre la préférence à 0 sur les 2 langues */
  $langItems = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
      /* tableau des langues acceptées par le navigateur du client */
  foreach($langItems as $langItem) {
      /* analyser les valeurs de préférence         */
    list($lang, $val) = explode(';', $langItem . ';q=1');
    $lang = substr($lang, 0, 2);
    $value = floatval(preg_replace('#[^0-9\.]#', '', $val));
    if(isset($langValues[$lang])) $prevVal = $langValues[$lang];
    else $prevVal = 0;
    if($value > $prevVal) $langValues[$lang] = $value;
  }
  if($langValues['fr'] > $langValues['en']) return 'fr';
  return 'en';
}

C'est du code assez ancien, je ne l'écrirais sans doute plus de la même façon, mais ça marche.