ZF2、I18n 和动态语言环境在更新后不再工作

ZF2, I18n and dynamic locale not working anymore after update

最终更新 Apache 2.2 -> 2.4 和 php 5.4 -> 5.5 后,视图中的翻译不再是动态的。我的应用程序是双语的,以英语为后备。 区域设置即通过用户的配置文件使用 ::onBootstrap

class 模块 { public 函数 onBootstrap($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') 中,它会起作用,但这不是重点。即使经过调试,我也无法确定问题的根源。它以 2 年多前的预期方式运作。欢迎任何帮助。

找到问题了。您必须将语言环境的翻译器设置为视图助手:

public function onBootstrap($events)
{

    ....
    $viewRenderer = $events->getApplication()->getServiceManager()->get('ViewRenderer');

    $plugIn = $viewRenderer->plugin('translate');
    $plugIn->setTranslator($translator, __NAMESPACE__);
    ...
}

否则,语言环境会从 config.global 那里获取(如我的情况)。不知道为什么它以前工作了这么久...