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

Zend Framework PHP Discussion :

Traduction des label de Zend_Navigation [ZF 1.9]


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de FERDIKAM
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2005
    Messages : 123
    Par défaut Traduction des label de Zend_Navigation
    Salut !
    Je viens de mettre en place le site internet de mon entreprise qui se présente en 2 langues (Français et Anglais).

    Mon menu a été crée par le composant Zend_Navigation à l'aide d'un fichier xml de la forme :

    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
     
    ...
    <nav>
            <presentation>
                <label>Présentation</label>
                <uri>#</uri>
                <pages>
                    <historique>
                        <label>Aperçu Historique</label>
                        <uri>/presentation/view/apercu-historique</uri>
                    </historique>
                    <statut>
                        <label>Statut Juridique</label>
                        <uri>/presentation/view/statut-juridique</uri>
                    </statut>
                 </pages>
          </presentation>
    ......
    </nav>
    Je ne sais comment traduire mon menu en Anglais.
    je vois dans la documentation qu'il faut utiliser cet helper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $helper->setTranslator($translator)
    Mais comment l'utiliser ?. Voici la méthode que j'utilise dans mon bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    protected function _initNavigation() {
            $this->bootstrap('layout');
            $layout = $this->getResource('layout');
            $view = $layout->getView();
            $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
     
            $navigation = new Zend_Navigation($config);
            $view->navigation($navigation);
        }

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    ferdikam,

    tu peux effectivement traduire ton menu, en utilisant le composant Zend_translate

    et surtout choisir ton adapter, en fonction de la façon dont tu veux traduire les éléments de ton site (paragraphes complet ou phrases courtes et mots)

    perso j'utilise tmx14.

    tout est écrit dans la doc

  3. #3
    Membre très actif
    Avatar de FERDIKAM
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2005
    Messages : 123
    Par défaut
    Oui mais comment ???

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Bonjour,

    Tout est bien expliqué dans la doc et très clair !!!! il faut la lire, rien de plus.

    Utilise TMX c'est le plus simple.

  5. #5
    Membre très actif
    Avatar de FERDIKAM
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2005
    Messages : 123
    Par défaut
    Citation Envoyé par freeseb74 Voir le message
    Bonjour,

    Tout est bien expliqué dans la doc et très clair !!!! il faut la lire, rien de plus.

    Utilise TMX c'est le plus simple.
    Excuse-moi , mais si je comprenais ce qui étais écrit dans la doc ou si elle était très clair comme tu le dis, je se serai pas là sur ce forum.

  6. #6
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    pour les traductions de mes formulaires, j'ai mis ceci dans mon bootstrap

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      protected function _initTraduction() {
     
            $locale = new Zend_Locale('fr');
            Zend_Registry::set('Zend_Locale', $locale);
     
            $fichier_traduction = APPLICATION_PATH . '/configs/traduction_fr.csv';
     
            $translate = new Zend_Translate('Csv', $fichier_traduction, 'fr');
            Zend_Registry::set('Zend_Translate', $translate);
        }

    et mon fichier de traduction :

    stringLengthTooShort;La valeur doit faire plus de %min% caractères
    stringLengthTooLong;La valeur doit faire moins de %max% caractères
    badCaptcha;Le code ne correspond pas
    ...
    Peut être peux tu t'en inspirer ?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Ferdikam,

    Il te faut un fichier application/languages/languages.tmx au format XML (encodage UTF-8 sans BOM), dont voici un exemple
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <tmx version="1.4">
      <header creationtool="XYZTool" creationtoolversion="1.0.0" segtype="sentence" o-tmf="abc" adminlang="fr-fr" srclang="fr-fr" datetype="winres"/>
      <body>
        <tu tuid="Français">
          <tuv xml:lang="en">
            <seg>French</seg>
          </tuv>
          <tuv xml:lang="fr">
            <seg>Français</seg>
          </tuv>
          <tuv xml:lang="de">
            <seg>Französisch</seg>
          </tuv>
        </tu>
        <tu tuid="contact">
          <tuv xml:lang="fr">
            <seg>contact</seg>
          </tuv>
          <tuv xml:lang="en">
            <seg>contact</seg>
          </tuv>
        </tu>
        <tu tuid="Téléphone">
          <tuv xml:lang="en">
            <seg>Phones</seg>
          </tuv>
          <tuv xml:lang="fr">
            <seg>Téléphone</seg>
          </tuv>
        </tu>
        <tu tuid="Accueil">
          <tuv xml:lang="fr">
            <seg>Accueil</seg>
          </tuv>
          <tuv xml:lang="en">
            <seg>Home</seg>
          </tuv>
          <tuv xml:lang="de">
            <seg>Heim</seg>
          </tuv>
        </tu>
      </body>
    </tmx>
    Selon ton application, tu peux soit écrire ce fichier à la main ou en automatique (construction avec DOMDocument) en s'appuyant sur une base de données que tu alimentes par une interface.

    Dans ton bootstrap (Zend_Application), ici choix de l'anglais en, mais il te faut gérer la langue en session car en fonction de l'utilisateur peut choisir sa langue ou auto comme ici ou Zend_Translate va automatique gérer la langue selon le browser.
    Tu peux également mettre l'objet $translate en cache.
    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
    /**
     * 
     */
    public function _initTranslate () {
      		
        // Déclaration de l'objet Zend_Translate
        $translate = new Zend_Translate ( 'tmx'
    				 , APPLICATION_PATH. '/languages/languages.tmx'
    				  , 'auto'
    				);
      		
    
    Zend_Registry::set('Zend_Translate', $translate);									
      		
     }//Eof:: initTransalate
    Ailleurs quand tu veux rendre la vue du menu
    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
     
    public function menuAction () {
     
    	// Options pour rendre mon menu
    	$options = array(
      		'maxDepth' => '5'	// Jusqu'à mon 5ème niveau
    	);
     
    	$this->view->navigation()->setTranslator(Zend_Registry::get('Zend_Translate')); 
     
    	$menu = $this->view->navigation()
    						->menu()
    						->renderMenu(null, $options)
    						;
     
    	// Assignation des mes différents éléments à ma vue
    	$this->view->menu = $menu;
     
    }
    Voilà pour les bases, fait un essai, après on verra comment faire pour détecter la locale du navigateur ou permettre le choix de la langue.

    EDIT : Il faut utiliser la clé Zend_Translate lors de l'ajout de l'objet instance de Zend_Translate dans le registre, car c'est une clé qui est utilisée par défaut par d'autres composants qui en ont besoin.

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

Discussions similaires

  1. [Lex/Yacc] Aide traduction des structures de contrôle
    Par pelo68 dans le forum Générateurs de compilateur
    Réponses: 2
    Dernier message: 07/12/2010, 10h26
  2. création des labels de traduction
    Par Jcpan dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2009, 17h06
  3. Traduction des labels textes de JFileChooser
    Par Razgriz dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 17/09/2008, 17h55
  4. [VB6] Des labels qui réagissent à la souris
    Par murielle dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/10/2002, 14h19

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