Internationalization zend framework 2在onBootstrap中设置TextDomain
我成功地遵循了此说明,现在我的web是多语言的,不需要在“traslate()”调用中放入“locale”。 但是每次我调用TextDomain时,我都要把它放进去Internationalization zend framework 2在onBootstrap中设置TextDomain,internationalization,zend-framework2,translation,view-helpers,zend-app-bootstrap,Internationalization,Zend Framework2,Translation,View Helpers,Zend App Bootstrap,我成功地遵循了此说明,现在我的web是多语言的,不需要在“traslate()”调用中放入“locale”。 但是每次我调用TextDomain时,我都要把它放进去 $this->traslate("Hello", __NAMESPACE__) //where __NAMESPACE__ is the text domain. 我希望在onBootstrap方法中设置TextDomain,而不是在“traslate()”助手的每次调用中都设置它。 我尝试过setTextDomai
$this->traslate("Hello", __NAMESPACE__) //where __NAMESPACE__ is the text domain.
我希望在onBootstrap方法中设置TextDomain,而不是在“traslate()”助手的每次调用中都设置它。
我尝试过setTextDomain方法,但它不存在。
有人知道怎么做吗
onBootStrap代码如下所示:
.....//Code for define $locale.
$sm = $e->getApplication()->getServiceManager();
$translator = $sm->get('translator');
$translator->setLocale($locale);
$traslator->SetTextDomain($textdomain); //This line not work!!!!!
$translator->getPluginManager()->get('translate')->setTranslatorTextDomain('foo');
第一次没看到这个。通过DASPRIDS调用的正确函数是:
$this->plugin('translate')->setTranslatorTextDomain('module-b');
但是如果我看的没错,那是在视图脚本中。但是,从ServiceManager获取翻译器-我还没有对此进行测试-但请尝试以下操作:
.....//Code for define $locale.
$sm = $e->getApplication()->getServiceManager();
$translator = $sm->get('translator');
$translator->setLocale($locale);
$traslator->SetTextDomain($textdomain); //This line not work!!!!!
$translator->getPluginManager()->get('translate')->setTranslatorTextDomain('foo');
好的。我们前进了一步 第一个解决方案工作正常(视图解决方案),现在我的网页仅使用此帮助器参数生成文本,即配置定义的区域设置和文本域: $this->translate('HELLO') 但第二种解决方案不起作用。我不明白,因为当名称相同时,视图中接受相同的插件,而onBootstrap中不接受相同的插件 我将我的onBootstrap代码重写如下:
$translator = $e->getApplication()->getServiceManager()->get('translator');
$pm = $translator->getPluginManager(); //until here works ok.
$pm->get('translate'); //this throws an error message how if 'translate' not found.
这是复制粘贴吗?因为在这种情况下,它不起作用是有道理的;)
$traslator
=>$translator
和SetTextDomain()
=>SetTextDomain()
哦,对不起。这是一个写入错误(不要复制粘贴)。我还查看了zend API文档,但该方法不存在。