1

Ich habe versucht, Zend Translate verwenden, um übersetzte Menüpunkte für den Benutzer anzuzeigen.Coding Problem mit Zend Navigation mit Zend Übersetzen Spanisch in XMLTPX Datei Sonderzeichen

Es funktioniert gut, bis ich Sonderzeichen in die Übersetzungsdateien einführen.

ich instanziiert das Zend_Translate Objekt in meinem Bootstrap und geben sie als Übersetzerin in Zend_Navigation in:

$translate = new Zend_Translate(
    array('adapter' => 'tmx', 
      'content' => APPLICATION_PATH .'/languages/translation.tmx', 
      'locale' => 'es' 
     ) 
); 

$navigation->setUseTranslator($translate); 

ich mehrere verschiedene Adapter verwendet haben (Array TMX), um, wenn das zu sehen, einen Unterschied gemacht. Ich endete mit einer TMX-Datei auf, die ISO-8859-1 codiert wird unter Verwendung von (sonst, dass ein XML-Parser-Fehler auslöst, wenn Sie den Menüpunkt „administrar Applicación“ Einführung

<?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> 

Sobald ich das Menü im Layout angezeigt werden soll.:

echo $this->navigation()->menu(); 

Es werden alle Menüpunkte angezeigt werden ganz gut, mit Ausnahme der Verwendung von Sonderzeichen Es wird einfach leer sein

JETZT -.. Wenn ich PHP-UTF8-kodieren innerhalb des zend Framework Klasse ‚Menü verwenden 'was ich NICHT tun möchte:

Linie 215 in 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)); 
    } 
} 

Dann funktioniert es. Der Menüpunkt wird korrekt angezeigt und alles ist fröhlich.

Die Sache ist, ich möchte nicht die Bibliothek ändern.

Gibt es irgendeine Art von Kodierung in Zend Translate oder Zend Navigation, die ich nicht finde?

Bitte Hilfe!

Zend-Bibliothek Version: 1.11

Antwort

0

hatte ich ein ähnliches Problem: zend Form nicht wie ñ lateinische Zeichen angezeigt hat. Fügen Sie Ihrer _initView-Funktion in bootstrap.php Folgendes hinzu:

$view->setEncoding('iso-8859-1');