Zend Framework 2 Translator,setLocale对任何事情都没有影响

时间:2014-05-05 15:12:58

标签: php localization zend-framework2 language-translation

我似乎浪费了几个小时试图找到一个简单问题的解决方案。 交易很简单,我希望能够动态地将语言环境设置为我的翻译服务,所以

$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')

总结一下:当从模块配置设置语言环境时,翻译器正常工作,将其设置在其他地方似乎没有任何效果。

任何帮助,提示,建议,指向解决方案的指针都会非常受欢迎。

提前致谢

1 个答案:

答案 0 :(得分:3)

我回答自己,因为这就是原因。 答案是: 由于某些原因,我对ZendFramework的理解远远超出我的理解,我的实例决定使用服务MvcTranslator而不是Translator,我对为什么它可能发生的想法指出没有安装php-intl,但这是一个盲目的猜测。

为后代:

$e->getApplication()->getServiceManager()->get('MvcTranslator')->setLocale('some_LOCALE');

那个像我预期的那样工作。