src/Common/Controller/RedirectController.php line 12

Open in your IDE?
  1. <?php
  2. namespace PaperKite\Common\Controller;
  3. use Locale;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. class RedirectController extends AbstractController
  8. {
  9.     public function redirectWithLocale(Request $request): RedirectResponse
  10.     {
  11.         if (!$request->attributes->get('_locale')) {
  12.             // http://php.net/manual/fr/locale.acceptfromhttp.php
  13.             // Pour retrouver la langue du navigateur la plus appropriĆ©e
  14.             // http://php.net/manual/fr/locale.getprimarylanguage.php
  15.             // Pour transformer une langue automatiquement en 2 lettres
  16.             $bestAvailableLocale Locale::getPrimaryLanguage(
  17.                 Locale::acceptFromHttp($request->server->get('HTTP_ACCEPT_LANGUAGE'))
  18.             );
  19.         }
  20.         // Get defined locales from parameters
  21.         $availableLocales $this->getParameter('locales_list');
  22.         // Check if locale found match accepted locale
  23.         if (isset($bestAvailableLocale) && in_array($bestAvailableLocale$availableLocales)) {
  24.             $locale $bestAvailableLocale;
  25.         } // Set default language
  26.         else {
  27.             $locale $request->attributes->get('_locale');
  28.         }
  29.         return $this->redirectToRoute('admin_dashboard', [
  30.             '_locale' => $locale,
  31.         ]);
  32.     }
  33. }