Ocaeph Posté(e) le 9 mars 2006 Partager Posté(e) le 9 mars 2006 Bonjour à tous Je souhaites faire de mon site un site multi-lingues avec une gestion de cookie, avec le code suivant j'arrive a gerer les 2 langues: <?php if(isset($HTTP_COOKIE_VARS['lang'])) { $lang = $HTTP_COOKIE_VARS['lang']; } else { $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); } if ($lang=='fr') { include('fr/fr-lang.php'); } elseif ($lang=='en') { include('en/en-lang.php'); } $expire = 365*24*3600; setcookie("lang", $lang, time() + $expire); ?> Maintenant je veux rajouter 2 petits drapeaux un FR/ un EN que l'utilisateur peut cliquer pour que sa change de langue et que le cookie sauvegarde son choix. Pour l'instant mon code ressemble à ca: <?php if( isset($HTTP_GET_VARS['lang'])) { $lang = $HTTP_GET_VARS['lang']; } else { if(isset($HTTP_COOKIE_VARS['lang'])) { $lang = $HTTP_COOKIE_VARS['lang']; } else { $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); } } if ($lang=='fr') { include('fr/fr-lang.php'); } elseif ($lang=='en') { include('en/en-lang.php'); } $expire = 365*24*3600; setcookie("lang", $lang, time() + $expire); ?> </head> <body> <div> <a href ="index.php?$lang=='fr'"><img src="Image/fra.gif"></a> <a href ="index.php?$lang=='en'"><img src="Image/eng.gif"></a> </div> Malheuresement ca ne marche pas, mais ca fait pas d'erreur c'est déja ca Si quelqu'un peut m'aider à me sortir de ce labyrinthe ce serait cool Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 9 mars 2006 Partager Posté(e) le 9 mars 2006 A cause de tes urls je dirais :) a href ="index.php?$lang=='fr'"><img src="Image/fra.gif"></a> <a href ="index.php?$lang=='en'"><img src="Image/eng.gif"></a> c'est pas "$lang==" mais lang= ce qui n'est pas pareil. $HTTP_GET_VARS['lang'] Si tu es en php4.3, utilise $_GET. Et si tu ne l'as pas, utilise ça $_GET = &$HTTP_GET_VARS; ça t'éviteras des problèmes dans le futur (register_long_arrays à off) Dernière chose : le accept language c'est différent de ce que tu fais. Normalement ce sont les préférences de l'utilisateur. Si j'ai : de-DE,fr-FR;q=0.5,en-EN;q=0.6 Tu dois logiquement me donner le français parce que tu ne supporte pas l'allemand, mais parmi les candidats potentiels l'anglais m'intéresse plus. Ca fonctionne ainsi (si je ne me trompe pas (une chance sur 3), à savoir donc Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ocaeph Posté(e) le 9 mars 2006 Auteur Partager Posté(e) le 9 mars 2006 Je me doutais que c'était un truc trop simple Ca y est ca marche maintenant j'ai des erreures en fait il cherche mes variables dans la page où est le code (ici index.php) et non pas en-lang.php que je lui indique avec include Ce que je veux faire c'est: regarder s'il y a deja un cookie regarder la langue du navigateur regarder si l'utilisateur a selectionner une langue le code en cours: <?php if(isset($HTTP_COOKIE_VARS['lang'])) { $lang = $HTTP_COOKIE_VARS['lang']; } else { $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); } if( isset($GET['lang'])) { $lang = $GET['lang']; } if ($lang=='fr') { include('fr/fr-lang.php'); } elseif ($lang=='en') { include('en/en-lang.php'); } $expire = 365*24*3600; setcookie("lang", $lang, time() + $expire); ?> En tout cas merci de ton aide Edit: J'ai trouver, meme erreur il faut: if ($lang='fr') { au lieu de if ($lang=='fr') { Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 9 mars 2006 Partager Posté(e) le 9 mars 2006 Honnêtement, abandonne les HTTP_x_VARS :) remplaces les par $_x ($_COOKIE, $_GET, $_POST) Au moins ton script tournera ailleurs que sur les vieilles versions (et au pire, ces nouveautés peuvent facilement se faire dans les anciennes conf, modulo la "super globalité") Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ocaeph Posté(e) le 9 mars 2006 Auteur Partager Posté(e) le 9 mars 2006 Ca y est j'ai enlever les HTTP_x_VARS. Par contre petit problème, il ne voit que le premier include, donc ca affiche que dans une langue, je comprends pas pourquoi <?php $expire = 365*24*3600; if ( isset($_GET['lang'])) { $lang = $_GET['lang']; setcookie("lang", $lang, time() + $expire); } elseif(isset($_COOKIE['lang'])) { $lang = $_COOKIE['lang']; } else { $lang = substr($_SERVER['_ACCEPT'],0,2); } if ($lang='fr') { include('fr/fr-lang.php'); } elseif ($lang='en') { include('en/en-lang.php'); } ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 9 mars 2006 Partager Posté(e) le 9 mars 2006 if ($lang='fr') { include('fr/fr-lang.php'); } elseif ($lang='en') { include('en/en-lang.php'); } Deux choses : 1. $lang == 'fr' (oui l'opérateur d'égalité, c'est pas '=' qui est l'opérateur d'affectation). Pareil pour en dessous ($lang == 'en') 2. include c'est instruction : inutile de parenthèser ! include 'en/en-lang.php'; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ocaeph Posté(e) le 9 mars 2006 Auteur Partager Posté(e) le 9 mars 2006 Ok j'ai fait les modifs mais il va chercher mes variables dans la page que je suis en train de modifier et non celle où j'ai mis mes variable avec include ... Notice: Use of undefined constant slogan - assumed 'slogan' in c:\program files\easyphp1-7\www\tempv2\index.php on line 220slogan alors qu'il devrait allez les chercher dans c:\program files\easyphp1-7\www\tempv2\fr\fr-lang.php Edit: Ca fait la meme erreur sur toutes les pages alors qu'elles marchaient avant, ce serais pas easyphp qui deconne? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 9 mars 2006 Partager Posté(e) le 9 mars 2006 Notice: Use of undefined constant slogan - assumed 'slogan' in c:\program files\easyphp1-7\www\tempv2\index.php on line 220 Tu y fais quoi? Et tu déclare comment slogan? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ocaeph Posté(e) le 9 mars 2006 Auteur Partager Posté(e) le 9 mars 2006 Ca fait le meme probleme pour toutes mes variables en faites je stocke la variable dans un autre fichier où il y a tous le texte et je l'appel dans ma page par <?php echo slogan;?> Mais je pense avoir trouver le problème lorsque je suis sur mes autres pages la valeur du cookie créés est: en ou fr (suivant le cas) sauf que pour la page où j'insère les drapeaux la valeur du cookie est: %27fr%27 lorsque je cliques sur une des images Ca doit etre dans cette ligne là qu'il manque quelquechose ou qu'il y a un truc en trop: <a href ="index.php?$lang='fr'"><img src="Image/fra.gif"> </a> EDIT: Le ' était en trop ca donne donc: <a href ="index.php?$lang=fr"><img src="Image/fra.gif"> Ca y est ca marche à la perfection Un grand merci pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 9 mars 2006 Partager Posté(e) le 9 mars 2006 Alors ce ne sont pas des variables mas des constantes tout cela:) (variables == truc avec $) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.