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

Autres composants PHP Discussion :

Problème de chargement des traductions avec gettext


Sujet :

Autres composants PHP

  1. #1
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut Problème de chargement des traductions avec gettext
    Bonjour à tous,
    J'utilise Zend_Translate et gettext pour l'internationalisation d'un site et à ma grande surprise tous les textes traduits ne sont pas intégrés. J'ai beau vider le cache, renvoyer mon fichier .mo mais rien n'y fait... Mon fichier est bien compilé par PO EDIT je n'ai aucunes erreurs.
    Voilà mon fichier Bootstrap si quelqu'un remarque quelque chose :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        private $_acl = null;
        private $_auth = null;
        private $_role = null;
     
        protected function _initView()
        {
            error_reporting(E_ERROR | E_WARNING | E_PARSE);
            $view = new Zend_View();
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
                'ViewRenderer'
                );
                $viewRenderer->setView($view);
                return $view;
        }
     
        protected function _initAutoload()
        {
            Zend_Controller_Action_HelperBroker::addPrefix('Sheraf_Controller_Action_Helpers');
            new Zend_Application_Module_Autoloader(array(
                    'namespace' => 'Sheraf',
                    'basePath'  => APPLICATION_PATH,
            ));
        }
     
        protected function _initCache()
        {
            $aFrontendConf = array ('lifetime' => 345600, 'automatic_seralization' => true);
            $aBackendConf = array ('cache_dir' => APPLICATION_PATH . '/cache/');
            $oCache = Zend_Cache::factory('Core','File',$aFrontendConf,$aBackendConf);
            $oCache->setOption('automatic_serialization', true);
            Zend_Locale::setCache($oCache);
            Zend_Translate::setCache($oCache);
        }
     
        protected function _initSession()
        {
            Zend_Registry::set('langue', $session = new Zend_Session_Namespace('langue'));
            Zend_Registry::set('session', $session = new Zend_Session_Namespace('session'));
            Zend_Registry::set('inscription', $session = new Zend_Session_Namespace('inscription'));
            Zend_Controller_Front::getInstance()->registerPlugin(new Sheraf_Controller_Plugin_Session());
        }
     
        public function _initTranslate()
        {
            $langue = Zend_Registry::get('langue');
            if(is_null($langue->data))
            {
                $locale = new Zend_Locale('fr');
            }
            else
            {
                $locale = $langue->data;
            }
     
            Zend_Registry::set('Zend_Locale', $locale);
            $translate = new Zend_Translate('Gettext', APPLICATION_PATH . '/languages/lang_'.$locale.'.mo', $locale, array('disableNotices' => true,'logUntranslated' => false));
            Zend_Registry::set('Zend_Translate', $translate);
            $translateForm = new Zend_Translate('array', APPLICATION_PATH . '/languages/validate.php');
            $translateForm->setLocale($locale);
            Zend_Form::setDefaultTranslator($translate);
        }
     
        protected function _initAcl()
        {
            $this->_acl = new Sheraf_Acl(APPLICATION_PATH . '/configs/acl.ini');
            Zend_Registry::set('acl', $this->_acl);
     
            $this->_auth = Zend_Auth::getInstance();
            Zend_Registry::set('auth', $this->_auth);
     
            if ($this->_auth->hasIdentity()) $this->_role = $this->_auth->getStorage()->read()->Role;
            else $this->_role = 'Guest';
            Zend_Registry::set('role', $this->_role);
     
            Zend_Controller_Front::getInstance()->registerPlugin(new Sheraf_Controller_Plugin_Auth($this->_acl, $this->_auth));
        }
     
        protected function _initDb ()
        {
            if ($this->hasPluginResource('db')) {
                $resource = $this->getPluginResource('db');
                $db = $resource->init();
                $db->query("SET NAMES 'UTF8'");
                return $db;
            }
        }
    }

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tu as bien redémarré apache ?

    Les fichier gettext sont mis en cache par apache , du coup il peut arrive qu'il te serve une version ancienne du fichier.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    Oui en local j'ai redémarré Apache mais par contre en ligne je ne pense pas pouvoir le redémarrer car je suis en mutualisé...

  4. #4
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    je comprends vraiment pas, d'habitude j'ai pas de problème avec les traductions et Zend_Translate en plus là ça n'a aucun sens... je me demande si ça ne vient pas de l'utilisation du cache car avant je ne l'utilisais pas. Je l'ai utilisé ici car je me sers de Zend_Date et il me faisait une erreur si je ne passait pas par le cache ?
    J'ai beau cherché et je ne vois pas pourquoi il me traduit plus une chaîne qu'une autre.

  5. #5
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    Lorsque je trace mon objet translate je remarque que beaucoup de chaîne ont semble t'il des problèmes d'encodages :
    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
    50
     
    object(Zend_Translate)#7 (1) {
      ["_adapter:private"] => object(Zend_Translate_Adapter_Gettext)#5 (8) {
        ["_bigEndian:private"] => bool(false)
        ["_file:private"] => resource(78) of type (stream)
        ["_adapterInfo:private"] => array(0) {
        }
        ["_data:private"] => array(0) {
        }
        ["_automatic:private"] => bool(false)
        ["_routed:private"] => array(0) {
        }
        ["_options:protected"] => array(12) {
          ["clear"] => bool(false)
          ["content"] => string(53) "/homez.46/bmaflncy/www/racemtb/application/languages/"
          ["disableNotices"] => bool(false)
          ["ignore"] => string(1) "."
          ["locale"] => string(2) "en"
          ["log"] => NULL
          ["logMessage"] => string(49) "Untranslated message within '%locale%': %message%"
          ["logUntranslated"] => bool(false)
          ["reload"] => bool(false)
          ["route"] => NULL
          ["scan"] => string(53) "/homez.46/bmaflncy/www/racemtb/application/languages/"
          ["tag"] => string(14) "Zend_Translate"
        }
        ["_translate:protected"] => array(1) {
          ["en"] => array(18) {
            [" au "] => string(2) "to"
            ["Administrateur"] => string(13) "Administrator"
            ["Ajouter une compétition"] => string(10) "Add a race"
            ["Contactez nous"] => string(10) "Contact us"
            ["Inscription fermée"] => string(19) "Subscription closed"
            ["Inscription ouverte du : "] => string(25) "Subscription open from : "
            ["Liste des administrateurs"] => string(21) "Administrator listing"
            ["Liste des compétitions"] => string(12) "Race listing"
            ["Modifier"] => string(6) "Update"
            ["Mot de passe"] => string(8) "Password"
            ["Mot de passe *"] => string(10) "Password *"
            ["[Ajouter un administrateur]"] => string(22) "[Add an administrator]"
            ["[Ajouter un competiteur]"] => string(12) "[Add a race]"
            ["[Ajouter une catégorie]"] => string(14) "Add a category"
            ["[Ajouter une compétition]"] => string(12) "[Add a race]"
            ["[Exporter les compétiteurs]"] => string(15) "[Export racers]"
            ["[Modifier]"] => string(8) "[Update]"
            ["[modifier]"] => string(8) "[update]"
          }
        }
      }
    }

  6. #6
    Membre du Club Avatar de erehcab
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 215
    Points : 57
    Points
    57
    Par défaut
    J'ai enfin réussi en utilisant cette solution :

    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
     
        public function _initTranslate()
        {
            $langue = Zend_Registry::get('langue');
            if(is_null($langue->data))
            {
                $locale = new Zend_Locale('fr');
            }
            else
            {
                $locale = $langue->data;
            }
            Zend_Registry::set('Zend_Locale', $locale);
    	$translate = new Zend_Translate('gettext', APPLICATION_PATH . '/languages/', null, array('scan' => APPLICATION_PATH . '/languages/'));
    	$translate->addTranslation(APPLICATION_PATH . '/languages/lang_'.$locale.'.mo', $locale);
            Zend_Registry::set('Zend_Translate', $translate);
    	$translateForm = new Zend_Translate('array', APPLICATION_PATH . '/languages/', null, array('scan' => APPLICATION_PATH . '/languages/'));
    	$translateForm->addTranslation(APPLICATION_PATH . '/languages/validate.php', $locale);
            Zend_Validate_Abstract::setDefaultTranslator($translateForm);
            Zend_Form::setDefaultTranslator($translate);
        }
    Toute la traduction est bien prise en compte mais par contre il ne me prend plus mon fichier de traduction des messages d'erreurs de formulaire...
    J'ai essayé de lui donner avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Zend_Validate_Abstract::setDefaultTranslator($translateForm);
    ou

    est un objet Zend_Translate différent de l'objet gérant la traduction principal mais rien n'y fait. Cela fonctionnait bien lorsque je donnait ce même objet à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Zend_Form::setDefaultTranslator();
    mais le problème c'est que les labels de mes formulaires ne sont du coup plus traduits...

    si quelqu'un à une idée je suis preneur !

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/11/2013, 15h45
  2. Problème de chargement des données avec hibernate
    Par nasnet dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 02/07/2013, 17h46
  3. Problème de chargement des tuiles avec API Flash
    Par cmail dans le forum IGN API Géoportail
    Réponses: 13
    Dernier message: 31/03/2011, 22h46
  4. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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