Redirection selon la langue du visiteur

Résolu/Fermé
guifson Messages postés 10 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 novembre 2011 - 27 juil. 2007 à 15:29
Aurèli1s Messages postés 136 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 14 octobre 2013 - 18 sept. 2011 à 19:55
Bonjous a tous.
J'aimerai savoir comment on peut adapter un cookie ou bien une fonction php, de telle facon qu'une page precise du site d'affiche selon la langue du visiteur.
En fait, mon site est en trois langues, Anglais, francais et Espagnol.
https://www.afribaba.com (l'index principale est en Anglais )
https://www.afribaba.com (est la partie en francais)
https://www.afribaba.com (est la partie en Espagnol)
Mon probleme concret, est de savoir s'avoir comment adapter peut-etre un cookie ou bien une fonction php:
-->qui redirige un visiteur sur https://www.afribaba.com si sa langue est le francais
-->qui redirige un visiteur sur https://www.afribaba.com si sa langue est l'espagnol
-->qui redirige un visteur sur https://www.afribaba.com si sa langue est l'anglais et/ou bien une langue qui n'est ni le francais, ni l'espagnol
Ok Merci a vous
A voir également:

12 réponses

zefoots Messages postés 146 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 septembre 2007 62
28 juil. 2007 à 20:24
Salut,

Je viens de lire la FAQ indiquée par Ssylvainsab, et il me semble que c'est exactement la réponse à ta question. Relis bien cette FAQ et surtout essaye de bien comprendre ce qui est écrit. Il faut juste que tu l'adaptes un peu à ton site. Par exemple, dans ton cas, à la place de
header("Location: /index.php?Langue=fr");
il faudra que tu écrives
header("Location: /fr/index.php");
puisque ton site fonctionne comme ça (c'est cette ligne qui permet de faire la redirection).

La ligne
$Langue = explode(",",$HTTP_ACCEPT_LANGUAGE);
permet de savoir quelle langue utilise la personne qui surf sur ton site. En effet, $HTTP_ACCEPT_LANGUAGE est renvoyé par le navigateur (Internet Explorer, Firefox, etc.) que la personne utilise pour surfer et c'est dans cette variable qu'on peut extraire la langue.
Si tu veux comprendre ce que contient la variable $HTTP_ACCEPT_LANGUAGE, il te suffit d'écrire dans ton fichier index.php
echo $HTTP_ACCEPT_LANGUAGE;
Ensuite, si tu veux comprendre ce que fait
$Langue = explode(",",$HTTP_ACCEPT_LANGUAGE);
il te suffit de faire
echo explode(",",$HTTP_ACCEPT_LANGUAGE);
etc.
2
guifson Messages postés 10 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 novembre 2011
28 juil. 2007 à 23:42
Super cool
Cà marche
Merci a vous
0
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
27 juil. 2007 à 15:51
Salut.
La réponse à ta question est dans la FAQ : php rediriger en fonction de la langue du visiteur
1
zefoots Messages postés 146 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 septembre 2007 62
29 juil. 2007 à 00:41
Pas de quoi, c'est Ssylvainsab qui a fait tout le boulot ;-)
1
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
29 juil. 2007 à 23:39
Merci zefoots.
Je n'ai fait que donner un lien, c'est toi qui a expliqué !

Par contre, il vaut mieux utiliser les variables superglobales : $_SERVER['HTTP_ACCEPT_LANGUAGE'].
J'ai changé ça dans l'astuce.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guifson Messages postés 10 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 novembre 2011
27 juil. 2007 à 16:45
Mais justement le probleme est que je n'ai pas $langue dans mon site.
En fait je peux dire que j'ai reunit trois sites entier en un seul, car https://www.afribaba.com , https://www.afribaba.com et https://www.afribaba.com sont presque fait differamment , ce qui fait que il n'y'a aucun dossier lang qui relie les 2 sous-domaines et l'index principale.
Merci a vous
0
Salut tt le monde

je me retrouve a avoir les meme besoin, j'ai suivi le faq et voila le code que j'ai rajoute :

if (!isset($Langue)) {
$Langue = explode(',',$_server['HTTP_ACCEPT_LANGUAGE']);
$Langue = strtolower(substr(chop($Langue[0]),0,2)); }
else
$Langue="fr";
}
{
header("Location: /index.php/$Langue");
}
?>

pour mon blog :
http://zeb.3dvf.com/blog/

le probleme etant que la redirection ne marche pas et la page devient inatteignable.
a savoir en rentrant http://zeb.3dvf.com/blog/ je suis redirige vers : http://zeb.3dvf.com/index.php/fr

help :)
0
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
24 déc. 2007 à 22:44
Tu ne peux pas envoyer un header après avoir affiché quoi que ce soit.
Est-ce que ton problème ne viendrait pas de là ?
--
Sylvain
0
mmm je suis pas trop sur de ce que tu veux dire par afficher quoi que ce soit ?
tu veux dire par la que cette partie de l'index .php doit figurer en debut de code ?
0
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
26 déc. 2007 à 11:18
Par "affiches quoi que ce soit", j'entends "envoyer quelquechose au client". Si tu envoies quelque chose au client, les headers seront envoyés avec, donc tu ne peux pas en envoyer d'autre.
--
Sylvain
0
Concretement j'ai installe le script en debut du fichier index.php ( qui contient en plus les informations de base pour les blog gere par dotclear) , donc il ne me semble pas que j'envoies quelquechose au client avant le header lui meme.
Actuellement le script evidemment n'est pas present sur le blog.

Je crois surtout que ce qui pose probleme c que l'index.php est dans le repertoire blog. Peut etre utiliser une redirection pour faire sauter le index.php aiderait ? je sais pas, je sais plus :)....
0
remplacer
header("Location: /index.php/$Langue");
par
header("Location: /index.php?Langue=$Langue");
0
et si vous pensiez à sortir le $Langue de la chaîne de caractères ca irait pas mieux ?

header("Location: /index.php/".$Langue);
0
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825 > jnfritz
5 déc. 2008 à 17:03
Pas besoin, c'est entre double quotes.
0
Aurèli1s Messages postés 136 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 14 octobre 2013 4
18 sept. 2011 à 19:55
Moi sa ne marche pas, j'ai ajouté:

<?php
if (!isset($langue_user) && !isset($_SESSION["ch_langue"])){
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
switch($langue_user){
case"fr":
$_SESSION["ch_langue"] = "fr";
header("Location: /fr/index.php");
break;
case "en":
$_SESSION["ch_langue"] = "en";
header("Location: /fr/index.php");
break;
}
}
?>


Mais rien ne change....
0