Bonjour à tous,
Je rencontre un petit soucis au niveau de la création d'un formulaire de login multilingue utilisant la librairie Zend_Framework. Ou plus précisément avec PoEdit.
Voilà une méthode de ma classe de création de formulaire bien entendu héritée de Zend_Form.
La variable $this->config contient un objet de type Zend_Config_Ini(). Le but de cette fonction est de lister tous les éléments du fichier de configuration (.ini) définissant le formulaire et de remplacer les labels initiaux par les labels traduits s'ils existent ($translate est un objet Zend_Translate, adapatateur gettext).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function translate($translate) { foreach($this->config->elements as $key => $value) { if($translate->isTranslated("usersLogin_" . ucfirst($key))) $this->username->setLabel($translate->translate("usersLogin_" . ucfirst($key))); } }
Cette fonction n'a aucun problème, je l'ai mise à des fins de compréhension. Le problème vient de PoEdit, il détecte automatiquement les chaines à traduire dans l'application mais n'arrive pas à détecter les chaines dynamiques comme celles retournées par ma fonction çi-dessus.
Exemple : dans mon fichier .ini je définit trois champs username, password, submit. Donc mes clés PoEdit souhaitées sont usersLogin_Username, usersLogin_Password, usersLogin_Submit... Seulement voilà, PoEdit ne semble pas "exécuter" le code et me retourne une clé unique usersLogin_. Inutile dans mon cas.
Je précise que j'ai aussi testé la boucle sans la condition afin d'être sûr que toutes les chaines soient traitées.
De même afin de tester ma fonction j'ai utilisé les clés souhaitées (usersLogin_***) dans une vue afin qu'elles soient détectées par PoEdit puis je les ait supprimées de mon application. Le changement se fait bien, ma fonction n'est donc pas en cause.
PoEdit est-il incapable de détecter les chaines dynamiques? Y-a-t'il un autre éditeur qui en serait capable? Peut-on ajouter manuellement une clé/entrée/id de traduction dans PoEdit? Dans ce cas est-il possible de les verrouiller afin qu'il ne passe pas en "Chaînes obsolètes" à chaque mise à jour du catalogue?
Merci pour votre aide,
Bonne journée,
Smiff.
Partager