Bonjour,
Je ne suis pas expert et souhaite de l'aide sur la mise en place en php du changement de langue pour mon site web.
Après avoir parcouru le net a la recherche de code, j'ai trouvé ce que je souhaite mais n'ai pas la connaissance face à un problème que je vais exposé et vous demande de bien vouloir me corriger.
Nous avons 5 pages une index.php, forum.php, en_lang.php, fr_lang.php et lang.php
Mon problème est le suivant : 2 fichier lang différent sont posté
1 est capable de détecté la langue du navigateur afin d'affiché la page dans la langue du navigateur concerné mais impossible de choisir la langue si l'on veut changer par la suite
L'autre est en mesure de swiché correctement la langue et les liens tout en restant dans la langue défini par la suite mais affiche un message de langue non défini lors de changement de page.
Mon problème est le suivant ?
Je souhaite pouvoir définir la langue sur chaque entré de page et de pouvoir la modifier tout en restant sur la même langue pendant la navigation sans ce message d'erreur de code
Fonctionnel par cookies sur le deuxième fichier lang mais avec donc ce message d'erreur que je n'arrive pas a comprendre.
je ne suis pas informaticien et apprend par mes propres moyen merci de votre aide.
----------------------------------------------------------------------------------------
INDEX
----------------------------------------------------------------------------------------
Code html : 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 <?php require("lang.php");?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Document sans titre</title> </head> <body> <a href="?langue=fr" >FR</a> | <a href="?langue=en" >EN</a> <a href="forum.php">forum</a> <h1><?php echo TXT_TITRE_INDEX; ?></h1> <p><?php echo TXT_SLOGAN_INDEX; ?></p> </body> </html>
FORUM
----------------------------------------------------------------------------------------
Code html : 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 <?php require("lang.php");?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Document sans titre</title> </head> <body> <a href="?langue=fr" >FR</a> | <a href="?langue=en" >EN</a> <a href="index.php">index</a> <h1><?php echo TXT_TITRE_FORUM; ?></h1> <p><?php echo TXT_SLOGAN_FORUM; ?></p> </body> </html>
FR_LANG
----------------------------------------------------------------------------------------
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 <?php //Début index.php (français) define('TXT_TITRE_INDEX', "Bienvenue "); define('TXT_SLOGAN_INDEX', "LE CONCEPT"); //Fin index.php (français) //Début forum.php (français) define('TXT_TITRE_FORUM', 'Forums'); define('TXT_SLOGAN_FORUM', 'Une question ? Posez-la sur le forum :)'); //Fin forum.php (français) ?>
EN_LANG
----------------------------------------------------------------------------------------
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 <?php //Début index.php (français) define('TXT_TITRE_INDEX', "Welcome"); define('TXT_SLOGAN_INDEX', "THE CONCEPT"); //Fin index.php (français) //Début forum.php (français) define('TXT_TITRE_FORUM', 'Forums'); define('TXT_SLOGAN_FORUM', 'Get a question ? Post it on the forum :)'); //Fin forum.php (français) ?>
LANG (pour détection de langue navigateur)
----------------------------------------------------------------------------------------
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 <?php //On vérifie si le cookie existe déjà if(isset($_COOKIE['langue'])) { //Si oui, on créer une variable $lang avec pour valeur celle du cookie. $langue = $_COOKIE['langue']; } else { // si le cookie n'existe pas on tente de reconnaitre la langue par défaut du navigateur utilisé $langue = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); } //On définit la durée du cookie (avant son expiration) $expire = 365*24*3600; //Puis on créé le cookie setcookie("langue", $langue, time() + $expire); switch($langue) { //Si lang=fr on inclut le fichier de langue française case 'fr': include('fr-lang.php'); break; //Si lang=en on inclut le fichier de langue anglaise case 'en': include('en-lang.php'); break; } ?>
LANG (permettant l'enregistrement des cookies pour poursuivre dans la même langue)
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
45
46
47 <?php // si langue déclarée par cookie et qu'il ny a pas de requete // pour le choix de la langue alors on choisit le cookie if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en') { $langue = $_COOKIE['CHOIXlang']; } // le choix de la langue est déclaré par url else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr') { $langue = $_GET['langue']; set_cookie($langue); } // si aucune langue n'est déclarée on tente de reconnaitre // la langue par défaut du navigateur else { $langue = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); set_cookie($langue); } function set_cookie($langue) { //définition de la durée du cookie (1 an) $expire = 365*24*3600; //enregistrement du cookie au nom de CHOIXlang + détection si erreur if (setcookie("CHOIXlang", $langue, time() + $expire) != TRUE) { // echo 'Le cookie na pas marché<br />'; } else { setcookie("CHOIXlang", $langue, time() + $expire); // echo 'Le cookie a marché<br />'; } } ?> <?php // affichage de la bonne langue // si le cookie vaut 'fr' ou si la requete vaut 'fr', // on inclut le fichier fr-lang.php if ($_GET['langue'] == "fr" || $langue == "fr") { include('fr-lang.php'); } // affichage de la bonne langue // si le cookie vaut 'en' ou si la requete vaut 'en', // on inclut le fichier fr-lang.php elseif ($_GET['langue'] == "en" || $langue == "en") { include('en-lang.php'); } ?> <?php $GETlangue = isset($_GET['langue']) ? $_GET['langue']:''; if (isset ($_COOKIE['CHOIXlang']) && $GETlangue != 'fr' && $GETlangue != 'en') { $langue = $_COOKIE['CHOIXlang']; } else if ($GETlangue == 'en' || $GETlangue == 'fr') { $langue = $GETlangue; set_cookie($langue); } else { $langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); $langue = strtolower(substr(chop($langue[0]),0,2)); set_cookie($langue); } ?>
Partager