Bonjour,
j'ai un site web en 3 langues (anglais, allemand, francais).
J'ai fait la traduction par des tableaux de variables. C'est-à-dire que j'ai ce genre de fichiers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 translation.php : $LHome = array("Home","Home","Accueil") ; $LSitemap = array("Sitemap","Sitemap","Plan du site") ; $LContact = array("Contact","Kontakt","Contact") ; $LAboutUs = array("About us","Impressum","Qui sommes-nous ?") ; $LLanguage = substr( $HTTP_ACCEPT_LANGUAGE, 0, 2) ; $Ll = 0 ; // anglais par defaut if ($LLanguage == 'en' ) { $Ll = 0 ; } elseif ($LLanguage == 'de' ) { $Ll = 1 ; } elseif ($LLanguage == 'fr' ) { $Ll = 2 ; }
Ainsi, la langue du site se calque sur la configuration du navigateur. Cependant, j'aurai aimé qu'un-e utilisateur-trice puisse choisir aussi une autre langue que celle de son navigateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 header.php include("translation.php") <a href=...> <? echo $LHome[$Ll] ?> </a> - <a href=...> <? echo $LSitemap[$Ll] ?> </a> - <a href=...> <? echo $LContact[$Ll] ?> </a> - etc.
J'ai donc changé le translation.php en :
et j'ai ajouté dans le header.php des petits drapeaux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $LLanguage = substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2) ; if ($_REQUEST['lang'] == '') { if ($LLanguage == 'en' ) { $Ll = 0 ; } elseif ($LLanguage == 'de' ) { $Ll = 1 ; } elseif ($LLanguage == 'fr' ) { $Ll = 2 ; } } else { $Ll = $_REQUEST['lang'] ; }
Si je suis sur la page index.php, cela fait donc trois petits gif en drapeaux qui donnent les liens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $toutesleslangues = array('en','de','fr') ; // meme numerotation que dans translation.php for ($i=0 ; $i < count($toutesleslangues) ; $i++) { echo '<a href="'.substr($_SERVER["REQUEST_URI"],1).'?lang='.$i.'" title="'.$toutesleslangues[$i].'"><img src="bilder/'.$toutesleslangues[$i].'.gif" alt="$toutesleslangues[$i]" width="18" height="13" border="0"</a> ' ; }
Si mon navigateur est en francais, que je clique sur le drapeau allemand, ca me met bien le texte en allemand.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 index.php?lang=0 index.php?lang=1 index.php?lang=2
Le problème est que ca ne garde pas en mémoire cette variable, ca veut dire que la page index.php contiendra des liens du type sitemap.php et non sitemap.php?lang=1 et me remettra la page dans la langue initiale.
Une "solution" serait la suivante : si l'adresse précédente contient lang=x alors $LienLangue = "?lang=x", sinon $LienLangue = "", et réécrire chaque lien -lelien.php<? echo $LienLangue ?>
Mais ce n'est pas envisageable de le faire en dur car il y a trop de liens et que beaucoup sont créés dynamiquement.
Que me proposez-vous comme alternative ? Y'a-t-il un moyen de réécrire simplement tous les liens INTERNES avec "?lang=x" sans passer par les cookies ou les sessions ?
Merci
Partager