Internationalization zend framework 2在onBootstrap中设置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

我成功地遵循了此说明,现在我的web是多语言的,不需要在“traslate()”调用中放入“locale”。 但是每次我调用TextDomain时,我都要把它放进去

    $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文档,但该方法不存在。