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;
}
$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);
// if no explicit locale has been set on this request, use one from the session
$request->setLocale($locale);
$request->getSession()->set('_locale', $locale);
$request->getSession()->set('check_locale_from_db', false);
}
}
public function getCurrentLanguage(Request $request): string
@ -101,7 +86,7 @@ class LocaleSubscriber implements EventSubscriberInterface
if (!empty($course)) {
$courseLocale = $course->getCourseLanguage();
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
$localeFromUrl = $request->get('_locale');
if (!empty($localeFromUrl)) {
$localeList['user_selected_lang'] = $platformLocale;
$localeList['user_selected_lang'] = $localeFromUrl;
}
$priorityList = [
@ -122,7 +107,7 @@ class LocaleSubscriber implements EventSubscriberInterface
$locale = '';
foreach ($priorityList as $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];
break;
@ -138,7 +123,7 @@ class LocaleSubscriber implements EventSubscriberInterface
'user_selected_lang',
];
foreach ($priorityList as $setting) {
if (isset($localeList[$setting]) && !empty($localeList[$setting])) {
if (!empty($localeList[$setting])) {
$locale = $localeList[$setting];
}
}

@ -38,8 +38,6 @@ class UserLocaleSubscriber implements EventSubscriberInterface
$session = $this->requestStack->getSession();
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());
}
}

Loading…
Cancel
Save