Bonjour à tous,

je viens de terminer un site multi-langues. j'utilise une fonction pour parser la variable $_SERVER["HTTP_ACCEPT_LANGUAGE"] qui me renvoie la langue de l'utilisateur. Tout fonctionne très bien avec toutes les langues et sur tous les navigateurs. Sauf que au niveau des crawlers (robots) tel que google, cette fonction me renvoie un tableau vide. Du coup, mes pages référencées sont en erreur.

Je ne connais pas bien les techniques de crawling employées par les moteurs de recherche... Quelqu'un pour une solution?

Voici la fonction que j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function get_pref_language_array($str_http_languages)
	{
  	$langs = explode(',',$str_http_languages);
  	$qcandidat = 0;
  	$nblang = count($langs);

  	for ($i=0; $i<$nblang; $i++)
  		{
    	for ($j=0; $j<count($langs); $j++) 
			{
      		$lang = trim($langs[$j]); // Supprime les espaces avant et après $lang
      		// Lang est de la forme langue;q=valeur
      
      		if (!strstr($lang, ';') && $qcandidat != 1) 
			  	{
  			    // Si la chaine ne contient pas de valeur de préférence q
        		$candidat = $lang;
        		$qcandidat = 1;
        		$indicecandidat = $j;
      			}
      		else 
			  	{
        		// On récupère l'indice q
        		$q = ereg_replace('.*;q=(.*)', '\\1', $lang);

        		if ($q > $qcandidat) 
					{
			        $candidat = ereg_replace('(.*);.*', '\\1', $lang); ;
          			$qcandidat = $q;
          			$indicecandidat = $j;     
        			}
      			}
    		}
    
    	$resultat[$i] = $candidat;

    	$qcandidat=0;
    	// On supprime la valeur du tableau
    	unset($langs[$indicecandidat]);   
    	$langs = array_values($langs);
  		}
  	return $resultat;
	}
Et voici mon appel de fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$lang = get_pref_language_array($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
$_SESSION["lang_user"]=strtolower(substr($lang[0],0,2));
Merci de votre aide.

Et Joyeuses fêtes à tous