2011-11-22 25 views
0

我没有一个想法,为什么翻译不与Zend_Form工作。 我希望能够翻译选项的选项。 现在我有这样的事情:ZEND trandslations for addMultiOption text for poEdit

我的表单类:

(...) 

$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

+0

愚蠢的我再作翻译........我错过了,我得叫'要是Zend_Registry ::得到('Zend_Translate')'在bootstrap中被赋值,而不是'Zend_Registry :: get('translate')':)线程到​​colse – DarAss

+0

不能关闭。只需将您的答案发布为真实答案,并接受它以供将来的用户使用。 –

回答

0

,使其工作,我在评论中写道只需要改变行:

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

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

因为我没有看到我从注册表翻译错了。它应该像引导文件中的Zend_Translate一样,不像我那样翻译。

这是我的问题,解决翻译,现在我可以在表单文件:)