<?php
namespace PaperKite\Common\Controller;
use Locale;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
class RedirectController extends AbstractController
{
public function redirectWithLocale(Request $request): RedirectResponse
{
if (!$request->attributes->get('_locale')) {
// http://php.net/manual/fr/locale.acceptfromhttp.php
// Pour retrouver la langue du navigateur la plus appropriƩe
// http://php.net/manual/fr/locale.getprimarylanguage.php
// Pour transformer une langue automatiquement en 2 lettres
$bestAvailableLocale = Locale::getPrimaryLanguage(
Locale::acceptFromHttp($request->server->get('HTTP_ACCEPT_LANGUAGE'))
);
}
// Get defined locales from parameters
$availableLocales = $this->getParameter('locales_list');
// Check if locale found match accepted locale
if (isset($bestAvailableLocale) && in_array($bestAvailableLocale, $availableLocales)) {
$locale = $bestAvailableLocale;
} // Set default language
else {
$locale = $request->attributes->get('_locale');
}
return $this->redirectToRoute('admin_dashboard', [
'_locale' => $locale,
]);
}
}