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 :

Zend_Translate & Zend_Cache (avec adaptateur TMX)


Sujet :

Autres composants PHP

  1. #1
    Membre à l'essai
    Développeur Web
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 13
    Points
    13
    Par défaut Zend_Translate & Zend_Cache (avec adaptateur TMX)
    Hello,
    je rencontre quelques problèmes depuis que j'ai mis en place le cache.

    Voilà un exemple d'un de mes fichiers TMX

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <tmx version="1.4">
        <header creationtoolversion="0.0"
                datatype="plaintext"
                segtype="sentence"
                adminlang="EN"
                srclang="*all*"            aussi testé avec srclang="en_US*" 
                o-tmf="abc"
                creationtool="SageTool" />
    <body>
        <tu tuid='new-order'>
            <tuv xml:lang="en_US"><seg>New Order</seg></tuv>
            <tuv xml:lang="fr_CH"><seg>Nouvelle Commande</seg></tuv>
            <tuv xml:lang="it_IT"><seg>Nuova Ordine</seg></tuv>
            <tuv xml:lang="de_DE"><seg>Neue Bestellung</seg></tuv>
        </tu>
        <tu tuid='last-order'>
            <tuv xml:lang="en_US"><seg>Last Order</seg></tuv>
            <tuv xml:lang="fr_CH"><seg>Dernière Commande</seg></tuv>
            <tuv xml:lang="it_IT"><seg>Ultima Ordine</seg></tuv>
            <tuv xml:lang="de_DE"><seg>Letzte Bestellung</seg></tuv>
        </tu>
       ....
    </body>
    </tmx>
    Ici le code sans cache:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     $locale =  new Zend_Locale('en_US');
     Zend_Registry::set('Zend_Locale', $locale);
     ...
     $translate  = new Zend_Translate('tmx', APP_ROOT . '/locale', $locale);
     
     $test = new Zend_Session_Namespace('session');
     $langLocale = isset($test->lang) ? $test->lang : $locale;
     $translate->setLocale($langLocale);
     
     Zend_Registry::set('Zend_Translate', $translate);
    Quand je veux afficher la liste des languages disponibles :
    (Zend_Debug::dump($translate->getAdapter()->getList())

    J'ai :

    array(4) {
    ["en_US"] => string(5) "en_US"
    ["fr_CH"] => string(5) "fr_CH"
    ["it_IT"] => string(5) "it_IT"
    ["de_DE"] => string(5) "de_DE"
    }

    mais avec le cache mis en place:

    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
     
     $frontendOptions = array(
                          'lifetime' => 3600, 
                          'automatic_serialization' => true
     );
     
     $cache = Zend_Cache::factory('Core',
                                                'Zend Platform',
                                                $frontendOptions);
     
     ... 
     
     $locale =  new Zend_Locale('en_US');
     Zend_Registry::set('Zend_Locale', $locale);
     
     ... 
     
     Zend_Translate::setCache($cache);
     
     $translate  = new Zend_Translate('tmx', APP_ROOT . '/locale', $locale);
     
     $test = new Zend_Session_Namespace('session');
     $langLocale = isset($test->lang) ? $test->lang : $locale;
     $translate->setLocale($langLocale);
     
     Zend_Registry::set('Zend_Translate', $translate);
    J'obtiens:

    array(4) {
    ["en_US"] => string(5) "en_US"
    }

    Après avoir relu plusieurs fois le manuel, je crois qu'il y a des "erreurs":

    ici


    Les fichiers TMX peuvent avoir plusieurs langues dans le même fichier. Toute autre langue incluse est ajoutée automatiquement, ainsi vous n'avez pas à appeler addLanguage().

    Si vous voulez avoir seulement les langues spécifiées de la source traduite, vous pouvez régler l'option defined_language à true. Avec cette option vous pouvez ajouter les langues souhaitées explicitement avec addLanguage(). La valeur par défaut pour cette option est d'ajouter toutes les langues.
    Cette méthode addLanguage() n'exist pas dans l'API !!!


    Le seul moyen que j'ai trouvé pour avoir toutes mes sources de traduction est d'ajouter les trois autres langues après avoir instancié l'objet Zend_Translate...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    $translate->getAdapter()->addTranslation(APP_ROOT . '/locale', 'fr_CH');
    $translate->getAdapter()->addTranslation(APP_ROOT . '/locale', 'de_DE');
    $translate->getAdapter()->addTranslation(APP_ROOT . '/locale', 'it_IT');
    ...
    Mais de cette manière le fichier est parcouru 4 fois au lieu de 1 seul (sans le cache).

    Je ne sais vraiment pas si cette erreur provient du framework ou si je ne rien compris à l'utilisation.

    Meilleures salutations,

    Nicolas

  2. #2
    Membre à l'essai
    Développeur Web
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 13
    Points
    13
    Par défaut c'est OK
    Le problème est réglé !!! Merci à ndesaleux, cela tournait effectivement autour de l'affectation des locales.

    donc voilà le code modifié:
    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
    ... 
    Zend_Locale::setCache($cache);
     
    $test = new Zend_Session_Namespace('session');
    $langLocale = isset($test->lang) ? $test->lang : new Zend_Locale('en_US'); 
     
    Zend_Registry::set('Zend_Locale', new Zend_Locale($langLocale));
     
    ...  
     
    Zend_Translate::setCache($cache);
     
    $translate  = new Zend_Translate('tmx', APP_ROOT . '/locale'); 
     
    Zend_Registry::set('Zend_Translate', $translate);
     
    ...
    Par contre ça règle pas le souci de la fameuse méthode addLanguage() citée dans le manuel et qui n'existe pas dans l'API

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

Discussions similaires

  1. linux avec adaptateur usb-->RS232 ftdi
    Par picall dans le forum Linux
    Réponses: 0
    Dernier message: 14/12/2012, 10h16
  2. Problème avec adaptateur HDMI/DVI..
    Par swOkzz dans le forum Périphériques
    Réponses: 5
    Dernier message: 19/01/2012, 18h51
  3. Zend_Translate et Zend_Cache, reinitialisation du cache
    Par Kunai dans le forum Autres composants
    Réponses: 2
    Dernier message: 19/02/2009, 21h48
  4. [0.9.2][Zend_Translate] Encodage des fichier TMX
    Par Yoteco dans le forum Autres composants
    Réponses: 5
    Dernier message: 10/05/2007, 18h51
  5. [Wifi] Connexion avec adaptateur USB
    Par ArHacKnIdE dans le forum Hardware
    Réponses: 6
    Dernier message: 21/11/2006, 20h54

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