Problème de Cookie pour site multilingue

Fermé
mika2413 Messages postés 19 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 5 octobre 2011 - 29 mai 2011 à 23:26
 keyral - 10 nov. 2011 à 03:51
Bonsoir,

je suis entrain de créer un site internet qui doit être traduit dans plusieurs langues.
Je suis donc entrain (d'essayer) de mettre en place un système pour pouvoir switcher de langue avec un système "drapeau" sur ma page index, et lorsque l'utilisateur choisira par exemple le drapeau anglais (ci-dessous remplacé par "site en anglais"), le clic permettra d'enregistrer un cookie avec le paramètre de langue 'en' et ce paramètre sera récupéré de page en page grâce à une url de type
http://monsite.com/mapage?lang=en.

Jusque là pas de problème, j'ai stocké mon contenu de page dans une base de donnée pour faciliter la gestion de mon site.
Mais je me heurte à un souci au niveau du cookie:
Par exemple, je suis sur ma page "index.php?lang=fr" et je clique pour aller sur la même page avec le contenu en anglais, donc mon lien drapeau renvoi sur la même page mais avec des conditions et paramètres pour la langue anglaise lien du clic >>> "index.php?lang=en".

Et lorsque je suis sur cette page, impossible de faire suivre mon cookie: en effet si je vais sur par exemple une autre page appelée page 1, les paramètres définis restent ceux définis par le premier cookie, soit une langue française, et pour que mon cookie soit actualisé (qu'il retienne la langue 'en'), il faut rafraichir la page. Il doit y avoir une solution , et mon code, très imparfait, doit cacher une erreur que je n'ai pas forcément vu, étant débutant en php.

Je m'en remet à vous, voici mon code de ma page index que je vous ai commenté:


<?php

//accès à ma base de donnée & récupération des informations de la page + paramètres url

try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=****', 'root', '', $pdo_options);
    
    $req = $bdd->prepare('SELECT * FROM pages WHERE numero_page = ? AND page_lang = ? ');
    $req->execute(array($_GET['num'], $_GET['lang']));
    
    echo '<ul>';
    while ($donnees = $req->fetch())
    {
        echo '<li>' . $donnees['page_titre'] . ' (' . $donnees['page_description'] . ' )</li>';
    }
    echo '</ul>';

//Conditions pour les paramètres et pour créer les cookies en fonction de la langue de l'url
	
	 if (isset($_GET['lang']) AND ($_GET['lang']== 'en'))
		{
		setcookie('lang', 'en', time() + 365*24*3600, null, null, false, true); 
		$lang = $_COOKIE['lang'];
		}
	elseif (isset($_GET['lang']) AND ($_GET['lang']== 'de'))
		{
		setcookie('lang', 'de', time() + 365*24*3600, null, null, false, true);
$lang = $_COOKIE['lang'];		
		}
	elseif (isset($_GET['lang']) AND ($_GET['lang']== 'ru'))
		{
		setcookie('lang', 'ru', time() + 365*24*3600, null, null, false, true); 
		$lang = $_COOKIE['lang'];
		}
	elseif (isset($_GET['lang']) AND ($_GET['lang']== 'fr'))
		{
		setcookie('lang', 'fr', time() + 365*24*3600, null, null, false, true);
$lang = $_COOKIE['lang'];		
		}

		
    
    $req->closeCursor();
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>

//lien vers l'index des différentes langues (mêmes pages, différents paramètres)

<a href="index.php?num=1&lang=fr">Site en Français</a>

<br />
<br />
<a href="/index.php?num=1&lang=en">Site en Anglais</a>
<br />
<br />
<a href="index.php?num=1&lang=ru">Site en Russe</a>
<br />
<br />
<a href="index.php?num=1&lang=de">Site en Allemand</a>
<br />
<br />
<a href="/page1.php?num=2&lang=<?php echo ($_COOKIE['lang']); ?>">cliquer</a>





Voilà, pour l'instant tout est travaillé en local. Je sais que je peux grandement allégé mon code , notamment au niveau des "elseif", mais je souhaite d'abord résoudre ce problème.
Merci d'avance pour votre précieuse aide!

A voir également:

4 réponses

mika2413 Messages postés 19 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 5 octobre 2011 1
29 mai 2011 à 23:48
up plz
0
mika2413 Messages postés 19 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 5 octobre 2011 1
30 mai 2011 à 12:56
up plz! :'(
0
mika2413 Messages postés 19 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 5 octobre 2011 1
30 mai 2011 à 23:33
up!
0
Salut, je trouve cela un peux lourds tu devrai plutot voir pour gerez ta partie langue d'un coté et crée une variable de ton choix de langue via le $cookie
ce qui te permetterai d'etre plus trankil par la suite ^^

<?php
$req = $bdd->query('SELECT id, titre_'.$LANG['GLOBAL'].', desc_'.$LANG['GLOBAL'].', img, auteur, tags, date FROM video ORDER BY date DESC LIMIT 0, 10');
while ($donnees = $req->fetch())
{
?>
pour resortir que les info traduite:

ou encor voir avec la traduction de google directement !

Cordialement ,Keyral
0