Redirection selon la langue du navigateur [Résolu]

Messages postés
6
Date d'inscription
mercredi 25 juillet 2007
Dernière intervention
22 février 2008
- - Dernière réponse : PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 22 févr. 2008 à 13:31
Bonjour,
tout d'abors je n'ai pas trouvé de réponse à ma question sur le net.
J'ai cherché à faire un script de redirection selon la langue du navigateur mais la redirection ne marche pas.
Je suis débutant.

Voici mon code :

<script language="javascript">
var nav=parseFloat(navigator.appVersion);
if (navigator.language){
          if(navigator.language.value == "fr") {
            window.location.replace("http://www.xxx.com/site/fr"); }
          if(navigator.language.value == "it") {
            window.location.replace("http://www.xxx.com/site/it"); }
          if(navigator.language.value == "es") {
            window.location.replace("http://www.xxx.com/site/es"); }
        else {
            window.location.replace("http://www.xxx.com/site/en"); }
}else if (navigator.userLanguage){
        if(navigator.userLanguage.value == "fr") {
            window.location.replace("http://www.xxx.com/site/fr"); }
          if(navigator.userLanguage.value == "it") {
            window.location.replace("http://www.xxx.com/site/it"); }
          if(navigator.userLanguage.value == "es") {
            window.location.replace("http://www.xxx.com/site/es"); }
        else {
            window.location.replace("http://www.xxx.com/site/en"); }
}else{
  window.location.replace("http://www.xxx.com/site/en");
}
</script>

En faite la redirection va vers http://www.xxx.com/site/en toujours car on dirait que la valeur : navigator.userLanguage.value (IE) et navigator.language.value (FIREFOX) ne sont pas récupérés. J'ai aussi essayé de retirer .value dans les deux valeurs mais toujours vers EN.

Merci à tous
Gaspard
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
3
Merci
Bien le bonjour, en fait, le problème (hormis le problème de value qui fou la grouille) pourrait aussi ce situé ailleurs...
Moi j'ai ça comme résultat.
        <script language="javascript">
            var nav=parseFloat(navigator.appVersion);
            var lng = "en";
            if (navigator.language){
                      if(navigator.language == "fr") {
                       lng = "fr";
                       }
                      if(navigator.language== "it") {
                        lng = "it"; }
                      if(navigator.language== "es") {
                        lng = "es"; }
            }else if (navigator.userLanguage){
                    if(navigator.userLanguage== "fr") {
                        lng = "fr";
                         }
                      if(navigator.userLanguage== "it") {
                                    lng = "it";}
                      if(navigator.userLanguage== "es") {
                          lng = "es";
                      }
            }
            window.location.replace("http://www.ddd.com/site/"+ lng);
           
            </script>
notez bien que j'ai enlevé le xxx du site lequel n'est pas des plus apprécié sur mon lieux de travail !!!!!
après à quoi sert le nav = parseFloat(navigator.appVersion); ???

[o-_-o]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Zobibol
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
Bonjour,
    copié/collé de SelfHTML :

<html><head><title>Test</title>
</head>
<script type="text/javascript">
<!--
if(navigator.language.indexOf("en")>-1)
 document.write("dear visitor, welcome on our pages");
if(navigator.language.indexOf("fr")>-1)
 document.write("SCher visiteur, soyez le bienvenu sur nos pages");
//-->
</script>
</html>

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
bon, c'est vrai que l'exemple n'est pas "top", mais
    finalement, ça montre bien ce qu'il convient de faire...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
il est vrai aussi, qu'un petit alert(navigator.language) aurait probablement aidé

ou du pas à pas et visualisation des contenus ( enfin avec IE et FF )

¡————————¡——————————————————————————————————————————————————————————¡
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | |
| | et mieux, télécharger FireBug |
¦————————¦——————————————————————————————————————————————————————————¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦————————¦——————————————————————————————————————————————————————————¦
|K—Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!————————!——————————————————————————————————————————————————————————!

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
6
Date d'inscription
mercredi 25 juillet 2007
Dernière intervention
22 février 2008
0
Merci
En faite mon problème n'est pas dans la détection de la langue, tout est bon de cette facon :) Si je fais un alerte c'est bon, mais je n'arrive pas à récupérer la valeur de la langue.

Quand je met ca, ca me redirige vers ANGLAIS donc le ELSE alors que ca devrait me rediriger vers FR (elseIf)
Merci :)

Gaspard
Commenter la réponse de cs_gaspace
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
3
0
Merci
Bonjour,

Le premier post de bul te montre déjà une erreur, tu écris
    navigator.language.value ou navigator.userLanguage.value
Et dans l'exemple de bul tiré de seflhtml (très bon site d'ailleurs)
    navigator.language.indexOf

Rien qu'en voyant je me poserai des questions sur la validité de mon code ;-)
Après je ne connais pas la synthaxe  pour detecter la langue en javascript mais je fait juste cette petite remarque.

Maelo ou Elo -->Mon blog
Commenter la réponse de maelob
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
>>je n'arrive pas à récupérer la valeur de la langue.
    c'est navigator.language<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
3
0
Merci
parseFloat() comme son nom l'indique passe le type de donnée en float (entier long).
navigator.appVersion comme son l'indique aussi revois le numéro de version du navigateur.

SInon pour savoir ou se situe l'erreur numero de ligne et de tout ça je vous renvois au message de bul :

>>¡--------¡----------------------------------------------------------¡
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | |
| | et mieux, télécharger FireBug |
¦--------¦----------------------------------------------------------¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦--------¦----------------------------------------------------------¦
|K-Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦--------¦----------------------------------------------------------¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦--------¦----------------------------------------------------------¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!--------!----------------------------------------------------------!

Maelo ou Elo -->Mon blog
Commenter la réponse de maelob
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
0
Merci
Merci pour cette précision, mais ma question est encore plus sioux, à quoi peut donc bien servir cette variable dans le contexte ?

Et enfin, une version pour s'affranchir des if, else, else if ce qui est très contraignant dans le cas d'ajout d'une nouvelle langue.

        <script language="javascript">
            // Liste des langues autorisées.
            var autorizeLanguage= ["fr", "it", "es"];
            // Toujours pas piger pourquoi qu'elle est la cette variable nav (aucune utilité)
            var nav=parseFloat(navigator.appVersion);
            var lng = ( navigator.language) ? navigator.language : navigator.userLanguage;
            // indique que la langue a été trouvée.
            var found = false;
            for ( var i=0; i< autorizeLanguage.length; i++){
                    if ( autorizeLanguage[i] == lng ){
                        found=true;
                        break;
                    }
            }
            // si la langue n'a pas été trouvée, alors on ouvre avec en.
            if (!found){
                lng="en";
            }
            window.location.replace("http://www.ddd.com/site/"+lng);
            </script>
Et la, ça l'fait ;o)
[o-_-o]
Commenter la réponse de Zobibol
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
3
0
Merci
Comme ça je dirai elle sert a rien (à condition que le script soit entier)
 
Si elle est utilisé nul part (dans la fonction) elle peut être supprimée, après ça peu être utile dans des cas de compatibilité entre versions mais la pour ton problème je pense que c'est inutile car le compatibilité est lié au navigateur et non pas à la version du navigateur. (quoi que pas sur que ça fonctionne avec IE 1 )

Sinon si c'est resolu, penses à reponse accepté.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog
Commenter la réponse de maelob
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
0
Merci
Moi je veux bien mettre en résolu, mais le souci, c'est que je ne suis pas à l'origine du message ;o)
je ne suis qu'un intervenant, soit gasPace ne suit plus, soit ??????

[o-_-o]
Commenter la réponse de Zobibol
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
3
0
Merci
Oua faut que j'ouvre mes yeux moi

Même pour le message d'avant je croyais que c'était gasPace  (pour la question de parsefloat)

Desolée...
Heureusement que le week end arrive le travail c'est pas bon pour la santé...

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog
Commenter la réponse de maelob
Messages postés
6
Date d'inscription
mercredi 25 juillet 2007
Dernière intervention
22 février 2008
0
Merci
Je suis si mais j'essaye de comprendre aulieu de recopier betement :)
Je vais tester tout ca ! merci

Gaspard
Commenter la réponse de cs_gaspace
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
3
0
Merci
ok ok ben hesite pas si tu as d'autres questions ;-)

<hr width="100%" size="2" />
Maelo ou Elo --> Mon blog
Commenter la réponse de maelob
Messages postés
6
Date d'inscription
mercredi 25 juillet 2007
Dernière intervention
22 février 2008
0
Merci
Merci Zobibol t'es un chef :)

Merci aux autres quand même !
Bonne jounée !
Gaspard
Commenter la réponse de cs_gaspace
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
9
0
Merci
Bonjour à tous,

Merci Zobibol t'es un chef :)
Personne n'en n'a jamais douté...

Il reste préférable d'utiliser
var lng = ( navigator.language) ? navigator.language : navigator.userLanguage;
comme l'a précisé Zobibol, à ma connaissance seul IE reconnais la propriété
userLanguage
, Opera reconnait lui les deux...
ensuite il est préférable de travailler avec une recherche indexOf car on peut trouver par exemple
fr-FR, en-US...

;O)
Commenter la réponse de PetoleTeam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.