<?php
namespace TransBundle\Listener;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
class LocaleListener
{
private $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function onKernelRequest(GetResponseEvent $event)
{
if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
return;
}
$request = $event->getRequest();
$route = $request->attributes->get('_route');
if (substr($route, 0, 1) == '_' || in_array($this->container->getParameter("kernel.environment"), ['docker_admin', 'dev_admin', 'prod_admin'])) {
$request->setLocale('ru');
$this->container->get('translator')->setLocale('ru');
return;
}
if ($locale = $request->cookies->get($this->container->getParameter('lang_cookie_name'))) {
$request->setLocale($locale);
} else if ($locale = $request->getSession()->get('_locale')) {
$request->setLocale($locale);
}
if ($locale = $request->get("site_checker_api_language")) {
$request->setLocale($locale);
} else if ($locale = $request->getSession()->get('_locale')) {
$request->setLocale($locale);
}
}
}