IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Detecter la langue du navigateur avec redirection


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    /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.

  2. #2
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 162
    Points : 2 015
    Points
    2 015
    Par défaut
    T'utilises mal ta variable d'environnement et la chaîne de redirection n'est pas bonne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    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)

    /langue/en/
    voici le code actuellement sur la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $Langue_default = "en";
    Quand pensez vous

    Merci.

  4. #4
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 162
    Points : 2 015
    Points
    2 015
    Par défaut
    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'.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    Re,

    Quand vous dite la liste il s'agit bien de Et voici la liste (exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    Au final voila le code , je n'ai pas pu le testé d'apres vous es ce correct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 162
    Points : 2 015
    Points
    2 015
    Par défaut
    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

Discussions similaires

  1. Redirection fonction langue du navigateur
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 23/08/2013, 08h54
  2. Detection Navigateur et redirection
    Par jeromelabbe0649 dans le forum Langage
    Réponses: 5
    Dernier message: 25/01/2012, 23h35
  3. Redirection suivant langue du navigateur
    Par Mister Paul dans le forum Langage
    Réponses: 2
    Dernier message: 23/11/2010, 16h19
  4. [JSP] Récupérer la langue du navigateur sans js
    Par Snivel dans le forum Struts 1
    Réponses: 2
    Dernier message: 31/03/2006, 17h56
  5. Détecter l'activation de Javascript avec des JSP
    Par TonioLeRital dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 10/11/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo