在最终更新Apache 2.2->2.4和php 5.4->5.5之后,视图中的翻译不再是动态的。我的应用程序是双语的,作为后备。区域设置由用户配置文件使用:onBootstrap 设置
class模块{Bootstrap上的公共函数($events){
$translator = $events->getApplication()->getServiceManager()->get(
'translator'
);
$authSvc = $events->getApplication()->getServiceManager()->get('Zend'Authentication'AuthenticationService');
$locale = $this->getLocale($authService);
$translator->setLocale(
'Locale::acceptFromHttp($locale)
);
}
更新Apache和php后,翻译仍然有效,但视图中的翻译使用系统中的默认区域设置。如果我把语言环境放在$this->translate('MY TXT',NAMESPACE,'en_US')中,它可以工作,但这不是重点。即使在调试之后,我也无法确定问题的根源。它按照两年多前设想的方式运作。欢迎任何帮助。
发现问题。您必须为视图助手设置带有区域设置的翻译器:
public function onBootstrap($events)
{
....
$viewRenderer = $events->getApplication()->getServiceManager()->get('ViewRenderer');
$plugIn = $viewRenderer->plugin('translate');
$plugIn->setTranslator($translator, __NAMESPACE__);
...
}
否则,区域设置将从config.global中获取,如果设置在那里(在我的情况下)。不知道为什么它以前工作了这么长时间。。。