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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Gettext - Problème de session


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Gettext - Problème de session
    Bonjour à tous,

    Voilà, j'utilise la méthode gettext pour internationaliser mon site web.
    Cela marche parfaitement, d'origine le site est en anglais et il est possible de le passer en Fr avec gettext. Sauf que quand je le mets en Français et que je change de page, le site revient en anglais.

    J'ai regardé plusieurs forum, et de base, enfin sans cookie, gettext devrait garder la session en cours.
    J'aurais aimer avoir votre avis sur ce problème

    Voici mon code qui initialise gettext:
    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
    <?php
    error_reporting(E_ALL | E_STRICT);
     
    // define constants
    define('PROJECT_DIR', realpath('./'));
    define('LOCALE_DIR', PROJECT_DIR .'/language');
    define('DEFAULT_LOCALE', 'en_US');
     
    require_once('assets/trad/gettext.inc');
     
    $supported_locales = array('en_US', 'fr_FR');
    $encoding = 'UTF-8';
     
    $locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
     
    // gettext setup
    T_setlocale(LC_MESSAGES, $locale);
    // Set the text domain as 'messages'
    $domain = 'bruno';
    bindtextdomain($domain, LOCALE_DIR);
    // bind_textdomain_codeset is supported only in PHP 4.2.0+
    if (function_exists('bind_textdomain_codeset')) 
      bind_textdomain_codeset($domain, $encoding);
    textdomain($domain);
     
    header("Content-type: text/html; charset=$encoding");
    ?>

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    à chaque changement de langue, tu devrais au rechargement de la page, envoyer un cookie avec pour contenu la langue sélectionnée.
    Puis, tu lis ce cookie pour conserver une langue donnée et adapter l'interface en conséquence.

  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par brunos31 Voir le message
    […] de base, enfin sans cookie, gettext devrait garder la session en cours.
    Là tu as un petit problème conceptuel : généralement les sessions reposent sur les cookies. Vérifie les directives session.use_* dans ton phpinfo.

    Dans le bout de code que tu as donné, il n'y a rien qui laisse deviner que tu utilises les sessions (peut-être dans gettext.inc ?). Par contre on voit que tu utilises $_GET['lang'] et cela t'oblige à ajouter ce paramètre lang à chacune des URL de la page qui pointent vers d'autres pages de ton site. C'est fastidieux, et je suppose que ce n'est pas comme ça que tu voulais que ça se passe.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour vos suggestions, effectivement cela va être fastidieux. Je vais opter pour une internationalisation via une requête simple pointant sur un fichier php, et par la suite je transformerais ça pour des requêtes sql pour que je puisse modifier le site online.

    Merci pour votre aide.

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. Problème de session
    Par kephy dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2005, 10h08
  3. Problème de session
    Par meda dans le forum Langage
    Réponses: 13
    Dernier message: 25/10/2005, 18h25
  4. problème de session en cours
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 14h36
  5. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 09h21

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