ЗОНЫ на языке zEND для текста addMultiOption в форме для poEdit - PullRequest
0 голосов
/ 23 ноября 2011

У меня нет идеи, почему переводы не работают с 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');

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

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

1 Ответ

0 голосов
/ 23 ноября 2011

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

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

для

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

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

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

...