Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2010, 13h42   #1
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 257
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 257
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
Par défaut Detecter la langue du navigateur avec redirection

Bonjour,

Je voudrais savoir comment deteter la langue du navigateur et rediriger l'utilisateur celon la langue. il doit y avoir au total 6 langue, Français, Anglais, allemand, Espagnole, Italien, Néerlandais.

dans mon fichier index j'ai mis ceci a la racine du site :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php 
if (!isset($Langue)) { 
  if(isset($HTTP_ACCEPT_LANGUAGE)){
  $Langue = explode(",",$HTTP_ACCEPT_LANGUAGE); 
  $Langue = strtolower(substr(chop($Langue[0]),0,2)); }
else 
  $Langue="fr";
} 
header("Location: /index.php?Langue=$Langue"); 
 
?>
sur mon site j'ai :
Citation:
/langue/an/index_an.php
/langue/an/index_an.php
/langue/al/index_al.php
/langue/fr/index_fr.php
/langue/es/index_es.php
/langue/it/index_it.php
/langue/Ne/index_ne.php
Je ne comprend pas :
1/ comment prendre en compte les 6 langues.
2/ Comment dire de rediriger celon le pays
3/ Comment indiquer que la langue par default est l'anglais

Merci.
__________________
Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 13h55   #2
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
T'utilises mal ta variable d'environnement et la chaîne de redirection n'est pas bonne :
Code php :
1
2
3
4
5
6
7
8
9
10
<?php
if (!isset($Langue)) {
  if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Langue = strtolower(substr(chop($Langue[0]),0,2)); }
else
  $Langue='en';
}
header('Location: /langue/' . $Langue . '/index_' . $Langue . '.php');
?>
Au passage, pour éviter des recherches inutiles de variable à traduire, utilise plutôt ' que " pour définir tes chaînes.
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne.
Le bouton ne masse pas les pieds, mais ça aide la communauté.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 16h29   #3
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 257
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 257
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
Bonsoir,

merci , mais je ne comprend pas commment les utilisateurs d'un autre pays non definie comme par exemple l'arabe, chinoi, yougoslave, etc.. vont pouvoir aller par default sur l'anglais (langue par default)

Citation:
/langue/en/
voici le code actuellement sur la page
Code :
1
2
3
4
5
6
7
8
9
10
<?php
if (!isset($Langue)) {
  if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Langue = strtolower(substr(chop($Langue[0]),0,2)); }
else
  $Langue="dgfszdgfsdg";
}
header('Location: /langue/' . $Langue . '/index_' . $Langue . '.php');
?>
Si je rajoute ceci a la fin du code et remplace dans le code precedent else par elseif
Code :
1
2
3
4
5
6
<?PHP
} else {    
header('Location: /langue/' . $Langue_default . '/index_' . $Langue_default . '.php');
}
 
?>
Et defini la langue par default étant l'anglais
Code :
$Langue_default = "en";
Quand pensez vous

Merci.
__________________
Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 16h41   #4
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
Tu n'as juste qu'à rajouter un traitement supplémentaire pour vérifier que $Langue pondu par mes modifs rentre bien dans ta liste. Si non, tu les balances sur l'anglais en écrasant $Langue par 'en'.
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne.
Le bouton ne masse pas les pieds, mais ça aide la communauté.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 17h26   #5
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 257
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 257
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
Re,

Quand vous dite la liste il s'agit bien de Et voici la liste (exemple)
Code :
1
2
3
4
5
 
 $Langue= array (
				  'De' => 'allemagne',
				  'En' => '«anglais»', 
				  'Fr' => 'français');
Excusé moi, mais je ne comprend toujour pas comment balancer un visiteur du pays arabe ou chinois par exemple sur l'anglais par default en écrasant $Langue par 'en'.

Y a un truc que je ne comprend pas ?.

Merci.
__________________
Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 18h18   #6
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 257
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 257
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
Au final voila le code , je n'ai pas pu le testé d'apres vous es ce correct

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?php
$Langue_default = "En";
 
if (!isset($Langue)) {
  if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Langue = strtolower(substr(chop($Langue[0]),0,2)); }
else
  $Langue= array (
				  'De' => 'Allemagne',
				  'Es' => 'Espagne',
				  'En' => '«Anglais»', 
				  'Fr' => 'Français',
				  'IT' => 'Italie',
	              'Nl' => 'Pays-Bas_neerlande'); 
 
}
header('Location: langue/' . $Langue . '/accueil.php');
{ 
  header('Location: langue/' . $Langue_default . '/accueil.php'); 
} 
 
?>
Merci.
__________________
Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 19h05   #7
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
Citation:
Envoyé par xunil2003 Voir le message
Quand vous dite la liste il s'agit bien de
Pas du tout, juste un test de ma part pour être sûr que ça marchait, mais que j'ai oublié de remettre en état, j'ai corrigé mon message ci-dessus

Pour la suite, ça ne marchera pas et à mon avis, c'est que tu ne poses pas assez au clair tes idées. Je vais te faire une explication courte pour que tu sois capable de voir comment corriger toi-même. Voilà comment je réfléchirais à ton problème :
  1. La langue est t'elle déjà définie?
  2. Si oui, je l'utilise et je m'arrête là
  3. Si non, je récupère la langue avec les variables d'environnement
  4. Si la variable d'environnement récupérée ne correspond pas aux six langues auxquelles je m'attends, j'utiliserai donc l'anglais
  5. J'ai fini, je peux donc rediriger mon utilisateur en fonction de la langue déterminée
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne.
Le bouton ne masse pas les pieds, mais ça aide la communauté.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h23.


 
 
 
 
Partenaires

Hébergement Web