我不知道为什么翻译不适用于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
答案 0 :(得分:0)
让它按照我在评论中写的方式工作只需更改一行:
$this->translate = Zend_Registry::get('translate');
的
$this->translate = Zend_Registry::get('Zend_Translate');
因为我没有看到我从注册表转换错误。它应该像在Bootstrap文件中那样是Zend_Translate,而不是像我那样翻译。
这是我翻译问题的解决方案,现在我可以在表单文件中进行翻译:)