Redirection selon la langue du navigateur [Résolu]

cs_gaspace 6 Messages postés mercredi 25 juillet 2007Date d'inscription 22 février 2008 Dernière intervention - 21 févr. 2008 à 12:07 - Dernière réponse : PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention
- 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

Zobibol 469 Messages postés mercredi 9 janvier 2002Date d'inscription 20 février 2017 Dernière intervention - 21 févr. 2008 à 13:24
+3
Utile
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]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Zobibol
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 21 févr. 2008 à 12:14
0
Utile
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
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 21 févr. 2008 à 12:21
0
Utile
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
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 21 févr. 2008 à 12:24
0
Utile
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
cs_gaspace 6 Messages postés mercredi 25 juillet 2007Date d'inscription 22 février 2008 Dernière intervention - 21 févr. 2008 à 13:03
0
Utile
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
maelob 944 Messages postés mardi 14 novembre 2006Date d'inscription 7 août 2009 Dernière intervention - 21 févr. 2008 à 13:21
0
Utile
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
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 21 févr. 2008 à 13:29
0
Utile
>>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
maelob 944 Messages postés mardi 14 novembre 2006Date d'inscription 7 août 2009 Dernière intervention - 21 févr. 2008 à 13:34
0
Utile
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
Zobibol 469 Messages postés mercredi 9 janvier 2002Date d'inscription 20 février 2017 Dernière intervention - 21 févr. 2008 à 16:11
0
Utile
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
maelob 944 Messages postés mardi 14 novembre 2006Date d'inscription 7 août 2009 Dernière intervention - 21 févr. 2008 à 16:39
0
Utile
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
Zobibol 469 Messages postés mercredi 9 janvier 2002Date d'inscription 20 février 2017 Dernière intervention - 21 févr. 2008 à 16:44
0
Utile
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
maelob 944 Messages postés mardi 14 novembre 2006Date d'inscription 7 août 2009 Dernière intervention - 21 févr. 2008 à 16:48
0
Utile
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
cs_gaspace 6 Messages postés mercredi 25 juillet 2007Date d'inscription 22 février 2008 Dernière intervention - 21 févr. 2008 à 18:30
0
Utile
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
maelob 944 Messages postés mardi 14 novembre 2006Date d'inscription 7 août 2009 Dernière intervention - 21 févr. 2008 à 21:40
0
Utile
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
cs_gaspace 6 Messages postés mercredi 25 juillet 2007Date d'inscription 22 février 2008 Dernière intervention - 22 févr. 2008 à 08:44
0
Utile
Merci Zobibol t'es un chef :)

Merci aux autres quand même !
Bonne jounée !
Gaspard
Commenter la réponse de cs_gaspace
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 22 févr. 2008 à 13:31
0
Utile
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.