ZF2、I18n和动态区域设置在更新后不再工作


ZF2, I18n and dynamic locale not working anymore after update

在最终更新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中获取,如果设置在那里(在我的情况下)。不知道为什么它以前工作了这么长时间。。。