<?php
namespace App\Controller;
use App\Service\LocaleService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class LocaleController extends AbstractController
{
private LocaleService $localeService;
public function __construct(LocaleService $localeService)
{
$this->localeService = $localeService;
}
/**
* @Route("/locale/switch/{locale}", name="app_locale_switch", requirements={"locale"="fr|en"})
*/
public function switchLocale(string $locale, Request $request): Response
{
// Valider que la locale est supportée
if (!in_array($locale, ['fr', 'en'])) {
throw $this->createNotFoundException('Locale not supported');
}
// Utiliser le service pour définir la locale
$this->localeService->setManualLocale($locale);
// Rediriger vers la page précédente
$referer = $request->headers->get('referer');
if ($referer) {
return $this->redirect($referer);
}
return $this->redirectToRoute('home');
}
/**
* @Route("/locale/reset", name="app_locale_reset")
*/
public function resetLocale(Request $request): Response
{
// Utiliser le service pour réinitialiser
$this->localeService->resetToAutoDetection();
// Rediriger vers la page précédente
$referer = $request->headers->get('referer');
if ($referer) {
return $this->redirect($referer);
}
return $this->redirectToRoute('home');
}
}