Redirection selon la langue du navigateur

Résolu
cs_gaspace Messages postés 6 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 22 février 2008 - 21 févr. 2008 à 12:07
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre 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

16 réponses

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 févr. 2008 à 13:24
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]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2008 à 12:14
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]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2008 à 12:21
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]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2008 à 12:24
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]
0

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

Posez votre question
cs_gaspace Messages postés 6 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 22 février 2008
21 févr. 2008 à 13:03
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
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
21 févr. 2008 à 13:21
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2008 à 13:29
>>je n'arrive pas à récupérer la valeur de la langue.
    c'est navigator.language<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
21 févr. 2008 à 13:34
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
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 févr. 2008 à 16:11
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]
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
21 févr. 2008 à 16:39
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
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 févr. 2008 à 16:44
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]
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
21 févr. 2008 à 16:48
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
0
cs_gaspace Messages postés 6 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 22 février 2008
21 févr. 2008 à 18:30
Je suis si mais j'essaye de comprendre aulieu de recopier betement :)
Je vais tester tout ca ! merci

Gaspard
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
21 févr. 2008 à 21:40
ok ok ben hesite pas si tu as d'autres questions ;-)

<hr width="100%" size="2" />
Maelo ou Elo --> Mon blog
0
cs_gaspace Messages postés 6 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 22 février 2008
22 févr. 2008 à 08:44
Merci Zobibol t'es un chef :)

Merci aux autres quand même !
Bonne jounée !
Gaspard
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
22 févr. 2008 à 13:31
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)
0
Rejoignez-nous