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