Fix LocaleSubscriber to set language priority

pull/5028/head
Angel Fernando Quiroz Campos 2 years ago
parent fec1ad7092
commit 24edd0e647
  1. 23
      src/CoreBundle/EventSubscriber/LocaleSubscriber.php
  2. 2
      src/CoreBundle/EventSubscriber/UserLocaleSubscriber.php

@ -51,25 +51,10 @@ class LocaleSubscriber implements EventSubscriberInterface
return; return;
} }
$loadFromDb = $request->getSession()->get('check_locale_from_db', true);
if (false === $loadFromDb &&
$request->getSession()->has('_locale') &&
!empty($request->getSession()->get('_locale'))
) {
$locale = $request->getSession()->get('_locale');
$request->setLocale($locale);
return;
}
if ($loadFromDb) {
$locale = $this->getCurrentLanguage($request); $locale = $this->getCurrentLanguage($request);
// if no explicit locale has been set on this request, use one from the session // if no explicit locale has been set on this request, use one from the session
$request->setLocale($locale); $request->setLocale($locale);
$request->getSession()->set('_locale', $locale); $request->getSession()->set('_locale', $locale);
$request->getSession()->set('check_locale_from_db', false);
}
} }
public function getCurrentLanguage(Request $request): string public function getCurrentLanguage(Request $request): string
@ -101,7 +86,7 @@ class LocaleSubscriber implements EventSubscriberInterface
if (!empty($course)) { if (!empty($course)) {
$courseLocale = $course->getCourseLanguage(); $courseLocale = $course->getCourseLanguage();
if (!empty($courseLocale)) { if (!empty($courseLocale)) {
$localeList['course_lang'] = $platformLocale; $localeList['course_lang'] = $courseLocale;
} }
} }
} }
@ -109,7 +94,7 @@ class LocaleSubscriber implements EventSubscriberInterface
// 4. force locale if it was selected from the URL // 4. force locale if it was selected from the URL
$localeFromUrl = $request->get('_locale'); $localeFromUrl = $request->get('_locale');
if (!empty($localeFromUrl)) { if (!empty($localeFromUrl)) {
$localeList['user_selected_lang'] = $platformLocale; $localeList['user_selected_lang'] = $localeFromUrl;
} }
$priorityList = [ $priorityList = [
@ -122,7 +107,7 @@ class LocaleSubscriber implements EventSubscriberInterface
$locale = ''; $locale = '';
foreach ($priorityList as $setting) { foreach ($priorityList as $setting) {
$priority = $this->settingsManager->getSetting(sprintf('language.%s', $setting)); $priority = $this->settingsManager->getSetting(sprintf('language.%s', $setting));
if (!empty($priority) && isset($localeList[$priority]) && !empty($localeList[$priority])) { if (!empty($priority) && !empty($localeList[$priority])) {
$locale = $localeList[$priority]; $locale = $localeList[$priority];
break; break;
@ -138,7 +123,7 @@ class LocaleSubscriber implements EventSubscriberInterface
'user_selected_lang', 'user_selected_lang',
]; ];
foreach ($priorityList as $setting) { foreach ($priorityList as $setting) {
if (isset($localeList[$setting]) && !empty($localeList[$setting])) { if (!empty($localeList[$setting])) {
$locale = $localeList[$setting]; $locale = $localeList[$setting];
} }
} }

@ -38,8 +38,6 @@ class UserLocaleSubscriber implements EventSubscriberInterface
$session = $this->requestStack->getSession(); $session = $this->requestStack->getSession();
if (null !== $user->getLocale()) { if (null !== $user->getLocale()) {
$session->set('check_locale_from_db', true); // After login, get the locale in LocaleSubscriber.php
//$session->set('_locale', $user->getLocale());
$session->set('_locale_user', $user->getLocale()); $session->set('_locale_user', $user->getLocale());
} }
} }

Loading…
Cancel
Save