#zend-framework #zend-translate
#zend-framework #zend-перевести
Вопрос:
есть ли возможность отключить языковой переводчик для контроллера? В этом примере контроллер доставляет только изображения.
$this->_helper->layout->disableLayout();
$this->_helper->translator ???
ТИА
Мэтт
Комментарии:
1. Как вы инициализируете переводчик? Установив его в Zend_Registry?
2. инициализация переводчика в начальной загрузке с помощью «registerPlugin» и с помощью Zend_Registry::set(‘Zend_Translate’, $translate);
Ответ №1:
Если вы инициализируете транслятор в bootstrap, включив его в реестр Zend, возможно, вы могли бы просто отменить Zend_Translate
настройку записи в нем из init()
метода контроллера, который вызывается после начальной загрузки.
Сброс одного значения в Zend_Registry
не так тривиально. Короче говоря, вам нужно сделать что-то вроде этого:
$registry = Zend_Registry::getInstance();
unset($registry['Zend_Translate']);
Надеюсь, это поможет,
Комментарии:
1. Моя проблема здесь в том, что я получаю сообщение об ошибке «нет перевода для доступного языка xx». Добавление пустого файла перевода для этого контроллера сделало это, но я подумал, что это можно сделать намного проще?
2. Возможно, какой-то элемент вашего сайта уже зарегистрировал переводчик для его использования до того, как вы сбросили ссылку на него в
init
методе контроллера. Возможно, отключение его немного раньше (например, в плагине контроллера) может помочь.3. Спасибо! Я отключил его в LanguagePlugin (Zend_Controller_Plugin_Abstract), если имя_модуля / имя_контроллера равно «изображение». Спасибо.