用于poEdit的Form中的addMultiOption文本的ZEND trallations

时间:2011-11-22 20:55:32

标签: zend-framework zend-form zend-translate

我不知道为什么翻译不适用于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');

在我的bootstrap文件中我有这样的东西:

    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 :(得分:0)

让它按照我在评论中写的方式工作只需更改一行:

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

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

因为我没有看到我从注册表转换错误。它应该像在Bootstrap文件中那样是Zend_Translate,而不是像我那样翻译。

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