После, наконец, обновления 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 лет назад. Любая помощь приветствуется.
Нашел проблему. Вы должны установить переводчик с языковым стандартом для помощника вида:
public function onBootstrap($events)
{
....
$viewRenderer = $events->getApplication()->getServiceManager()->get('ViewRenderer');
$plugIn = $viewRenderer->plugin('translate');
$plugIn->setTranslator($translator, __NAMESPACE__);
...
}
В противном случае локаль берется из config.global, если она там установлена (как в моем случае). Понятия не имею, почему это работало раньше так долго …
Других решений пока нет …