J'ai tenté d'utiliser Zend Translate pour afficher les éléments de menu traduits pour l'utilisateur.Problème de codage avec Zend Navigation en utilisant Zend Translate Spanish dans XMLTPX File Special Characters
Cela fonctionne bien jusqu'à ce que j'introduise des caractères spéciaux dans les fichiers de traduction.
J'instancier l'objet Zend_Translate dans mon bootstrap et passer en tant que traducteur dans Zend_Navigation:
$translate = new Zend_Translate(
array('adapter' => 'tmx',
'content' => APPLICATION_PATH .'/languages/translation.tmx',
'locale' => 'es'
)
);
$navigation->setUseTranslator($translate);
Je l'ai utilisé plusieurs adaptateurs différents (tableau, CGX) afin de voir si cela fait une différence. J'ai fini avec un fichier TMX qui est codé en utilisant ISO-8859-1 (sinon que génère une erreur d'analyse XML lors de l'introduction l'élément de menu « administrar Applicación »
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header creationtoolversion="1.0.0" datatype="tbx" segtype="sentence"
adminlang="en" srclang="en" o-tmf="unknown"
creationtool="XYZTool" >
</header>
<body>
<tu tuid='link_signout'>
<tuv xml:lang="en"><seg>Sign Out</seg></tuv>
<tuv xml:lang="es"><seg>Salir</seg></tuv>
</tu>
<tu tuid='link_signin'>
<tuv xml:lang="en"><seg>Login</seg></tuv>
<tuv xml:lang="es"><seg>Acceder</seg></tuv>
</tu>
<tu tuid='Manage Application'>
<tuv xml:lang="en"><seg>Manage Application</seg></tuv>
<tuv xml:lang="es"><seg>Administrar Applicación</seg></tuv>
</tu>
</body>
</tmx>
Une fois que j'afficher le menu dans la mise en page.:
echo $this->navigation()->menu();
Il affiche tous les éléments de menu très bien, sauf celui en utilisant des caractères spéciaux Il sera tout simplement vide
MAINTENANT -.. Si je UTF8 encode de PHP à l'intérieur de la classe zend framework « Menu 'que je ne veux pas faire:
Ligne 215 à Zend_View_Helper_Navigation_Menu:
if ($this->getUseTranslator() && $t = $this->getTranslator()) {
if (is_string($label) && !empty($label)) {
$label = utf8_encode($t->translate($label));
}
if (is_string($title) && !empty($title)) {
$title = utf8_encode($t->translate($title));
}
}
Ensuite, il fonctionne. L'élément de menu s'affiche correctement et tout est joyeux.
La chose est, je ne veux pas modifier la bibliothèque.
Existe-t-il une sorte de paramètre d'encodage dans zend translate ou zend navigation que je ne trouve pas?
Aidez-nous!
Bibliothèque Zend Version: 1.11