site multi langues: passage de l'info langue de page en page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : site multi langues: passage de l'info langue de page en page

par albat » 12 avr. 2007, 15:55

Donatello (ben oui, on t'a reconnu) :twisted:

J'ai vu quelquepart qu'il existe des règlements sur ce forum
qui indiquent que pour un nouvelle question, on est prié d'ouvrir un nouveau sujet.

Ça te dit quelque chose ?

par Invité » 12 avr. 2007, 15:16

Bonjour,
J'ai vu quelquepart qu'il existe une fonction native php qui permet de récupérer d'un coup les paramètres d'une url pour les rendre utilisables dans la page avec des $ devant.

Je n'arrive pas à retrouver cette fonction, ça vous dit quelquechose?

par Boro64 » 18 mars 2007, 12:15

Merci VaN, AB, et tous les autres. =D>
Je revois donc mon code à ce sujet. Merci encore de m'avoir permis d'avancer.
Pour Zeus: Oui oui, je clique sur le zouli bouton [Résolu] :lol:

par AB » 18 mars 2007, 12:09

Le dernier message viens de moi, je m'étais fait déconnecter...

par Invité » 18 mars 2007, 12:04

Mai: Est-il vrai qu'un cookie ecrase le precedent?
Oui il écrase le précédent du même nom.

Pris isolément, le code que je t'ai donné plus haut fonctionne. Il doit y avoir une erreur ailleurs dans ton code.

par Boro64 » 18 mars 2007, 10:50

Merci VaN,
je vais regarder ça de près...
Mai: Est-il vrai qu'un cookie ecrase le precedent?
Si oui, pourquoi cel ne se fait il pas dans le cas vu plus haut??? :?
Merci de vos réponses...la doc php ne dit rien à ce sujet...me semble-t-il...
Merci encore à toutes et tous

par VaN » 17 mars 2007, 22:46

Tu y trouveras peut etre une utilité, voici comment je gère la langue d'affichage d'un site multi-langue sur lequel je travaille (je n'utilise pas du tout la langue d'affichage du browser, donc peut etre a retravailler) :

sur chacune de mes pages :
// on recupère la langue d'affichage
if(isset($_GET['lang']))
{
	include 'lang/'.$_GET['lang'].'.php';
	// création du cookie qui sauvegarde la langue
	setcookie("lang",$_GET['lang'],time() + 365*24*3600);
}
elseif(isset($_COOKIE['lang']))
	include 'lang/'.$_COOKIE['lang'].'.php';
else
	include 'lang/fr.php';
Les boutons de changements de langues :
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?lang=fr<?php echo $add; ?>"><img src="img/flag_fr.gif" alt="Français" border="0" /></a>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?lang=en<?php echo $add; ?>"><img src="img/flag_uk.gif" alt="English" border="0" /></a>

par Boro64 » 17 mars 2007, 20:55

Bonsoir,
Désolé Zeus, mais je remets ce sujet à jour car...bhé ça marche toujours pô :(
Après vérification, et peut être est-ce là le problème, le cookie est bien créé, mais..il y autant de cookie que d'impulsion de choix de langues...
Je m'explique: 1 cookie est enregistré à l'arrivée sur le site avec l'extension de la langue du navigateur...puis si je selectionne une autre langue que celle affichée, il se crée un second cookie...qui n'écrase pas le 1er...???!!! :twisted:
Or, je croyais avoir lu dans le manuel php qu'un nouveau cookie écrasait le précedent; ici visiblement il n'en est rien; si bien qu'au changement de page, le 1er cookie prend le pas sur le second...et affiche donc la page dans la langue initiale... |*()
AB, merci pour ton aide, visiblement sinon tout fonctionne (et j'ai ajouté une limite de temps au cookie comme très justement suggéré plus haut :wink:
Voilà, je ne remets pas le code puisque c'est celui inscrit plus haut.
Si quelqu'un a une piste, je suis bien sur preneur...
Merci à toutes et tous

par zeus » 17 mars 2007, 15:51

ah, que serions nous sans le copier/coller :D
Il n'y a pas de messages semi-automatique sur phpBB ?
Encore mieux, il y a Hubert Rocksor qui nous réalise de super addons :pouce: dont les messages de modérations pré-formatés ;)

par Boro64 » 17 mars 2007, 13:53

Merci AB,
Je regarde ça.
Effectivement, tu as raison:
Pour ce qui est du cookie, je lui mettrais une valeur non nulle puisque si le visiteur clique dessus c'est qu'il souhaite une autre langue que celle détectée par le navigateur. Alors pourquoi ne pas conserver son choix jusqu'à sa prochaine visite? Wink
Très juste remarque dont je vais tenir compte.
Merci encore pour ton aide et conseil.

par jojolapine » 17 mars 2007, 11:51

ah, que serions nous sans le copier/coller :D
Il n'y a pas de messages semi-automatique sur phpBB ?

par AB » 17 mars 2007, 11:25

Bonjour,

Je ne m'étais préoccupé que de récupérer la variable $_GET['lang'] pour la mettre dans un cookie.

Pour le reste il serait bien de travailler un peu le switch pour le mettre dans une fonction
//si le visiteur envoie la variable $_GET['lang'] pour choisir sa langue, on l'enregistre dans un cookie nommé 'lang' 
isset($_GET['lang'])? setcookie("lang", $_GET['lang']) : '' ; 

//si le cookie existe on le récupère sinon on donne la langue par défaut 
$lang = isset($_COOKIE['lang'])? $_COOKIE['lang'] : 'fr' ; 
//si $_GET['lang'] est envoyé on la récupère sinon on donne la valeur du cookie s'il existe sinon la valeur par défaut 
$lang = isset($_GET['lang'])? $_GET['lang'] : $lang ; 

//et on fait l'include suivant la valeur de $lang 
function inclure_page($lang) {
switch ($lang) 
    { 
    case 'fr': include('langues/fr_lang.php'); 
        break; 
    case 'en': include('langues/en_lang.php'); 
        break; 
    case 'es': include('langues/es_lang.php'); 
        break; 
    default : include('langues/fr_lang.php'); 
    }
}


et dans ton code HTM

Code : Tout sélectionner

<?php inclure_page($lang) ?>

Pour ce qui est du cookie, je lui mettrais une valeur non nulle puisque si le visiteur clique dessus c'est qu'il souhaite une autre langue que celle détectée par le navigateur. Alors pourquoi ne pas conserver son choix jusqu'à sa prochaine visite? :wink:

(je n'ai pas testé ce code car il est simple et tu devrais pouvoir le débugguer si problème)

par Boro64 » 16 mars 2007, 23:59

:( Houlala, oui Zeus...seulement :
1) j'espérais peut être une réponse quant à ma dernière question (mais ce n'est plus la peine, je viens de tester, et de comprendre...donc j'ai ma réponse)
2) Je souhaitai tester la proposition d'AB
3) celle ci génère tout de même un "WARNING' lors de l'utilisation
Mais tu as raison, la réponse et sans doute celle qui me met sur la voie, et je mets, tout de suite après mon post, 'Résolu' grâce à ce merveilleux bouron sus-nommé :wink:
Pardon donc pour le retard
Merci encore à tous et à bientôt...pour de nouvelles questions :lol:

par zeus » 16 mars 2007, 21:57

ah, que serions nous sans le copier/coller :D

par VaN » 16 mars 2007, 21:38

zeus qui nous fait un passage de script :

foreach($thread != [résolu])
{
post_comment($moderation_msg, $pseudo);
}

:lol: