Php Zend框架菜单翻译
我正在开发一个多语言web应用程序。我有来自xml文件的菜单元素,但我不知道如何翻译菜单。另一方面,我可以在视图中翻译网站的正常内容,如下所示:Php Zend框架菜单翻译,php,zend-framework,navigation,Php,Zend Framework,Navigation,我正在开发一个多语言web应用程序。我有来自xml文件的菜单元素,但我不知道如何翻译菜单。另一方面,我可以在视图中翻译网站的正常内容,如下所示: <?=$this->translate->_('Members Login') echo $this->navigation()->menu()->setUlClass('nav_header'); 然后在视图中按如下方式编写菜单: <?=$this->translate->_('Members
<?=$this->translate->_('Members Login')
echo $this->navigation()->menu()->setUlClass('nav_header');
然后在视图中按如下方式编写菜单:
<?=$this->translate->_('Members Login')
echo $this->navigation()->menu()->setUlClass('nav_header');
我不知道如何翻译菜单
有什么评论吗
提前感谢Zend_Translate应该会有所帮助。看看这里:当您使用
Zend_导航时,标题和标签可以自动翻译。退房只需选择您的助手并设置Zend\u Translate
编辑:首先,在注释中的代码中,您做错了两件事:
1.使用setUseTranslator
并将translator对象传递给它。但是setUseTranslator
采用描述是否使用转换器的布尔值。您可以使用setTranslator
方法设置转换器:
$view->navigation($navContainer)
//RB setUseTranslator is unnecessary, because it's true by deafult
->setTranslator(Zend_Registry::get('TranslationObject'));
二,。在使用链接之前,请确保该方法返回所需的对象:
$view->navigation($navContainer)
->setAcl($this->_acl)
->setRole(($this->_auth->getStorage()->read())?$this->_auth->getStorage()->read()->role:'guest')
->findAllBy('class', 'nav_header'); //that returns an array, not Zend_Navigation object!
所以你不能这样做:
$navigation->findAllBy('class', 'nav_header')
->setUseTranslator(Zend_Registry::get('TranslationObject')); //wrong methid here, should be setTranslator, as mentioned above
在$navigation
对象上调用setTranslator
,它应该可以工作 正如我在我的引导文件中所写的,我一直在使用zend_translate。问题在于菜单转换。因为菜单内容不是常量值,它动态地来自XML。这并不重要,菜单项来自XML。您将解析后的文件传递到构造函数Zend_Navigation
,因此它应该能够获取菜单标签并对其进行翻译。Hi@singles,我在引导文件中使用过setUseTranslator,如下所示:code
$view->Navigation($navContainer)->setAcl($this->acl)->setRole($this->auth->getStorage()->read())?$this->_auth->getStorage()->read()->role:'guest')->findAllBy('class','nav_header')->setUseTranslator(Zend_Registry::get('TranslationObject');TranslationObject用于我的XML语言内容文件。我将它保存在注册表中,以便使用它。请重新格式化代码或更好地编辑问题。你没有写,这有用吗;)谢谢@single,我已经按照你的指示做了,现在可以用了:)