8711 sujets

Développement web côté serveur, CMS

Bonjour
Je me lance aujourd'hui dans la création d'un système multi-langage pour mon site.
Pour cela j'ai donc créé mes deux fichiers langages puis créé mon switch que voici ci-dessous :


<?php 

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


Pour faire appelle au fichier j'ai crée ces simples liens
<p><a href="index.php?lang=en">English</a><a href="index.php?lang=fr">Français</a></p>


Quand je suis sur la page d'accueil et que je clic sur "english" la traduction ce fais bien mais si je clic sur un autre lien de mon site je repasse automatiquement en français alors que je devrais rester en anglais !

Comment remédier à ce problème ?

Merci
Modifié par stephane72 (09 Jun 2014 - 11:06)
Tu tests uniquement le GET donc une fois qu'il change de lien, il n'y a plus le GET et donc il passe sur ta langue défaut le FR.
En gros, tu as crée une variable de session de la langue mais tu ne l'utilises pas dans ton code alors que tu devrais la vérifier pour savoir le choix fait par l'internaute.