1

Я пытаюсь использовать Zend Translate для отображения переведенных пунктов меню пользователю.Проблема с кодировкой Zend с помощью Zend Translate Испанский в файле XMLTPX Специальные символы

Он отлично работает, пока я не вводит специальные символы в файлы перевода.

Я экземпляр Zend_Translate объекта в моей начальной загрузки и передать его в качестве переводчика в Zend_Navigation:

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

$navigation->setUseTranslator($translate); 

Я использовал несколько различных адаптеров (массив, TMX), чтобы увидеть, если это имело значение. Я в конечном итоге с файлом TMX, который кодируется с помощью ISO-8859-1 (в противном случае, что выдает ошибку XML разбора при введении пункта меню «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> 

После того, как отобразить меню в макете.:

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

Он будет отображать все пункты меню просто отлично, за исключением того, с помощью специальных символов Это будет просто пустым

сейчас -.. Если я использую UTF8-закодировать РНР внутри каркаса Зенд класса «Меню ', который я НЕ хочу делать:

Line 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)); 
    } 
} 

Затем он работает. Элемент меню отображается правильно, и все радостно.

Дело в том, что я не хочу изменять библиотеку.

Есть ли какая-то кодировка в zend translate или zend, которую я не нахожу?

Пожалуйста, помогите!

Zend Library Версия: 1,11

ответ

0

Я имел родственную задачу: Зенд форма не показывать латинские символы, такие как ñ. Попробуйте добавить следующее к функции _initView в bootstrap.php:

$view->setEncoding('iso-8859-1'); 
Смежные вопросы