Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'utilise Zend_translate depuis plusieurs mois, cependant, je viens de tomber sur une situation bien particulière et j'aurais besoin de votre aide pour m'indiquer quels seraient la meilleure pratique ou comment est-ce que je pourrait contourner le problème sans être "Dirty".
Zend_translate est utilisé dans mon pour traduire mon texte en anglais et en français. Cependant, je suis sur une situation où certains termes (nom de produits) existent seulement en anglais mais doit se retrouver dans le texte français en italique (pour différencier). Je dois donc appliquer du formatage sur une partie de texte de une seule langue.
J'ai tout de suite essayé d'intégrer du Html dans mon dictionnaire de traduction:
//Fr: 'Services de dark fiber' => 'Services de <i>dark fiber</i>'
Cependant, Zend_translate converties mes balises en entités html ce qui ne mets pas mon texte en italique dans mon cas.
Pour du contenu normal, je pourrais bien faire une exeption et écrire une condition directement dans ma vue pour détecter la langue et faire écrire un autre text HTML mais ce serait la solution "Dirty". De plus, ce serait impossible dans mon cas car ceci provient de label de Zend_naviguation qui traduit automatique mes labels avec zend_translate:
Exemple: $pages = array( array( 'controller' => 'index', 'action' => 'index', 'route' => 'simple', 'label' => 'Services de dark fiber', <!-- AUTOMATIQUEMENT traduit --> 'uri' => '/fr', ... ... $container = new Zend_Navigation($pages);
J'aimerais donc savoir s'il existe une bonne alternative pour mon problème
Merci
Hors ligne
Pour les balises dans les chaînes traduites, j'ai créé mon propre view helper. Dans les chaînes traduites, je remplace les "<" et ">" par "[[" et "]]". Puis, dans mon helper, après traduction, je fais un simple str_replace :
class My_View_Helper_Translate extends Zend_View_Helper_Translate { /** * Traduit un message en remplaçant la syntaxe wiki * * @param string $messageid Id du message à traduire * @return mixed string|Zend_View_Helper_Translate le message traduit */ public function translate($messageid = null) { $translatedMessage = parent::translate($messageid); if (is_object($translatedMessage)) { return $translatedMessage; } // remplacement des caractères interdits en xml $translatedMessage = str_replace('[[', '<', $translatedMessage); $translatedMessage = str_replace(']]', '>', $translatedMessage); $translatedMessage = str_replace('$$', '&', $translatedMessage); return $translatedMessage; } }
Hors ligne
Pas fou comme solution !
C'est une bonne alternative quand même. Dommage qu'il n'y est pas une option on/off pour les entités html
Hors ligne
probitaille a écrit:
Pas fou comme solution !
C'est une bonne alternative quand même. Dommage qu'il n'y est pas une option on/off pour les entités html
A toi de la coder Pour moi, je viens de le faire grâce à ta remarque. Merci !
Hors ligne
Pages: 1