我成功地遵循了此link的说明,现在我的网络是多语言,而不需要在“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!!!!!
答案 0 :(得分:1)
第一次没看错。通过DASPRIDS Presentation about ZF2 I18N,正确的调用函数是:
$this->plugin('translate')->setTranslatorTextDomain('module-b');
虽然如果我正确地看到了这一点,那就是在视图脚本中。从ServiceManager获取翻译器 - 我还没有测试过 - 但请尝试以下方法:
$translator->getPluginManager()->get('translate')->setTranslatorTextDomain('foo');
答案 1 :(得分:0)
奥基。我们已经迈出了一步。
第一个解决方案正常(视图解决方案),现在我的网页仅使用此帮助程序参数来描述文本,即由配置定义的Locale和TextDomain:
$这 - >翻译( '你好');
但第二种解决方案不起作用。我不明白,因为视图中接受相同的插件,而当名称相同时,不在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.