From e4c43b8622d57e43e8bd363d9b573bc1719720ee Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 21 Nov 2013 15:52:28 +0100 Subject: [PATCH] Use TranslationServiceProvider, fix use of form_div_layout --- lib/Alchemy/Phrasea/Application.php | 21 +- .../Subscriber/PhraseaLocaleSubscriber.php | 1 - lib/classes/phrasea.php | 17 - templates/web/account/base.html.twig | 2 + .../login/common/form_div_layout.html.twig | 334 ------------------ .../web/login/layout/base-layout.html.twig | 2 + 6 files changed, 23 insertions(+), 354 deletions(-) delete mode 100644 templates/web/login/common/form_div_layout.html.twig diff --git a/lib/Alchemy/Phrasea/Application.php b/lib/Alchemy/Phrasea/Application.php index e7013aa764..33273d415f 100644 --- a/lib/Alchemy/Phrasea/Application.php +++ b/lib/Alchemy/Phrasea/Application.php @@ -128,11 +128,14 @@ use Silex\Application\UrlGeneratorTrait; use Silex\Provider\FormServiceProvider; use Silex\Provider\MonologServiceProvider; use Silex\Provider\SessionServiceProvider; +use Silex\Provider\TranslationServiceProvider; use Silex\Provider\TwigServiceProvider; use Silex\Provider\SwiftmailerServiceProvider; use Silex\Provider\UrlGeneratorServiceProvider; use Silex\Provider\ValidatorServiceProvider; use Silex\Provider\ServiceControllerServiceProvider; +use Symfony\Bridge\Twig\Extension\TranslationExtension; +use Symfony\Component\Translation\Loader\MoFileLoader; use Unoconv\UnoconvServiceProvider; use XPDF\PdfToText; use XPDF\XPDFServiceProvider; @@ -299,8 +302,22 @@ class Application extends SilexApplication 'twig.options' => [ 'cache' => $this['root.path'] . '/tmp/cache_twig/', ], - 'twig.form.templates' => ['login/common/form_div_layout.html.twig'] ]); + + $this->register(new TranslationServiceProvider(), [ + 'locale_fallbacks' => ['fr_FR'], + ]); + + $this['translator'] = $this->share($this->extend('translator', function($translator, $app) { + $translator->addLoader('mo', new MoFileLoader()); + $translator->addResource('mo', __DIR__.'/../../../locale/fr_FR/LC_MESSAGES/phraseanet.mo', 'fr_FR'); + $translator->addResource('mo', __DIR__.'/../../../locale/en_GB/LC_MESSAGES/phraseanet.mo', 'en_GB'); + $translator->addResource('mo', __DIR__.'/../../../locale/de_DE/LC_MESSAGES/phraseanet.mo', 'de_DE'); + $translator->addResource('mo', __DIR__.'/../../../locale/nl_NL/LC_MESSAGES/phraseanet.mo', 'nl_NL'); + + return $translator; + })); + $this->register(new FormServiceProvider()); $this->setupTwig(); @@ -575,7 +592,7 @@ class Application extends SilexApplication $twig->addExtension(new \Twig_Extension_Escaper()); // add filter trans - $twig->addExtension(new \Twig_Extensions_Extension_I18n()); + $twig->addExtension(new TranslationExtension($app['translator'])); // add filter localizeddate $twig->addExtension(new \Twig_Extensions_Extension_Intl()); // add filters truncate, wordwrap, nl2br diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaLocaleSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaLocaleSubscriber.php index 8ffa88edca..7a6ad110fe 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaLocaleSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaLocaleSubscriber.php @@ -108,7 +108,6 @@ class PhraseaLocaleSubscriber implements EventSubscriberInterface }); $this->locale = $this->app['locale']; - \phrasea::use_i18n($this->locale); } public function addLocaleCookie(FilterResponseEvent $event) diff --git a/lib/classes/phrasea.php b/lib/classes/phrasea.php index ed00b54ade..0a8c3f2e64 100644 --- a/lib/classes/phrasea.php +++ b/lib/classes/phrasea.php @@ -69,23 +69,6 @@ class phrasea return self::$_sbas_params; } - public static function use_i18n($locale, $textdomain = 'phraseanet') - { - $codeset = "UTF-8"; - - putenv('LANG=' . $locale . '.' . $codeset); - putenv('LANGUAGE=' . $locale . '.' . $codeset); - bind_textdomain_codeset($textdomain, 'UTF-8'); - - bindtextdomain($textdomain, __DIR__ . '/../../locale/'); - setlocale(LC_ALL - , $locale . '.UTF-8' - , $locale . '.UTF8' - , $locale . '.utf-8' - , $locale . '.utf8'); - textdomain($textdomain); - } - public static function modulesName($array_modules) { $array = []; diff --git a/templates/web/account/base.html.twig b/templates/web/account/base.html.twig index a825f58482..cfdc8f765c 100644 --- a/templates/web/account/base.html.twig +++ b/templates/web/account/base.html.twig @@ -1,3 +1,5 @@ +{% form_theme form 'web/login/common/fields.html.twig' %} + {% set jquery_theme = 'dark-hive' %} {% set module = '' %} diff --git a/templates/web/login/common/form_div_layout.html.twig b/templates/web/login/common/form_div_layout.html.twig deleted file mode 100644 index ddbbbe5eef..0000000000 --- a/templates/web/login/common/form_div_layout.html.twig +++ /dev/null @@ -1,334 +0,0 @@ -{# Widgets #} - -{% block form_widget %} -{% spaceless %} - {% if compound %} - {{ block('form_widget_compound') }} - {% else %} - {{ block('form_widget_simple') }} - {% endif %} -{% endspaceless %} -{% endblock form_widget %} - -{% block form_widget_simple %} -{% spaceless %} - {% set type = type|default('text') %} - -{% endspaceless %} -{% endblock form_widget_simple %} - -{% block form_widget_compound %} -{% spaceless %} -
- {% if form.parent is empty %} - {{ form_errors(form) }} - {% endif %} - {{ block('form_rows') }} - {{ form_rest(form) }} -
-{% endspaceless %} -{% endblock form_widget_compound %} - -{% block collection_widget %} -{% spaceless %} - {% if prototype is defined %} - {% set attr = attr|merge({'data-prototype': form_row(prototype) }) %} - {% endif %} - {{ block('form_widget') }} -{% endspaceless %} -{% endblock collection_widget %} - -{% block textarea_widget %} -{% spaceless %} - -{% endspaceless %} -{% endblock textarea_widget %} - -{% block choice_widget %} -{% spaceless %} - {% if expanded %} - {{ block('choice_widget_expanded') }} - {% else %} - {{ block('choice_widget_collapsed') }} - {% endif %} -{% endspaceless %} -{% endblock choice_widget %} - -{% block choice_widget_expanded %} -{% spaceless %} -
- {% for child in form %} - {{ form_widget(child) }} - {{ form_label(child) }} - {% endfor %} -
-{% endspaceless %} -{% endblock choice_widget_expanded %} - -{% block choice_widget_collapsed %} -{% spaceless %} - -{% endspaceless %} -{% endblock choice_widget_collapsed %} - -{% block choice_widget_options %} -{% spaceless %} - {% for group_label, choice in options %} - {% if choice is iterable %} - - {% set options = choice %} - {{ block('choice_widget_options') }} - - {% else %} - - {% endif %} - {% endfor %} -{% endspaceless %} -{% endblock choice_widget_options %} - -{% block checkbox_widget %} -{% spaceless %} - -{% endspaceless %} -{% endblock checkbox_widget %} - -{% block radio_widget %} -{% spaceless %} - -{% endspaceless %} -{% endblock radio_widget %} - -{% block datetime_widget %} -{% spaceless %} - {% if widget == 'single_text' %} - {{ block('form_widget_simple') }} - {% else %} -
- {{ form_errors(form.date) }} - {{ form_errors(form.time) }} - {{ form_widget(form.date) }} - {{ form_widget(form.time) }} -
- {% endif %} -{% endspaceless %} -{% endblock datetime_widget %} - -{% block date_widget %} -{% spaceless %} - {% if widget == 'single_text' %} - {{ block('form_widget_simple') }} - {% else %} -
- {{ date_pattern|replace({ - '{{ year }}': form_widget(form.year), - '{{ month }}': form_widget(form.month), - '{{ day }}': form_widget(form.day), - })|raw }} -
- {% endif %} -{% endspaceless %} -{% endblock date_widget %} - -{% block time_widget %} -{% spaceless %} - {% if widget == 'single_text' %} - {{ block('form_widget_simple') }} - {% else %} - {% set vars = widget == 'text' ? { 'attr': { 'size': 1 }} : {} %} -
- {{ form_widget(form.hour, vars) }}:{{ form_widget(form.minute, vars) }}{% if with_seconds %}:{{ form_widget(form.second, vars) }}{% endif %} -
- {% endif %} -{% endspaceless %} -{% endblock time_widget %} - -{% block number_widget %} -{% spaceless %} - {# type="number" doesn't work with floats #} - {% set type = type|default('text') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock number_widget %} - -{% block integer_widget %} -{% spaceless %} - {% set type = type|default('number') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock integer_widget %} - -{% block money_widget %} -{% spaceless %} - {{ money_pattern|replace({ '{{ widget }}': block('form_widget_simple') })|raw }} -{% endspaceless %} -{% endblock money_widget %} - -{% block url_widget %} -{% spaceless %} - {% set type = type|default('url') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock url_widget %} - -{% block search_widget %} -{% spaceless %} - {% set type = type|default('search') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock search_widget %} - -{% block percent_widget %} -{% spaceless %} - {% set type = type|default('text') %} - {{ block('form_widget_simple') }} % -{% endspaceless %} -{% endblock percent_widget %} - -{% block password_widget %} -{% spaceless %} - {% set type = type|default('password') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock password_widget %} - -{% block hidden_widget %} -{% spaceless %} - {% set type = type|default('hidden') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock hidden_widget %} - -{% block email_widget %} -{% spaceless %} - {% set type = type|default('email') %} - {{ block('form_widget_simple') }} -{% endspaceless %} -{% endblock email_widget %} - -{# Labels #} - -{% block form_label %} -{% spaceless %} - {% if label is not sameas(false) %} - {% if not compound %} - {% set label_attr = label_attr|merge({'for': id}) %} - {% endif %} - {% if required %} - {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %} - {% endif %} - {% if label is empty %} - {% set label = name|humanize %} - {% endif %} - {{ label }} - {% endif %} -{% endspaceless %} -{% endblock form_label %} - -{# Rows #} - -{% block repeated_row %} -{% spaceless %} - {# - No need to render the errors here, as all errors are mapped - to the first child (see RepeatedTypeValidatorExtension). - #} - {{ block('form_rows') }} -{% endspaceless %} -{% endblock repeated_row %} - -{% block form_row %} -{% spaceless %} -
- {{ form_label(form) }} - {{ form_errors(form) }} - {{ form_widget(form) }} -
-{% endspaceless %} -{% endblock form_row %} - -{% block hidden_row %} - {{ form_widget(form) }} -{% endblock hidden_row %} - -{# Misc #} - -{% block form_enctype %} -{% spaceless %} - {% if multipart %}enctype="multipart/form-data"{% endif %} -{% endspaceless %} -{% endblock form_enctype %} - -{% block form_errors %} -{% import "login/common/macros.html.twig" as auth_macro %} -{% spaceless %} - {% if errors|length > 0 %} - {{ auth_macro.fieldError(errors) }} - {% endif %} -{% endspaceless %} -{% endblock form_errors %} - -{% block form_rest %} -{% spaceless %} - {% for child in form %} - {% if not child.rendered %} - {{ form_row(child) }} - {% endif %} - {% endfor %} -{% endspaceless %} -{% endblock form_rest %} - -{# Support #} - -{% block form_rows %} -{% spaceless %} - {% for child in form %} - {{ form_row(child) }} - {% endfor %} -{% endspaceless %} -{% endblock form_rows %} - -{% block widget_attributes %} -{% spaceless %} - id="{{ id }}" name="{{ full_name }}"{% if read_only %} readonly="readonly"{% endif %}{% if disabled %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %} - {% for attrname, attrvalue in attr %}{% if attrname in ['placeholder', 'title'] %}{{ attrname }}="{{ attrvalue|trans }}" {% else %}{{ attrname }}="{{ attrvalue }}" {% endif %}{% endfor %} -{% endspaceless %} -{% endblock widget_attributes %} - -{% block widget_container_attributes %} -{% spaceless %} - {% if id is not empty %}id="{{ id }}" {% endif %} - {% for attrname, attrvalue in attr %}{{ attrname }}="{{ attrvalue }}" {% endfor %} -{% endspaceless %} -{% endblock widget_container_attributes %} - -{# Deprecated in Symfony 2.1, to be removed in 2.3 #} - -{% block generic_label %}{{ block('form_label') }}{% endblock %} -{% block widget_choice_options %}{{ block('choice_widget_options') }}{% endblock %} -{% block field_widget %}{{ block('form_widget_simple') }}{% endblock %} -{% block field_label %}{{ block('form_label') }}{% endblock %} -{% block field_row %}{{ block('form_row') }}{% endblock %} -{% block field_enctype %}{{ block('form_enctype') }}{% endblock %} -{% block field_errors %}{{ block('form_errors') }}{% endblock %} -{% block field_rest %}{{ block('form_rest') }}{% endblock %} -{% block field_rows %}{{ block('form_rows') }}{% endblock %} - - -{% block geoname_widget %} - {{ block('form_widget_simple') }} - - {# add custom code here #} -{% endblock %} diff --git a/templates/web/login/layout/base-layout.html.twig b/templates/web/login/layout/base-layout.html.twig index 3ddbb923eb..57fab42647 100644 --- a/templates/web/login/layout/base-layout.html.twig +++ b/templates/web/login/layout/base-layout.html.twig @@ -1,3 +1,5 @@ +{% form_theme form 'login/common/fields.html.twig' %} +