hesabix/core/src/Controller/LocaleController.php
2025-09-01 13:21:04 -04:00

47 lines
1.4 KiB
PHP

<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Translation\LocaleSwitcher;
final class LocaleController extends AbstractController
{
#[Route('/locale/{locale}', name: 'app_locale_switch', requirements: ['locale' => 'fa|en'])]
public function switchLocale(
string $locale,
Request $request,
SessionInterface $session,
LocaleSwitcher $localeSwitcher
): Response {
// Set locale in session
$session->set('_locale', $locale);
// Set locale for current request
$localeSwitcher->setLocale($locale);
// Redirect back to previous page or home
$referer = $request->headers->get('referer');
if ($referer) {
return $this->redirect($referer);
}
return $this->redirectToRoute('app_home');
}
#[Route('/api/locale', name: 'api_locale_get', methods: ['GET'])]
public function getCurrentLocale(SessionInterface $session): Response
{
$locale = $session->get('_locale', 'fa');
return $this->json([
'locale' => $locale,
'direction' => $locale === 'fa' ? 'rtl' : 'ltr'
]);
}
}