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 :

Choisir sa langue sur un site en PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut Choisir sa langue sur un site en PHP
    Bien le bonjour,

    Je cherche à installer sur mon site la possibilité de choisir une langue.
    J'ai trouvé 2 solutions:

    1) Faire choisir la langue à l utilisateur et lui passer un cookie.
    2) Passer une variable type: "index.php?langue=fr..."

    Quelle est la meilleure solution d'après vous?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu utilises l'url tu vas devoir indiquer le parametre a chaque changement de page, pas tres pratique.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    tu connais un bon tutoriel pour installer cette option?

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    je penche pour les cookies, c'est plus pratique !
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  6. #6
    Membre actif
    Avatar de (Benoit)
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 184
    Points : 289
    Points
    289
    Par défaut
    +1 pour les cookies !
    "J'adorerais changer le monde, mais pas moyen de mettre la main sur le code source."
    chez moi

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Bonsoir à tous,

    Je jette un coup d'œil rapide à vos réponses dont je vous remercie.
    J'irais voir plus en détails les liens que tu m'indiques Deallyra, bien qu'une partie du vocabulaire soit du chinois pour moi....

    Les cookies semblent l'emporter dirait on.

    Thanks

    Marco

  8. #8
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 453
    Points : 4 602
    Points
    4 602
    Par défaut
    Bonjour.

    je rajoute une autre solution : si t'utilises une BDD, tu stock la langue de l'utilisateur dans son profil.

    et lors de sa connexion au site, tu récupères au passage la langue que tu mets dans une variable de session (cela évites la récupération de l'url/ou les cookies pour chaque page)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Me revoilou,

    J'ai donc été lire les sujets évoqués plus haut et leur vocabulaire est encore trop complexe pour moi.

    J'ai quand même retenu 2/3 choses de ces lectures et de vos conseils.

    1) En effet, un champs langue lié au profil utilisateur peut être une bonne idée, mais sauf erreur de ma part, ça ne résout pas le cas de ceux qui consultent le site sans s'être inscrit.

    2) Le cookie peut être installé sans que l'utilisateur soit enregistré je suppose?

    3) Dans les sujets que j'ai pu lire, il semble exister plusieurs façons de stocker les traductions.
    a) Dans des fichiers textes
    b) Dans la base SQL
    c) et puis il y a le XLM que je ne connais pas du tout et tout son univers évoqué qui m'a laissé bien pensif...

    Je pense avoir entre 200 et 400 mots à traduire maximum, mais en plusieurs langues...

    Que me conseillez vous?

  10. #10
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Citation Envoyé par idamarco Voir le message
    1) En effet, un champs langue lié au profil utilisateur peut être une bonne idée, mais sauf erreur de ma part, ça ne résout pas le cas de ceux qui consultent le site sans s'être inscrit.
    C'est effectivement le cas. Sauf si tu crées un tuple visiteur.

    Citation Envoyé par idamarco Voir le message
    2) Le cookie peut être installé sans que l'utilisateur soit enregistré je suppose?
    Supposition correcte

    Citation Envoyé par idamarco Voir le message
    3) Dans les sujets que j'ai pu lire, il semble exister plusieurs façons de stocker les traductions.
    a) Dans des fichiers textes
    b) Dans la base SQL
    c) et puis il y a le XLM que je ne connais pas du tout et tout son univers évoqué qui m'a laissé bien pensif...

    Je pense avoir entre 200 et 400 mots à traduire maximum, mais en plusieurs langues...
    Personnellement, je te conseillerai le XML.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  11. #11
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Points : 74
    Points
    74
    Par défaut
    Salut,

    sans vouloir compliquer plus la chose, tu peux aussi permettre à n'importe qui (invités et membres) de changer de langue n'importe quand! Il te suffit de mettre de jolis petits drapeaux correspondant à la langue et lorsque l'utilisateur clic dessus, tu as juste à modifier la variable session correspondant à la langue d'affichage!
    Si tu veux plus d'info, hésites pas à me faire signe

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    ok, merci!


    Je ne lache pas l'affaire.
    Simplement, je travaille module par module et je n'ai pas encore attaqué la traduction, donc je reviens sous peu en parler...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Chose promise chose due,

    Je suis de retour...
    J'ai bien envie d'opter pour la solution php avec les fichiers lang.

    Je teste cette solution et ça semble bien fonctionner.

    Un petit soucis également avec la déclaration de cookie...
    Pour qui peut m'aider à ce sujet, voir ce post

    Enfin, j'aimerais votre avis sur le code php...
    Vous semble t il valable?
    Est ce normal de déclarer des pour chaque variable?

    Merci pour votre aide.

  14. #14
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par idamarco Voir le message
    Un petit soucis également avec la déclaration de cookie...
    Pour qui peut m'aider à ce sujet, voir ce post

    Enfin, j'aimerais votre avis sur le code php...
    Vous semble t il valable?
    Est ce normal de déclarer des pour chaque variable?

    Merci pour votre aide.
    Pour le cookies j'ais répondu sur place !
    Pour le PHP j'ais pour habitude de regrouper mais générations de HTML?
    en faisant un echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); de toutes mes lignes
    contenant des inclusions de variables.

    Mais ce n'est pas grave de faire plein d'ouverture fermetures !!

  15. #15
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par idamarco Voir le message
    Bien le bonjour,

    Je cherche à installer sur mon site la possibilité de choisir une langue.
    J'ai trouvé 2 solutions:

    1) Faire choisir la langue à l utilisateur et lui passer un cookie.
    2) Passer une variable type: "index.php?langue=fr..."

    Quelle est la meilleure solution d'après vous?
    les 2 …

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    si le paramètre de requête est défini
     si le paramètre de requête est valable
        variable de session <- paramètre de requête
     fsi
    fsi
     
    si non(la variable de session définie)
        variable de session <- valeur par défaut
    fsi
     
    // arrivé ici la variable de session est supposée définie correctement

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Pour le cookies j'ais répondu sur place !
    Pour le PHP j'ais pour habitude de regrouper mais générations de HTML?
    en faisant un echo("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); de toutes mes lignes
    contenant des inclusions de variables.

    Mais ce n'est pas grave de faire plein d'ouverture fermetures !!
    Sorry Fox, je n'ai pas compris...
    regrouper tes générations de html???

    ca non plus
    si le paramètre de requête est défini
    si le paramètre de requête est valable
    variable de session <- paramètre de requête
    fsi
    fsi

    si non(la variable de session définie)
    variable de session <- valeur par défaut
    fsi

    // arrivé ici la variable de session est supposée définie correctement
    Pas évident pour moi de comprendre ce que cela évoque.
    En fait je me dirige vers une solution du type:
    Reconnaissance de la langue du navigateur avec possibilité de changer de langue malgré tout.
    Cela voudrait dire:
    1 cookies pour la langue du navigateur ou un autre qui "écraserait" le premier au cas où une autre langue que celle du navigateur serait choisie.
    L'interet?
    Un utilisateur francais qui consulterait sur un navigateur anglais par exemple...
    Reste à écrire le code...

    Je m'y atèle et j'en reparle.

  17. #17
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Si c'est pour un site statique, il y a encore plus simple, tu crées un dossier 'fr'
    avec tous les fichiers dedans et ensuite un dupli 'uk' par exemple, ensuite tu fais une fonction qui récupère le chemin de la page courante.

    Tu fais deux drapeaux pour les langues et tu fais un lien dynamique, exemple
    pour le français

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.tonsite.com/fr/taPageCourante.php"><img src="drapeau_fr.gif" alt="Drapeau Français" /></a>
    'taPageCourante.php' étant dynamique ;-)

    Ca permet à l'utilisateur de basculer entre chaque langue quand bon lui semble et de rester sur la page correspondante.
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Merci BlueIce pour l'idée, j'y ai pensé mais j'aimerais traduire le site dans au moins 6 langues...
    Je me suis fait un fichier Excel qui concatene les champs suivant:
    Champs1: define('
    Champs2: Nom1
    Champs3: Nom2 (2ème nom pour plus de souplesse)
    Champs4: ', '
    Champs5: Mot Français
    Champs6: Traduction Anglais
    Champs7: Traduction Russe
    Champs8: ');
    Champs9: =CONCATENER(B3;C3;D3;E3;F3;I3) (Ma colonneA est vide) /concatenation francais
    Champs10 =CONCATENER(B3;C3;D3;E3;G3;I3) Concaténation anglais
    Champs1: =CONCATENER(B3;C3;D3;E3;H3;I3) Concaténation russe
    et plus tard j'intègrerais les autres langues.

    Je n'ai plus alors qu'à faire un copier coller du bloc de texte traduit dans mes fichiers lang...
    Plus pratique en cas de modification...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Je vous présente ma petite idée pour parametrer la langue sur mon site:

    2 cookies possible:

    Cookie langnav= langue du navigateur.
    Cookie langdrapeau=langue choisie en cliquant sur un drapeau.
    Une variable $lang récupérant la langue passée.

    Si langdrapeau existe
    --------Pas de modif
    --------$lang=langdrapeau
    Sinon
    --------Si langnav existe
    ------------------Pas de modif
    ------------------$lang=langnav
    --------Sinon
    ------------------=> setcookies langnav (cookies langue navigateur)
    ------------------$lang=langnav
    --------FinSi
    FinSi

    ...Et puis je laisse la possibilité à tout moment à l'utilisateur de cliquer sur un drapeau langue qui créera le cookies langdrapeau et donnera à la variable lang la valeur de langdrapeau...

    Votre avis?

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 227
    Points : 81
    Points
    81
    Par défaut
    Bon,
    je me suis lancé dans le code ci dessous et ça ne passe pas...
    Peut etre sont-ce mes if imbriqués...
    langdrapeau = cookies langue choisie sur click bouton
    lang= cookies langue du navigateur.
    Le cookies langdrapeau devant prendre le dessus sur celui du navigateur.

    testlang.php
    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
    <?php   
        if(isset($HTTP_COOKIE_VARS['langdrapeau'])) {  
           $lang = $HTTP_COOKIE_VARS['langdrapeau'];  
       } else {  
     
    	   if(isset($HTTP_COOKIE_VARS['lang'])) {  
           $lang = $HTTP_COOKIE_VARS['lang'];  
    	   } else { 
     
           // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur  
           $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);   
       }  
         }
       //script d'origine  
     
     
       switch( $lang ) // on fait les tests sur $lang
    {
        case "fr": // si $lang=fr
    		include('lang/fr-lang.php');   
        break;
        case "en": // si $lang=en
    		include('lang/en-lang.php');   
        break;
        case "ru": // si $lang=ru
    		include('lang/ru-lang.php');   
        break;
      default: // dans tous les autres cas
     
    echo 'autre cas';
     
        break;
    }
       //fin du script d'origine  
     
     
       //définition de la durée du cookie (1 an)  
       $expire = 365*24*3600;   
     
       //enregistrement du cookie au nom de lang  
    setcookie("lang", $lang, time() + $expire);?>
    [EDIT]
    Après test, je constate ceci:
    la page index qui contient les drapeaux est sous la racine.
    Le script php testlang.php, tout comme le fichier english.php qui est associé au bouton langueanglais.jpg et qui genere le cookie langdrapeau, se trouvent tout 2 sous le repertoire "/lang"

    Du coup mon navigateur me signale le cookie lang sous la racine et le cookie langdrapeau sous /lang

    En revanche, si je déplace la page index sous /lang et que je modifie le fichier testlang en supprimant le path /lang sur l'appel des includes, ca fonctionne...

Discussions similaires

  1. Gestion des langues sur mon site
    Par RicardoBxl dans le forum Débuter
    Réponses: 4
    Dernier message: 22/01/2013, 14h31
  2. Probleme de langue sur un site Joomla
    Par origon dans le forum Requêtes
    Réponses: 0
    Dernier message: 07/08/2012, 11h21
  3. acces multiple a un compte sur un site en php
    Par simoelasimo dans le forum Sécurité
    Réponses: 1
    Dernier message: 24/03/2011, 14h47
  4. Réponses: 3
    Dernier message: 19/02/2007, 20h32

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