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 :

[PHP-JS] Détection de la langue du navigateur


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut [PHP-JS] Détection de la langue du navigateur
    Bonjour à tous,
    je souhaiterai déterminer la langue du navigateur pour pouvoir afficher le site dans la langue du visiteur.
    Je sais que $_SERVER['HTTP_ACCEPT_LANGUAGE'] donne cette information, mais il y a beaucoup de choses dedans (par exemple pour moi : fr-fr,fr;q=0.8,en;q=0.5,en-us;q=0.3).
    En plus, j'imagine que selon le navigateur, on n'obtient pas la même chose ...
    Ma question est donc : existe-t-il un script déjà fait pour déterminer la langue laplus probable du visiteur ?
    Merci d'avance.

  2. #2
    Membre régulier Avatar de csbilouze
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    salut,

    tu n aurais pas plus de faciliter a le faire avec javascipt?

    ++

  3. #3
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Salut, c'est vrai, pourquoi pas.
    Mais en fait, je ne connais pas super bien javascript, et puis je me disais que comme ça, ça fonctionnerait même avec les utilisateurs qui désactivent javascript.
    Avez-vous déjà vu un tel script ? Sinon, je me fais une petite expression régulière, mais bon, si ça existe déjà ... ça serait mieux !
    Merci.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    et voilà le code tout fait
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    function commencePar($texte, $prefixe) {
        return (substr($texte, 0, strlen($prefixe)) === $prefixe);
    }
     
    // liste des langues disponibles sur le site
     
    $configLingvo = array(
        'fr' => array(
            'prefixe' => 'fr',
            'nom' => 'Français',
        ),
        'en' => array(
            'prefixe' => 'en-gb',
            'nom' => 'Anglais',
        ),
    );
     
    // recherche automatique
    $codeLangue = NULL;
     
    $liste = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
     
    $listeLangues = array();
    foreach ($liste as $langue) {
        $separ = explode(';q=', $langue);
     
        if (isset($separ[1])) {
            $valeur = $separ[1];
        } else {
            $valeur = 1;
        }
     
        $listeLangues[$valeur][] = $separ[0];
    }
     
    krsort($listeLangues);
     
    foreach ($listeLangues as $poids => $liste) {
        foreach ($liste as $langue) {                
            foreach ($configLingvo as $codeLangueDispo => $langueDispo) {
                if (commencePar($langue, $langueDispo['prefixe'])) {
                    $codeLangue = $codeLangueDispo;
                    break 3;
                }
            }
        }
    }
     
    // la langue à afficher se trouve dans la variable $codeLangue

  5. #5
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Génial !
    Merci Mathieu.
    En plus, ce script tient compte du poid associés aux langues (c'est typiquement le genre de truc que je n'aurais pas fait si je l'avais fait moi-même ).
    Merci beaucoup,
    a+, nako.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 31/03/2011, 11h46
  2. Détection de la langue du navigateur via JS
    Par michaeljeru dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2011, 10h05
  3. Réponses: 4
    Dernier message: 23/03/2011, 15h45
  4. [Cookies] détection de la langue du visiteur + cookie
    Par RobinNono dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2006, 11h09
  5. [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

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