我成功地遵循了这个link的说明,现在我的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!!!!!发布于 2012-10-26 02:57:01
好的。我们已经前进了一步。
第一个解决方案工作正常(视图解决方案),现在我的网页仅使用这个辅助参数来提取文本,即由配置定义的Locale和TextDomain:
$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.发布于 2012-10-25 16:23:36
第一次看错了。根据DASPRIDS Presentation about ZF2 I18N,要调用的正确函数是:
$this->plugin('translate')->setTranslatorTextDomain('module-b');不过,如果我没看错的话,那是在视图脚本中。然而,从ServiceManager获取翻译器-我还没有测试过-但尝试以下操作:
$translator->getPluginManager()->get('translate')->setTranslatorTextDomain('foo');https://stackoverflow.com/questions/13058427
复制相似问题