From 7d00a09e7f705ecab0c4379ed830ea98db0b45ae Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 16 Nov 2018 15:46:27 +0100 Subject: [PATCH] WIP - Translation - Loading po files fixes --- config/packages/framework.yaml | 3 --- config/packages/sonata_intl.yaml | 18 +++++++++--------- config/packages/translation.yaml | 1 + .../EventListener/LocaleListener.php | 18 ++++++++++++------ .../EventListener/UserLocaleListener.php | 7 ++++++- src/CoreBundle/Resources/config/services.yml | 9 +++++++-- src/UserBundle/Resources/views/login.html.twig | 9 +++------ 7 files changed, 38 insertions(+), 27 deletions(-) diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 8eecffd812..56cda4e3a8 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -1,9 +1,6 @@ framework: form: true secret: '%env(APP_SECRET)%' - default_locale: '%env(APP_LOCALE)%' - translator: - fallbacks: ['en'] csrf_protection: true #esi: ~ #fragments: ~ diff --git a/config/packages/sonata_intl.yaml b/config/packages/sonata_intl.yaml index 2280567bbc..1b893c1d06 100644 --- a/config/packages/sonata_intl.yaml +++ b/config/packages/sonata_intl.yaml @@ -1,12 +1,12 @@ # # more information can be found here http://sonata-project.org/bundles/intl # -sonata_intl: - locale: ~ - timezone: - # if service is left blank, the chain detector will be used with detectors - # defined in the dedicated section - service: ~ - detectors: - - sonata.intl.timezone_detector.user # default value if SonataUserBundle is available - - sonata.intl.timezone_detector.locale # default value +#sonata_intl: +# locale: ~ +# timezone: +# # if service is left blank, the chain detector will be used with detectors +# # defined in the dedicated section +# service: ~ +# detectors: +# - sonata.intl.timezone_detector.user # default value if SonataUserBundle is available +# - sonata.intl.timezone_detector.locale # default value diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml index 1edfbe2368..47d1c8b260 100644 --- a/config/packages/translation.yaml +++ b/config/packages/translation.yaml @@ -3,5 +3,6 @@ framework: translator: paths: - '%kernel.project_dir%/translations' + - '%kernel.project_dir%/src/CoreBundle/Resources/translations' fallbacks: - '%locale%' diff --git a/src/CoreBundle/EventListener/LocaleListener.php b/src/CoreBundle/EventListener/LocaleListener.php index a079e6393d..5d51c182bc 100644 --- a/src/CoreBundle/EventListener/LocaleListener.php +++ b/src/CoreBundle/EventListener/LocaleListener.php @@ -28,9 +28,12 @@ class LocaleListener implements EventSubscriberInterface private $defaultLocale; /** - * @param string $defaultLocale + * LocaleListener constructor. + * + * @param string $defaultLocale + * @param ContainerInterface $container */ - public function __construct($defaultLocale = 'en', ContainerInterface $container) + public function __construct($defaultLocale, ContainerInterface $container) { $this->defaultLocale = $defaultLocale; $this->container = $container; @@ -71,7 +74,6 @@ class LocaleListener implements EventSubscriberInterface if (!empty($platformLocale)) { $localeList['platform_lang'] = $platformLocale; - //$locale = $platformLocale; } // 2. Check user locale @@ -79,7 +81,7 @@ class LocaleListener implements EventSubscriberInterface $userLocale = $request->getSession()->get('_locale_user'); if (!empty($userLocale)) { //$locale = $userLocale; - $localeList['user_profil_lang'] = $userLocale; + $localeList['user_profile_lang'] = $userLocale; } // 3. Check course locale @@ -122,7 +124,7 @@ class LocaleListener implements EventSubscriberInterface 'language_priority_1', ]; - $locale = $this->defaultLocale; + $locale = ''; foreach ($priorityList as $setting) { $priority = $settings->getSetting("language.$setting"); if (!empty($priority) && isset($localeList[$priority])) { @@ -134,7 +136,7 @@ class LocaleListener implements EventSubscriberInterface // Use default order $priorityList = [ 'platform_lang', - 'user_profil_lang', + 'user_profile_lang', 'course_lang', 'user_selected_lang', ]; @@ -145,6 +147,10 @@ class LocaleListener implements EventSubscriberInterface } } + if (empty($locale)) { + $locale = $this->defaultLocale; + } + // if no explicit locale has been set on this request, use one from the session $request->setLocale($locale); $request->getSession()->set('_locale', $locale); diff --git a/src/CoreBundle/EventListener/UserLocaleListener.php b/src/CoreBundle/EventListener/UserLocaleListener.php index 2974e979ae..030ac986fa 100644 --- a/src/CoreBundle/EventListener/UserLocaleListener.php +++ b/src/CoreBundle/EventListener/UserLocaleListener.php @@ -25,6 +25,12 @@ class UserLocaleListener /** @var SettingsManager */ private $settings; + /** + * UserLocaleListener constructor. + * + * @param SessionInterface $session + * @param SettingsManager $settings + */ public function __construct(SessionInterface $session, SettingsManager $settings) { $this->session = $session; @@ -39,7 +45,6 @@ class UserLocaleListener public function onInteractiveLogin(InteractiveLoginEvent $event) { $user = $event->getAuthenticationToken()->getUser(); - if (null !== $user->getLocale()) { $this->session->set('_locale', $user->getLocale()); $this->session->set('_locale_user', $user->getLocale()); diff --git a/src/CoreBundle/Resources/config/services.yml b/src/CoreBundle/Resources/config/services.yml index e2a030757c..3ded647457 100644 --- a/src/CoreBundle/Resources/config/services.yml +++ b/src/CoreBundle/Resources/config/services.yml @@ -14,6 +14,11 @@ services: autowire: true public: true + chamilo_core.translation.loader.po: + class: Symfony\Component\Translation\Loader\PoFileLoader + tags: + - { name: translation.loader, alias: po } + # Classic entity repositories Chamilo\CoreBundle\Repository\: resource: ../../Repository @@ -139,7 +144,7 @@ services: tags: - {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true} - # Setting user and platform locale + # Setting user chamilo_core.listener.legacy: class: Chamilo\CoreBundle\EventListener\LegacyListener calls: @@ -154,7 +159,7 @@ services: class: Chamilo\CoreBundle\EventListener\LocaleListener arguments: ['%kernel.default_locale%', '@service_container'] tags: - - {name: kernel.event_subscriber, priority: 9} + - {name: kernel.event_subscriber, priority: 20} # User locale listener chamilo_core.listener.user_locale_listener: diff --git a/src/UserBundle/Resources/views/login.html.twig b/src/UserBundle/Resources/views/login.html.twig index 516c1ad79d..460152072e 100644 --- a/src/UserBundle/Resources/views/login.html.twig +++ b/src/UserBundle/Resources/views/login.html.twig @@ -14,23 +14,20 @@ {% block sonata_user_login_form %}
-
- {{ form_label(form._username,'Username', {'label_attr': {'class': 'label-input'}}) }} +
+ {{ form_label(form._username, 'Username' | trans , {'label_attr': {'class': 'label-input'}}) }} {{ form_widget(form._username, {'attr': {'placeholder': 'Type your username', 'class': 'input-login'}}) }}
- {{ form_label(form._password, 'Password', {'label_attr': {'class': 'label-input'}})}} + {{ form_label(form._password, 'Password' | trans , {'label_attr': {'class': 'label-input'}})}} {{ form_widget(form._password, {'attr': {'placeholder': 'Type your password', 'class': 'input-login'}}) }}
{{ form_widget(form,{ 'attr': {'class': 'login'} }) }} - - -