Отключить трансляцию для специальных контроллеров

#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), если имя_модуля / имя_контроллера равно «изображение». Спасибо.