<?php
declare(strict_types=1);
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class LocaleSubscriber implements EventSubscriberInterface
{
private string $defaultLocale;
/**
* LocaleSubscriber constructor.
* @param string $defaultLocale
*/
public function __construct(string $defaultLocale = 'en')
{
$this->defaultLocale = $defaultLocale;
}
public function onKernelRequest(RequestEvent $event): void
{
$request = $event->getRequest();
$setLanguage = null;
foreach ($request->getLanguages() as $language) {
if (null === $setLanguage) {
switch ($language) {
case 'de':
case 'pl':
// case 'en':
$setLanguage = $language;
break;
default:
break;
}
}
}
if ($setLanguage === null) {
$request->setLocale($this->defaultLocale);
} else {
$request->setLocale($setLanguage);
}
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => [['onKernelRequest', 20]]
];
}
}