• Configuration de l'affichage du site :
  • Affichage en pleine largeur
  • Affichage en basse résolution (800px)
  • Affichage en texte seul


Référencement :
conseils, outils, actualité, forum
tout ça gratuit !



Vous êtes ici : Analyses » Autres articles » Gestion des langues et des sessions


Gestion des langues et des sessions en PHP / MySQL

Imprimer cet article

Par Thibaud Elzière, Mai 2004

Sosie Star
Sosie-Star

Note de WebRankInfo : cet article décrit une méthode possible (adaptée aux sites de faible taille), il en existe bien entendu d'autres...

3- Gestion des langues

3.3 Changement de langue

Le changement de langue doit être possible de manière simple directement par le visiteur en cliquant sur un drapeau ou le nom de la langue par exemple. On a vu que le choix de la langue est piloté par la valeur de la variable $language. Il suffit donc de changer cette variable à un endroit donné dans le site pour que les pages du site soient dans la langue souhaitée jusqu'au prochain changement.

Ce changement de langue peut être effectué de plusieurs façons, en particulier ; par l'utilisation d'un formulaire qui renvoie la valeur de la variable $language dans un champs de type hidden ou par l'intermédiaire d'un lien qui renvoie le nom de la page suivi de la chaîne de variable $language=valeur. La première solution ne sera pas prise en compte par un moteur de recherche, nous nous intéresserons donc au passage de variable par l'URL.

On peut donc changer la langue en proposant sur une image du drapeau du pays un lien vers la page en cours et la valeur correspondant de la variable $language. Si nous sommes sur la page 23, le lien devra être du type page23-l1.html?language=2 soit en reprenant les fonctions utilisées, le lien sera de la forme page(23).?language=2.

Cette solution pose quelques problèmes, notamment le lien créé pourra ne pas être suivi pas tous les moteurs de recherche, nous allons donc utiliser une nouvelle fois la réécriture d'URL pour prendre en compte le changement de langue.
La solution sera d'introduire une variable L indiquant la valeur de la langue souhaitée.

Les liens permettant le changement de langue devront alors être de la forme page23-l1-L2.html pour changer vers la langue 2. Il suffira en fait d'inclure le paramètre -L suivi du numéro de la langue dans le nom de la page en cours et d'en faire un lien.

On modifiera le fichier .htaccess comme suit de manière à prendre en considération un possible changement de langue à n'importe quelle niveau du site.

Options +FollowSymlinks
RewriteEngine on

Rewrite ^(.*)-l([0-9]*)(.*)\.html$
 $1$3.php?language=$2 [QSA]

Rewrite ^(.*)-L([0-9]*)\.php$
 $1.php?language=$2 [L,QSA]

Par exemple, le fichier page23-l1-L2.html sera réécrit une première fois page23-L2.php?language=1 (1ère règle) puis page23.php?language=1&language=2 (2ème règle).

Pour ajouter ce nouveau paramètre à la page désirée, on va définir une nouvelle fonction. Ceci peut paraître lourd mais cette fonction sera très utilisée par la suite pour introduire de nouveaux paramètres à l'intérieur du nom du fichier plutôt que dans la chaîne de requête (query string).

function add_parameter($nid_page, $parameter)
{
  $old_link=page($nid_page) ; // On récupère 
  le lien envoyé par notre fonction page
  $tab_str=explode(".",$old_link) ; // On 
  scinde ce lien en deux parties séparées 
  par le point
  $new_link=$tab_str[0].$parameter.$tab_str[1] ; // 
  On reconstruit le lien en ajoutant le paramètre
  return $new_link ; // On renvoie le nouveau lien 
  reconstruit
}

Par exemple :

  • add_parameter(23, -L2) va retourner page23-l1-L2.html si $language=1
  • add_parameter(23, -L1) va retourner page23-l1-L1.html si $language=1

Pour changer de langue dans le site web, on va donc recourir à cette fonction pour créer les liens sur lesquels le visiteur devra cliquer pour opérer un changement de langue.

Exemple

Si vous souhaitez permettre un changement de langue quelle que soit la position du visiteur dans le site (c'est-à-dire quelle que soit la page active), il va falloir que vous proposiez sur chaque page (ou dans un fichier commun appelé sur chacune des pages), un lien vers la page active suivi des paramètres de changement de langue que l'on a précédemment introduits.

On va préalablement définir une fonction current_page qui à partir du nom de la page active renvoyé par PHP va renvoyer le numéro de la page dans notre table table_page.

function current_page()
{
  $base_page=basename($_SERVER["PHP_SELF"]) 
  ; // $base_page contient le nom du fichier
  $tab_str=explode(".",$base_page); // On 
  récupère la partie sans l'extension
  $name=$tab_str[0];
  $query="SELECT id FROM table_page WHERE name=$name";
  $result=mysql_query($query); // On recherche dans 
  la table MySQL table_page
  $line=mysql_fetch_object($result);
  return $line->id; // On retourne le numéro 
  de la page correspondant
}

La fonction current_page appliquée sur la page 23 va renvoyer 23.

On va maintenant créer comme exemple deux liens permettant de changer la langue sur la page en cours, ces lignes devront être rajoutées sur chaque page ou dans un fichier commun à toutes les pages.

$id_page=current_page() ; // On récupère 
le numéro de la page courante
$link1= add_parameter($id_page,-L1) ; // On crée 
le lien pour changer en langue 1
$link2= add_parameter($id_page,-L2); // On crée 
le lien pour changer en langue 2
$html_link1="<a href=$link1>Francais</a>"; 
// On passe en html
$html_link2="<a href=$link2>English</a>"; 
// On passe en html

Suite de l'article :

  1. Introduction
  2. Gestion des sessions
  3. Gestion des langues
  4. Page suivante Gestion d'autres paramètres
  5. Conclusion