ZF2, I18n и динамическая локаль больше не работают после обновления

После окончательного обновления 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 лет назад. Любая помощь приветствуется.


person Sam Mumm    schedule 16.02.2015    source источник


Ответы (1)


Нашел проблему. Вы должны установить переводчик с локалью для помощника представления:

public function onBootstrap($events)
{

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

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

В противном случае локаль берется из config.global, если она там установлена ​​(как в моем случае). Не понимаю, почему раньше так долго работало...

person Sam Mumm    schedule 16.02.2015