Переводы ZEND для текста addMultiOption в форме для poEdit

Я понятия не имею, почему переводы не работают в Zend_Form. Я хотел бы иметь возможность переводить параметры для выбора. На данный момент у меня есть что-то вроде этого:

мой класс формы:

(...)

$this->translate = Zend_Registry::get('translate');
Zend_Form::setDefaultTranslator( Zend_Registry::get('translate') );

(...)
     $select = new Zend_Form_Element_Select('select');
     // $select->addMultiOption('0', $this->translate('Aktywny'));
     $select->addMultiOption('0', $this->translate->_('Aktywny'));
     $select->addMultiOption('1', 'Nieaktywny');

в моем файле начальной загрузки у меня есть что-то вроде этого:

    protected function _initTranslate()
{
    Zend_Loader::loadClass('Zend_Translate');
    Zend_Loader::loadClass('Zend_Registry');

    $translate = new Zend_Translate('gettext', APPLICATION_PATH.'/languages',
                                    'browser',
                                    array('scan' => Zend_Translate::LOCALE_FILENAME));

            //changing language and setting it to session if changed                
    $session = new Zend_Session_Namespace('jezyk');
    if(isset($session->language)) {
        $translate->setLocale($session->language);
    } else
        $translate->setLocale('pl');


    $registry = Zend_Registry::getInstance();
    $registry->set('Zend_Translate', $translate);   

}

и он отлично работает для контроллеров, файлов phtml и плагинов, где я вызываю его

$this->translate('string to translate');

и в плагинах

$this->view->translate('string to translate');

но эти методы не будут работать в форме. Выдает исключение:

Предупреждение: Исключение, обнаруженное формой: для ключа «перевести» не зарегистрировано запись. Трассировка стека: # 0


person DarAss    schedule 22.11.2011    source источник
comment
опять я глупый........ я пропустил, что мне нужно вызвать Zend_Registry::get('Zend_Translate'), так как в начальной загрузке было назначено, а не Zend_Registry::get('translate') :) поток для закрытия   -  person DarAss    schedule 23.11.2011
comment
Не закрыть. Просто опубликуйте свой ответ как реальный ответ и примите его для будущих пользователей.   -  person Aurelio De Rosa    schedule 23.11.2011


Ответы (1)


чтобы заставить его работать, как я написал в комментарии, просто нужно изменить строку:

$this->translate = Zend_Registry::get('translate');

за

$this->translate = Zend_Registry::get('Zend_Translate');

потому что я не видел, что я неправильно переводил из реестра. Это должен быть Zend_Translate, как в файле Bootstrap, а не перевод, как я.

И это решение моих проблем с переводом, и теперь я могу делать переводы в файлах форм :)

person DarAss    schedule 23.11.2011