首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zend framework 2在onBootstrap中设置TextDomain

zend framework 2在onBootstrap中设置TextDomain
EN

Stack Overflow用户
提问于 2012-10-25 05:56:00
回答 2查看 1.6K关注 0票数 0

我成功地遵循了这个link的说明,现在我的web是多语言的,而不需要在"traslate()“调用中放入"locale”。但每次调用TextDomain时,我都必须放入它。

代码语言:javascript
复制
    $this->traslate("Hello", __NAMESPACE__) //where __NAMESPACE__ is the text domain.

我希望在onBootstrap方法中设置TextDomain,而不是将其放在每次调用"traslate()“帮助器中。我尝试过setTextDomain方法,但它并不存在。有人知道怎么做吗?

onBootStrap代码如下:

代码语言:javascript
复制
   .....//Code for define $locale.
   $sm = $e->getApplication()->getServiceManager();
   $translator = $sm->get('translator');
   $translator->setLocale($locale);
   $traslator->SetTextDomain($textdomain);   //This line not work!!!!!
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-26 02:57:01

好的。我们已经前进了一步。

第一个解决方案工作正常(视图解决方案),现在我的网页仅使用这个辅助参数来提取文本,即由配置定义的Locale和TextDomain:

$this->translate('HELLO');

但第二种解决方案不起作用。我不明白,因为相同的插件在视图中被接受,而当名称相同时不在onBootstrap中被接受。

我重写了下面的onBootstrap代码:

代码语言:javascript
复制
    $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.
票数 0
EN

Stack Overflow用户

发布于 2012-10-25 16:23:36

第一次看错了。根据DASPRIDS Presentation about ZF2 I18N,要调用的正确函数是:

代码语言:javascript
复制
$this->plugin('translate')->setTranslatorTextDomain('module-b');

不过,如果我没看错的话,那是在视图脚本中。然而,从ServiceManager获取翻译器-我还没有测试过-但尝试以下操作:

代码语言:javascript
复制
$translator->getPluginManager()->get('translate')->setTranslatorTextDomain('foo');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13058427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档