Я пытался использовать Zend Translate для отображения переведенных пунктов меню пользователю.
Работает нормально, пока я не введу специальные символы в файлы перевода.
Я создаю экземпляр объекта 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 при введении пункта меню «Применение администратора».
<?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();
Он будет отображать все пункты меню очень хорошо, за исключением одного с использованием специальных символов. Он будет просто пустым.
СЕЙЧАС - если я использую PHP-кодирование UTF8 внутрикласс Zend Framework 'Menu', который я НЕ хочу делать:
Строка 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));
}
}
Тогда он работает. Пункт меню отображается правильно и все радостно.1021 *
Дело в том, что я не хочу изменять библиотеку.
Существует ли какая-либо настройка кодирования в Zend Translate или Zend Navigation, которую я не нахожу?
Пожалуйста, помогите!
Zend Library Версия: 1.11