if(isset($shortLang) && preg_match("/[a-z]{2}?/i", $shortLang)) // если нашли в URL
{
if(isset($config['languages'][$shortLang]))
{
// Устанавливаю локаль и куки на 1 мес
$translator->setLocale($config['languages'][$shortLang]['locale']);
setcookie('lang', $shortLang, time()+2878400, '/', $e->getRequest()->getServer('HTTP_HOST'));
$e->getViewModel()->setVariables(array('lang' => $shortLang)); // устанавливаю в layout
}
}
else // если не нашли в URL, читаем сначала из кук
{
if(isset($cookies['lang']) && preg_match("/[a-z]{2}?/", strtolower($cookies['lang'])))
{
if(isset($config['languages'][$cookies['lang']]['locale'])) {
$translator->setLocale($config['languages'][$cookies['lang']]['locale']);
$e->getViewModel()->setVariables(array('lang' => $cookies['lang'])); // устанавливаю в layout
}
else {
$translator->setLocale($config['languages'][$acceptLang]['locale']);
$e->getViewModel()->setVariables(array('lang' => $acceptLang)); // устанавливаю в layout
}
}
else
{
$translator->setLocale($config['languages'][$acceptLang]['locale']); // ставлю из браузера
$e->getViewModel()->setVariables(array('lang' => $acceptLang)); // устанавливаю в layout
}
}
}
Добавлено через 01:07 сек.
Вызываю так
[php]
/**
* onBootstrap(MvcEvent $e) Этот метод слушатель (listeners) события bootstrap
* в рамках событийной модели ZF2
* инкапсулятор различных палагинов (сервисов) при автозагрузке
* @access public
* @param \Zend\Mvc\MvcEvent $e
* @return object
*/
public function onBootstrap(MvcEvent $e)
{
$app = $e->getApplication(); // Наше приложение
$sm = $app->getServiceManager(); // Сервис менеджер
$e = $app->getEventManager(); // Менеджер событий
$e->attach(MvcEvent:
VENT_ROUTE, array($this, 'initLocale'), 1); // локаль
}
[/php]