我似乎浪费了过去几个小时试图找到一个看似简单的问题的解决方案。事情很简单,我希望能够动态地为我的Translator服务设置区域设置,所以
$this->translate('some string')
在我的视图中使用将返回一个正确翻译的字符串。到目前为止,我找到的每个解决方案都指向一个简单的代码片段in Module::onBoostrap()
$e->getApplication()->getServiceManager()->get('Translator')->setLocale('some_LOCALE');
它没有错误,没有警告,运行顺利,只有一个异常,它不影响任何东西,上面的行(翻译助手)仍然使用在module.config.php中定义的区域设置,我已经尝试了无数的一百万种方法,试图通过MVC的不同部分设置区域设置(上帝禁止我甚至试图直接在我的视图中使用:
$this->plugin('translate')->getTranslator()->setLocale('some_LOCALE')
综上所述:当从模块配置中设置locale时,translator可以正常工作,在其他地方设置它似乎没有任何影响。
任何帮助、提示、建议、指向解决方案的指针都将非常感谢。
Thanks in advance
我自己回答,因为这就是原因。答案是:由于一些原因,这远远超出了我对ZendFramework的理解,我的实例决定使用服务MvcTranslator而不是Translator,我的想法是为什么它可能发生指向没有安装php-intl,但这是一个盲目的猜测。
留给后代:
$e->getApplication()->getServiceManager()->get('MvcTranslator')->setLocale('some_LOCALE');