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

时间:2015-02-16 02:13:53

标签: php dynamic zend-framework2 locale zend-translate

最终更新Apache 2.2后 - > 2.4和php 5.4 - > 5.5视图中的翻译不再是动态的。我的应用程序是双语英语作为后备。 使用:: onBootstrap

设置语言环境,即通过用户的配置文件设置

类模块 {     公共功能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年。欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

发现问题。您必须将具有区域设置的转换程序设置为视图助手:

public function onBootstrap($events)
{

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

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

否则,如果在那里设置了区域设置,则从config.global中获取(如我的情况)。不知道为什么它之前有这么长时间......