Rechercher : dans
Par :

Redirection selon la langue du visiteur

Dernière réponse le 5 déc 2008 à 17:03:28 guifson, le 27 jui 2007 à 15:29:09 
 Signaler ce message aux modérateurs

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.
http://www.icom7.com/index.php (l'index principale est en Anglais )
http://www.icom7.com/fr (est la partie en francais)
http://www.icom7.com/es (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 http://www.icom7.com/fr si sa langue est le francais
-->qui redirige un visiteur sur http://www.icom7.com/es si sa langue est l'espagnol
-->qui redirige un visteur sur http://www.icom7.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

Meilleures réponses pour « Redirection selon la langue du visiteur » dans :
Créer sa carte de visite en ligne VoirGrâce aux outils de création en ligne de carte de visite, vous pouvez créer vous-même votre carte de visite en quelques clics. La carte de visite : mode d’emploi Pourquoi ? Le format Le papier La typographie L’impression Le...
Supprimer totalement les traces de nos visites sur internet VoirAvec Internet Explorer Pour pouvoir supprimer les traces d'une ou plusieurs visites sur des sites, il existe (tout le monde le sait) EFFACER L'HISTORIQUE dans le menu outil sur internet explorer. Et bien sachez que parfois, il peut rester des...
Caractéristiques du langage C VoirLe fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Javascript - Introduction au langage Javascript VoirQu'est-ce que le Javascript? Le Javascript est un langage de script incorporé dans un document HTML. Historiquement il s'agit même du premier langage de script pour le Web. Ce langage est un langage de programmation qui permet d'apporter des...

1

Ssylvainsab, le 27 jui 2007 à 15:51:50
  • +1

Salut.
La réponse à ta question est dans la FAQ : php rediriger en fonction de la langue du visiteur Sylvain

Répondre à Ssylvainsab

2

guifson, le 27 jui 2007 à 16:45:15

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 http://icom7.com , http://icom7.com/fr et http://icom7.com/es 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

Répondre à guifson

3

zefoots, le 28 jui 2007 à 20:24:29
  • +2

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.

Répondre à zefoots

4

guifson, le 28 jui 2007 à 23:42:35

Super cool
Cà marche
Merci a vous

Répondre à guifson

5

zefoots, le 29 jui 2007 à 00:41:42

Pas de quoi, c'est Ssylvainsab qui a fait tout le boulot ;-)

Répondre à zefoots

6

Ssylvainsab, le 29 jui 2007 à 23:39:07

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. Sylvain

Répondre à Ssylvainsab

7

zeb, le 24 déc 2007 à 19:51:30

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 :)

Répondre à zeb

8

Ssylvainsab, le 24 déc 2007 à 22:44:21

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

Répondre à Ssylvainsab

9

zeb, le 25 déc 2007 à 21:13:51

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 ?

Répondre à zeb

10

Ssylvainsab, le 26 déc 2007 à 11:18:31

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

Répondre à Ssylvainsab

11

zeb, le 27 déc 2007 à 01:14:35

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 :)....

Répondre à zeb

12

didierjunk, le 11 fév 2008 à 08:22:33

Remplacer
header("Location: /index.php/$Langue");
par
header("Location: /index.php?Langue=$Langue");

Répondre à didierjunk

13

jnfritz, le 5 déc 2008 à 14:55:04

Et si vous pensiez à sortir le $Langue de la chaîne de caractères ca irait pas mieux ?

header("Location: /index.php/".$Langue);

Répondre à jnfritz

14

 Ssylvainsab, le 5 déc 2008 à 17:03:28

Pas besoin, c'est entre double quotes. Sylvain

Répondre à Ssylvainsab
Collection CommentÇaMarche.net