From f45ceb05945f703a69077326ae8bb19be3f2d7b7 Mon Sep 17 00:00:00 2001 From: Yves Pratter <yves.pratter@gmail.com> Date: Tue, 4 May 2021 18:48:05 +0200 Subject: [PATCH] translations: filtres --- assets/js/api/api.js | 5 +- .../Form/Type/RegistrationFormType.php | 2 +- src/Block/RecentElementsBlockService.php | 12 +++- .../custom-fields/filters-builder.html.twig | 40 ++++++----- .../custom-fields/mapping-taxonomy.html.twig | 6 +- templates/api/api-ui.html.twig | 30 ++++---- .../Registration/register.html.twig | 10 +-- .../FOSUserBundle/Resetting/request.html.twig | 2 +- .../HWIOAuthBundle/Connect/login.html.twig | 9 +-- .../SonataAdminBundle/layout.html.twig | 10 +-- .../newsletter-show-on-map-button.html.twig | 2 +- templates/header.html.twig | 4 +- templates/modals/loginModal.html.twig | 2 +- translations/admin+intl-icu.fr.yaml | 72 +++++++++++++++++-- translations/messages+intl-icu.fr.yaml | 60 ++++++++-------- 15 files changed, 171 insertions(+), 95 deletions(-) diff --git a/assets/js/api/api.js b/assets/js/api/api.js index a4770a912..ff293f8db 100755 --- a/assets/js/api/api.js +++ b/assets/js/api/api.js @@ -15,7 +15,7 @@ if ($('#page-content.api').length > 0) }); $('.select-categories').select2({ - placeholder: "Selectionnez une ou plusieurs catégories", + placeholder: t('js.api.placeholder'), allowClear: true }); @@ -76,5 +76,4 @@ if ($('#page-content.api').length > 0) ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d])); return ret.join('&'); } -} - +} \ No newline at end of file diff --git a/src/Application/Sonata/UserBundle/Form/Type/RegistrationFormType.php b/src/Application/Sonata/UserBundle/Form/Type/RegistrationFormType.php index 8e12df784..49ca66859 100755 --- a/src/Application/Sonata/UserBundle/Form/Type/RegistrationFormType.php +++ b/src/Application/Sonata/UserBundle/Form/Type/RegistrationFormType.php @@ -77,7 +77,7 @@ class RegistrationFormType extends AbstractType ], $this->mergeOptions)) ->add('newsletterFrequency', $choiceType, array_merge([ 'label' => 'form.newsletterFrequency', - 'translation_domain' => 'SonataUserBundle', + 'translation_domain' => 'messages', 'choices' => [ 'commons.every.week' => 1, 'commons.every.month' => 2, diff --git a/src/Block/RecentElementsBlockService.php b/src/Block/RecentElementsBlockService.php index 2fea69298..253f9dcb2 100755 --- a/src/Block/RecentElementsBlockService.php +++ b/src/Block/RecentElementsBlockService.php @@ -10,6 +10,7 @@ use Sonata\CoreBundle\Model\Metadata; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\OptionsResolver\OptionsResolver; use Twig\Environment; +use Symfony\Contracts\Translation\TranslatorInterface; /** * @author Thomas Rabaix <thomas.rabaix@sonata-project.org> @@ -27,13 +28,20 @@ class RecentElementsBlockService extends AbstractBlockService * @param EngineInterface $templating * @param Pool $adminPool */ - public function __construct(Environment $twig, DocumentManager $dm, Pool $adminPool = null) + public function __construct(Environment $twig, DocumentManager $dm, Pool $adminPool = null, TranslatorInterface $t) { $this->manager = $dm; $this->adminPool = $adminPool; parent::__construct($twig); + $this->t = $t; } + private function trans($key, $params = []) + { + return $this->t->trans($key, $params, 'admin'); + } + + /** * {@inheritdoc} */ @@ -62,7 +70,7 @@ class RecentElementsBlockService extends AbstractBlockService { $resolver->setDefaults([ 'number' => 5, - 'title' => 'Derniers elements', // TODO translate + 'title' => $this->trans('elements.recent_elements'), 'class' => '', 'filterStatus' => 0, 'template' => 'admin/blocks/block_recent_elements.html.twig', diff --git a/templates/admin/core_custom/custom-fields/filters-builder.html.twig b/templates/admin/core_custom/custom-fields/filters-builder.html.twig index 487f7b76f..6b94cec4d 100755 --- a/templates/admin/core_custom/custom-fields/filters-builder.html.twig +++ b/templates/admin/core_custom/custom-fields/filters-builder.html.twig @@ -24,36 +24,44 @@ ]; var displayFilter = function(fieldData) { - result = fieldData.field ? "Champ utilisé : " + fieldData.field : "Veuillez choisir le champ à utiliser" // TODO translate + result = fieldData.field ? t('js.filters_builder.used_field', {field: fieldData.field}) : t('js.filters_builder.choose_field') return { field: result }; } var templates = { - taxonomy: function(fieldData) { return { field: 'Personnaliser ce filtre dans le menu des catégories' }; }, // TODO translate + taxonomy: function(fieldData) { return { field: t('js.filters_builder.customize_field') }; }, gogo_date: displayFilter, gogo_number: displayFilter, }; - var fieldAttr = { label: "Nom du champ à utiliser", options: fieldsChoices} // TODO translate - var contractedAttr = { label: "Filtre replié par defaut", type: 'checkbox'} // TODO translate - var dateViews = { "day": "Jour", "week": "Semaine", "month": "Mois", "year": "Année", "range": "Plage" } // TODO translate + var fieldAttr = { label: t('js.filters_builder.field_name'), options: fieldsChoices} + var contractedAttr = { label: t('js.filters_builder.contracted_field'), type: 'checkbox'} + var dateViews = { "day": t('js.filters_builder.date_views.day'), + "week": t('js.filters_builder.date_views.week'), + "month": t('js.filters_builder.date_views.month'), + "year": t('js.filters_builder.date_views.year'), + "range": t('js.filters_builder.date_views.range') + } var fieldsAttrs = { taxonomy: {}, gogo_date: { field: fieldAttr, - fieldEnd: { label: "Champ pour la Date de fin (optionel)", options: fieldsChoices}, // TODO translate + fieldEnd: { label: t('js.filters_builder.field_end'), options: fieldsChoices}, contracted: contractedAttr, - multiday: { label: "Plusieurs jours selectionnable", type: 'checkbox' }, // TODO translate + multiday: { label: t('js.filters_builder.multiday'), type: 'checkbox' }, views: { label: "Hidden Views" }, - select_views: { label: "Vues (Ctrl + Click)", options: dateViews, multiple: "multiple" }, // TODO translate - defaultView: { label: "Vue par défaut", options: dateViews }, // TODO translate + select_views: { label: t('js.filters_builder.select_views'), options: dateViews, multiple: "multiple" }, + defaultView: { label: t('js.filters_builder.default_view'), options: dateViews }, }, gogo_number: { field: fieldAttr, contracted: contractedAttr, - min: {label: "min", type: "number", required: "true", value: "0"}, - max: {label: "max", type: "number", required: "true", value: "100"}, - step: {label: "step", type: "number", required: "true", value: "1"}, - subtype: {label: "Type", options: { 'slider': 'Slider', 'value': 'Valeur' }} // TODO translate + min: {label: t('js.filters_builder.min'), type: "number", required: "true", value: "0"}, + max: {label: t('js.filters_builder.max'), type: "number", required: "true", value: "100"}, + step: {label: t('js.filters_builder.step'), type: "number", required: "true", value: "1"}, + subtype: {label: t('js.filters_builder.type'), options: { + 'slider': t('js.filters_builder.options.slider'), + 'value': t('js.filters_builderoptions.value') + }} } }; @@ -70,7 +78,7 @@ controlOrder: ['taxonomy', 'gogo_date', 'gogo_number', 'header', 'paragraph'], disabledAttrs: ['required', 'name', 'access', 'placeholder', 'value', 'className', 'inline', 'toggle', 'description', 'other', 'multiple'], formData: {{ filtersData|json_encode|raw }}, - roles: { 1: "Administrateur" }, // TODO translate ? + roles: { 1: t('js.form_builder.roles.1') }, typeUserAttrs: fieldsAttrs }); @@ -102,8 +110,8 @@ // Changes icons and icones helpers $('a[type=remove].icon-cancel').removeClass('icon-cancel').addClass('fa fa-trash-alt'); - $('a[type=copy].icon-copy').attr('title', 'Dupliquer'); // TODO translate - $('a[type=edit].icon-pencil').attr('title', 'Editer/Masquer'); // TODO translate + $('a[type=copy].icon-copy').attr('title', t('form_builder.copy_icon')); + $('a[type=edit].icon-pencil').attr('title', t('form_builder.edit_icon')); }, 300); }); } diff --git a/templates/admin/core_custom/custom-fields/mapping-taxonomy.html.twig b/templates/admin/core_custom/custom-fields/mapping-taxonomy.html.twig index d205c48d0..927de897c 100755 --- a/templates/admin/core_custom/custom-fields/mapping-taxonomy.html.twig +++ b/templates/admin/core_custom/custom-fields/mapping-taxonomy.html.twig @@ -49,7 +49,7 @@ var taxonomy = {{ form.vars.attr["data-options"]|raw }}; var mappingOptionNameToId = {} - var formData = [{ id: "", text: "Selectionnez une catégorie existant ou entrez le nom d'une nouvelle catégorie à créer", disabled: true}] // TODO Translation + var formData = [{ id: "", text: t('mapping_taxonomy.selectCategory'), disabled: true}] function recursivelyAddOption(category, parentOption) { @@ -79,7 +79,7 @@ if ($(data).filter(function() { return this.text.localeCompare(term)===0; }).length===0) { - return {id: `@create:${term}`, text: term + ' (Sera créé au moment de sauvegarder)'}; // TODO Translation + return {id: `@create:${term}`, text: t('js.mapping_taxonomy.createTerm', {term: term}) }; } }, multiple: true @@ -98,7 +98,7 @@ } else if (Object.keys(formData).filter(v => [newCategoryId, newCategoryIdIfCreated].includes(v)).length === 0) { newCategoryId = newCategoryIdIfCreated - formData.push({id: newCategoryId, text: originCategoryName + ' (Sera créé au moment de sauvegarder)'}) // TODO Translation + formData.push({id: newCategoryId, text: t('js.mapping_taxonomy.createTerm', {term: originCategoryName}) }); } const input = $parent.find('.category-selector:not(.select2-container)') input.val(newCategoryId).trigger('change'); diff --git a/templates/api/api-ui.html.twig b/templates/api/api-ui.html.twig index 084ce758e..1154896dd 100755 --- a/templates/api/api-ui.html.twig +++ b/templates/api/api-ui.html.twig @@ -1,9 +1,10 @@ {% extends "page-layout.html.twig" %} +{% trans_default_domain 'admin' %} {% set pageName = 'api' %} -{% set navTitle = "Configurer une API" %} {# TODO Translation #} +{% set navTitle = 'api_ui._label'|trans %} -{% block title %}Configurer une API{% endblock %} {# TODO Translation #} +{% block title %}{{ 'api_ui._label'|trans }}{% endblock %} {% block stylesheets %} @@ -17,22 +18,22 @@ {# BODY CONTENT #} {% block body_content %} <section> - <h1>Accédez aux données via une API</h1> {# TODO Translation #} + <h1>{{ 'api_ui.title'|trans }}</h1> {# FORMAT #} <p class="format-container"> - <span class="forma-label">Format :</span> {# TODO Translation #} + <span class="forma-label">{{ 'api_ui.format'|trans }}</span> <input name="format" type="radio" id="format-json" data-value="json" checked class="url-update" /> - <label for="format-json">Json</label> + <label for="format-json">{{ 'api_ui.json'|trans }}</label> <input name="format" type="radio" id="format-jsonld" data-value="jsonld" class="url-update" /> - <label for="format-jsonld">Json-LD (Sémantique)</label> {# TODO Translation #} + <label for="format-jsonld">{{ 'api_ui.jsonld'|trans }}</label> </p> {# CATEGORIES #} <div class="col s12 option-container"> <input type="checkbox" name="use-categories" id="use-categories" checked class="url-update" /> - <label id="label-use-categories" for="use-categories">Restreindre par categories</label> {# TODO Translation #} + <label id="label-use-categories" for="use-categories">{{ 'api_ui.use_categories'|trans }}</label> </div> <div class="select-categories-container"> <select class="select-categories browser-default url-update" multiple> @@ -44,30 +45,30 @@ <div class="col s12 option-container"> <input type="checkbox" name="include-external" id="include-external" checked class="url-update" /> - <label id="label-include-external" for="include-external">Inclure les sources externes de la base de donnée</label> {# TODO Translation #} + <label id="label-include-external" for="include-external">{{ 'api_ui.include_external'|trans }}</label> </div> {# BOUNDS #} <div class="col s12 option-container"> <input type="checkbox" name="use-bounds" id="use-bounds" checked class="url-update" /> - <label id="label-use-bounds" for="use-bounds">Restreindre sur une zone géographique (dessinez un rectangle sur la carte)</label> {# TODO Translation #} + <label id="label-use-bounds" for="use-bounds">{{ 'api_ui.use_bounds'|trans }}</label> </div> <div id="map-bounds-select"></div> {# LIMIT #} <div class="col s12 option-container"> <input type="checkbox" name="use-limit" id="use-limit" class="url-update" checked/> - <label id="label-use-limit" for="use-limit">Limiter le nombre de résultat</label> {# TODO Translation #} + <label id="label-use-limit" for="use-limit">{{ 'api_ui.use_limit'|trans }}</label> <input type="number" id="limit-input" class="url-update" value="100"/> </div> {# URL #} - <h2>Url de l'API</h2> + <h2>{{ 'api_ui.api_url'|trans }}</h2> <div class="col s12 input-field"> <input type="text" id="api-url" onClick="this.setSelectionRange(0, this.value.length)"/> </div> - <button id="test-api" class="btn btn-primary">Tester</button> {# TODO Translation #} + <button id="test-api" class="btn btn-primary">{{ 'api_ui.test'|trans }}</button> </section> @@ -82,7 +83,4 @@ var apiUrlBase = "{{ url('gogo_api_elements_index') }}"; </script> -{% endblock %} - - - +{% endblock %} \ No newline at end of file diff --git a/templates/bundles/FOSUserBundle/Registration/register.html.twig b/templates/bundles/FOSUserBundle/Registration/register.html.twig index 7fbd9f91b..0c64dbef1 100755 --- a/templates/bundles/FOSUserBundle/Registration/register.html.twig +++ b/templates/bundles/FOSUserBundle/Registration/register.html.twig @@ -1,7 +1,7 @@ {% extends "bundles/FOSUserBundle/layout.html.twig" %} {% set pageName = 'register with-section' %} -{% set navTitle = "Créer un compte" %} {# TODO Translation #} +{% set navTitle = 'commons.register'|trans %} {% block body_content %} <h1 class="panel-title">{{ 'title_user_registration'|trans({}, 'SonataUserBundle') }}</h1> @@ -22,20 +22,20 @@ <div class="input-field col s12"> <i class="material-icons gogo-icon-mail prefix"></i> {{ form_widget(form.email, {'id': 'input-email', 'attr': {'class': 'validate required'}}) }} - <label for="input-email" class="gogo-form-label">Adresse e-mail</label> {# TODO Translation #} + <label for="input-email" class="gogo-form-label">{{ "commons.email"|trans }}</label> </div> <div class="error">{{ form_errors(form.plainPassword.first) }}</div> <div class="input-field col s12"> <i class="material-icons gogo-icon-lock prefix"></i> {{ form_widget(form.plainPassword.first, {'id': 'input-plainPassword-1', 'attr': {'class': 'validate required'}}) }} - <label for="input-plainPassword-1" class="gogo-form-label">Mot de passe</label> {# TODO Translation #} + <label for="input-plainPassword-1" class="gogo-form-label">{{ "commons.password"|trans }}</label> </div> <div class="error">{{ form_errors(form.plainPassword.second) }}</div> <div class="input-field col s12"> <i class="material-icons gogo-icon-lock prefix"></i> {{ form_widget(form.plainPassword.second, {'id': 'input-plainPassword-2', 'attr': {'class': 'validate required'}}) }} - <label for="input-plainPassword-2" class="gogo-form-label">Retapez votre mot de passe</label> {# TODO Translation #} + <label for="input-plainPassword-2" class="gogo-form-label">{{ "commons.check_password"|trans }}</label> </div> </section> <div class="divider"></div> @@ -49,7 +49,7 @@ <div class="input-field col s12"> <i class="material-icons gogo-icon-marker-symbol prefix"></i> {{ form_widget(form.location, {'id': 'input-location', 'attr': {'class': 'validate'}}) }} - <label for="input-location" class="gogo-form-label">Votre adresse ou votre ville</label> {# TODO Translation #} + <label for="input-location" class="gogo-form-label">{{ "commons.location"|trans }}</label> </div> {#<i class="material-icons gogo-icon-filters-1 range-icon-prefix"></i> diff --git a/templates/bundles/FOSUserBundle/Resetting/request.html.twig b/templates/bundles/FOSUserBundle/Resetting/request.html.twig index 12a77fa90..2b75cda52 100755 --- a/templates/bundles/FOSUserBundle/Resetting/request.html.twig +++ b/templates/bundles/FOSUserBundle/Resetting/request.html.twig @@ -3,7 +3,7 @@ {% block fos_user_content %} <div class="panel"> <form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request"> - <h1>Mot de passe oublié</h1> {# TODO Translation #} + <h1>{{ 'sonata.user.user.forgottedPassword'|trans({}, 'admin') }}</h1> <div> {% if invalid_username is defined %} <p>{{ 'resetting.request.invalid_username'|trans({'%username%': invalid_username}, 'FOSUserBundle') }}</p> diff --git a/templates/bundles/HWIOAuthBundle/Connect/login.html.twig b/templates/bundles/HWIOAuthBundle/Connect/login.html.twig index 76b30a8c7..f640c2d8a 100755 --- a/templates/bundles/HWIOAuthBundle/Connect/login.html.twig +++ b/templates/bundles/HWIOAuthBundle/Connect/login.html.twig @@ -1,4 +1,5 @@ {% extends 'HWIOAuthBundle::layout.html.twig' %} +{% trans_default_domain 'admin' %} {% block hwi_oauth_content %} @@ -6,7 +7,7 @@ {% if error is defined and error %} <div class="row"> <div class="col-md-12 alert alert-danger text-center"> - <span class="error">{{ error }}</span> {# TODO Translation ? #} + <span class="error">{{ error }}</span> </div> </div> {% endif %} @@ -14,9 +15,9 @@ {# HWIOAuthBundle integration #} <ul class="top-social"> - <li><a class="#" href="{{ hwi_oauth_login_url('facebook') }}">Se connecter avec Facebook</a></li> {# TODO Translation #} - <li><a class="#" href="{{ hwi_oauth_login_url('gplus') }}">Se connecter avec Google</a></li> {# TODO Translation #} - <li><a class="#" href="{{ hwi_oauth_login_url('communs') }}">Se connecter avec Les communs</a></li> {# TODO Translation #} + <li><a class="#" href="{{ hwi_oauth_login_url('facebook') }}">{{ 'sonata.user.user.login_with'|trans({'%provider': 'Facebook'}) }}</a></li> + <li><a class="#" href="{{ hwi_oauth_login_url('gplus') }}">{{ 'sonata.user.user.login_with'|trans({'%provider': 'Google'}) }}</a></li> + <li><a class="#" href="{{ hwi_oauth_login_url('communs') }}">{{ 'sonata.user.user.login_with'|trans({'%provider': 'Les communs'}) }}</a></li> </ul> {% endblock hwi_oauth_content %} diff --git a/templates/bundles/SonataAdminBundle/layout.html.twig b/templates/bundles/SonataAdminBundle/layout.html.twig index b28869f73..eb576f01b 100755 --- a/templates/bundles/SonataAdminBundle/layout.html.twig +++ b/templates/bundles/SonataAdminBundle/layout.html.twig @@ -60,19 +60,19 @@ {% spaceless %} <a class="logo" href="{{ path('sonata_admin_dashboard') }}"> <img src="{{ asset('img/default-icon.png') }}"> - <span>GoGoCarto Administration</span> {# TODO Translation #} + <span>{{ 'dashboard._label'|trans }}</span> {% set newMsgsCount = new_msgs_count() %} {% if newMsgsCount > 0 %} <label class="label label-info" style="margin-left: 6px"> <i class="fa fa-bell" style="margin-right: 3px;"></i> - {{ newMsgsCount }} {{ newMsgsCount == 1 ? ' message' : ' messages' }} {# TODO Translation plurals #} + {{ 'dashboard.messages'|trans({'%count%': newMsgsCount}) }} </label> {% endif %} {% set newErrorsCount = errors_count() %} {% if newErrorsCount > 0 %} <label class="label label-danger" style="margin-left: 6px"> <i class="fa fa-warning" style="margin-right: 3px;"></i> - {{ newErrorsCount }} {{ newErrorsCount == 1 ? 'erreur' : 'erreurs' }} {# TODO Translation plurals #} + {{ 'dashboard.errors'|trans({'%count%': newErrorsCount}) }} </label> {% endif %} @@ -107,8 +107,8 @@ </li> {% if use_as_saas and is_granted("ROLE_SUPER_ADMIN") and not is_root_project() %} <li> - <a href="{{ path('gogo_project_delete_my_project') }}" onclick="return confirm('Cette action ne peux pas être annulée. Vous allez supprimer entièrement votre projet. Etes vous sur de vouloir continuer?')"> {# TODO translate #} - <button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i><span>Supprimer ce projet</span></button> {# TODO translate #} + <a href="{{ path('gogo_project_delete_my_project') }}" onclick="return confirm('{{ 'dashboard.confirm'|trans }}')"> + <button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i><span>{{ 'dashboard.delete'|trans }}</span></button> </a> </li> {% endif %} diff --git a/templates/emails/newsletter-show-on-map-button.html.twig b/templates/emails/newsletter-show-on-map-button.html.twig index 9b7fe1360..577549940 100755 --- a/templates/emails/newsletter-show-on-map-button.html.twig +++ b/templates/emails/newsletter-show-on-map-button.html.twig @@ -12,6 +12,6 @@ text-transform: uppercase; letter-spacing: 1px; border: none; - background-color: {{ config.primaryColor }};">Voir la carte près de chez vous</button> {# TODO Translation #} + background-color: {{ config.primaryColor }};">{{ 'emails.show_map'|trans }}</button> </a> {% endif %} \ No newline at end of file diff --git a/templates/header.html.twig b/templates/header.html.twig index 72e3b949e..a459b9349 100755 --- a/templates/header.html.twig +++ b/templates/header.html.twig @@ -162,11 +162,11 @@ function submitAjaxLogin() } else { - $('.error-message').text("Les identifiants de connexion ne sont pas corrects").show(); // TODO translate + $('.error-message').text(t('js.login.wrong_id')).show(); } }, error: function(data, status, object){ - $('.error-message').text("Une erreur s'est produite lors de la tentative de connexion").show(); // TODO translate + $('.error-message').text(t('js.login.exception')).show(); } }); } diff --git a/templates/modals/loginModal.html.twig b/templates/modals/loginModal.html.twig index e126f0ddd..4d0a4bbae 100755 --- a/templates/modals/loginModal.html.twig +++ b/templates/modals/loginModal.html.twig @@ -23,7 +23,7 @@ {% endif %} {% if config.user.loginWithFacebook and oauth_facebook != 'disabled' %} <a class="oauth-btn waves-effect waves-light facebook" href="{{ hwi_oauth_login_url('facebook') }}"><i class="icon gogo-icon-facebook left"></i>Facebook</a> - <p class="facebook-alert">ATTENTION ! Si votre mail est privé sur Facebook, vous ne serez pas informé du l'évolution de vos contributions</p> {# TODO Translation #} + <p class="facebook-alert"{{ 'sonata.user.user.facebook_warning'|trans }}></p> {% endif %} {#<a class="oauth-btn waves-effect waves-light yahoo" href="{{ hwi_oauth_login_url('yahoo') }}"><i class="icon gogo-icon-yahoo left"></i>Se connecter avec Yahoo</a>#} </div> diff --git a/translations/admin+intl-icu.fr.yaml b/translations/admin+intl-icu.fr.yaml index 045c7b919..921fa0c8a 100755 --- a/translations/admin+intl-icu.fr.yaml +++ b/translations/admin+intl-icu.fr.yaml @@ -17,7 +17,7 @@ config_infobar: distance: "Si une adresse a été rentrée, distance entre le point et cette adresse" isPending: "Raccourci pour status == En attente (modifs ou ajout)" isDeleted: "Raccourci pour status = Refusé ou Supprimé" - colorOptionId: "L'id de la categorie qui donne la couleur principale de cet élément" + colorOptionId: "L'id de la catégorie qui donne la couleur principale de cet élément" images: "Tableau des urls des différentes images" createdAt: "Date de la création dans la base de donnée" updatedAt: "Date de la dernière mise à jour" @@ -142,6 +142,7 @@ elements: _label: "Éléments" proposedBy: "Proposé par <u>{name}</u>" proposedAt: "le {date}" + recent_elements: "Derniers éléments" fields: name: "Nom" newsletterFrequency: "Réception newsletter" @@ -408,7 +409,7 @@ imports: newTaxonomyToMap: "Nouvelles catégories à mapper" deletedCount: "{count} localement supprimés" elementsMissingGeoCount: "{count} sans géoloc" - elementsMissingTaxoCount: "{count} sans categories" + elementsMissingTaxoCount: "{count} sans catégories" elementsPreventImportedNoTaxo: "{count} non importés car sans catégories" # templates/admin/partials/import/list_refresh_frequency.html.twig @@ -567,7 +568,7 @@ config_home: backgroundImage: "Image de fond (le nom du fichier ne doit pas contenir d'espaces ou de caractères spéciaux)" backgroundImage_placeholder: "Sélectionnez une image déjà importée, ou ajoutez en une !" home: - displayCategoriesToPick: "Afficher les catégories principales selectionnables pour la recherche" + displayCategoriesToPick: "Afficher les catégories principales sélectionnables pour la recherche" addElementHintText: "Texte au dessus du bouton \"Ajouter un élément\"" addElementHintText_placeholder: "Exemple: \"Aidez nous à renrichir la base de donnée en ajoutant un élément !\"" seeMoreButtonText: "Texte pour inviter à scroller (si des bandeaux de la page d'accueil existent)" @@ -660,12 +661,12 @@ categories: Vous pouvez avoir plusieurs Groupes de catégories en parrallèle. Pour cela créez un nouveau groupe, enregistrez, puis ajoutez lui ensuite des catégories</br></br> Une catégorie peut elle même contenir un sous groupe avec des sous catégories à l''intérieur. Lorsque vous éditer une catégorie, en bas de la page vous pouvez y ajouter un sous groupe puis le remplir avec de nouvelles catégories.</br></br> - <b>(Groupe) GROUPE DE CATEGORIES 1</b> + <b>(Groupe) GROUPE DE CATÉGORIES 1</b> <ul> <li>Catégorie 1</li> <li>Catégorie 2</li> </ul> - <b>(Groupe) GROUPE DE CATEGORIES 2</b> + <b>(Groupe) GROUPE DE CATÉGORIES 2</b> <ul> <li>Catégorie 1</li> <li>Catégorie 2</li> @@ -690,7 +691,7 @@ categories: isMandatory: "Choix obligatoire" isMandatory_help: "Une catégorie de ce groupe doit être obligatoirement selectionnée" singleOption: "Choix unique" - singleOption_help: "Une seule catégorie est selectionnable à la fois" + singleOption_help: "Une seule catégorie est sélectionnable à la fois" enableDescription: "Activer la description des catégories" enableDescription_help: "On pourra renseigner un texte pour décrire chaque catégorie. Par example, pour un catégorie Agriculture, on pourrait ajouter comme texte \"Maraîchage, produits transformés...\"" descriptionLabel: Label pour le champ de description @@ -1109,6 +1110,9 @@ news: sonata.user.user: _label: Utilisateurs + forgottedPassword: "Mot de passe oublié" + login_with: "Se connecter avec {provider}" + facebook_warning: "ATTENTION ! Si votre mail est privé sur Facebook, vous ne serez pas informé de l'évolution de vos contributions" fields: contributionsCount: Contributions votesCount: Votes @@ -1172,6 +1176,17 @@ config_users: loginWithFacebook: Activer la connexion avec Facebook dashboard: + _label: "GoGoCarto Administration" + messages: "{count, plural, + =1 {# message} + other {# messages} + }" + errors: "{count, plural, + =1 {# erreur} + other {# erreurs} + }" + delete: "Supprimer ce projet" + confirm: "Cette action ne peux pas être annulée. Vous allez supprimer entièrement votre projet. Êtes vous sur de vouloir continuer ?" welcome: >- <b>Bienvenue dans votre espace Administrateur !</b></br> L'aventure commence tout juste pour vous, il vous faut maintenant commencer à configurer votre site :)</br> @@ -1242,6 +1257,7 @@ config_saas: newProjectInstructions: "Texte personnalisé affiché en haut du formulaire de création d'un nouveau projet" emails: + show_map: "Voir la carte près de chez vous" template: fields: active: "Activé" @@ -1267,10 +1283,26 @@ emails: no_subject_or_content: "Pas de sujet ou de contenu pour le mail automatique {config}" unknown: "Inconnu" +api_ui: # templates/api/api-ui.html.twig + _label: "Configurer une API" + title: "Accédez aux données via une API" + format: "Format :" + json: "JSON" + jsonld: "JSON-LD (Sémantique)" + use_categories: "Restreindre par catégories" + include_external: "Inclure les sources externes de la base de donnée" + use_bounds: "Restreindre sur une zone géographique (dessinez un rectangle sur la carte)" + use_limit: "Limiter le nombre de résultat" + api_url: "Url de l'API" + test: "Tester" + js: # Below keys are available to javascript import: source_this_map: "Cette Carte" + api: + placeholder: "Sélectionnez une ou plusieurs catégories" + mapping_ontology: # templates/admin/core_custom/custom-fields/mapping-ontology.html.twig id: "Identifiant unique (dans l'ancienne base de donnée)" name: "Titre de la fiche" @@ -1304,6 +1336,10 @@ js: # Below keys are available to javascript primary: "Non éditable" primary_title: "Ce champ n'est actuellement pas présent dans le formulaire public. Il sera uniquement éditable depuis l'interface administrateur. Vous pouvez modifier le formulaire public pour rendre ce champ éditable par tous" + mapping_taxonomy: + selectCategory: "Sélectionnez une catégorie existante ou entrez le nom d'une nouvelle catégorie à créer" + createTerm: "{term} (Sera créé au moment de sauvegarder)" + element_form: geocoded_marker_text: Déplacez moi pour préciser la position</br>(au centre du bâtiment) geocode_error: Erreur lors de la géolocalisation de "{address}" @@ -1367,6 +1403,28 @@ js: # Below keys are available to javascript taxonomy: Filtre Catégories gogo_date: Filtre Date gogo_number: Filtre Nombre + used_field: "Champ utilisé : {field}" + choose_field: "Veuillez choisir le champ à utiliser" + customize_field: "Personnaliser ce filtre dans le menu des catégories" + field_name: "Nom du champ à utiliser" + contracted_field: "Filtre replié par défaut" + date_views: + day: "Jour" + week: "Semaine" + month: "Mois" + year: "Année" + range: "Plage" + field_end: "Champ pour la Date de fin (optionel)" + multiday: "Plusieurs jours sélectionnable" + select_views: "Vues (Ctrl + Click)" + default_view: "Vue par défaut" + min: "Mini" + max: "Maxi" + step: "Pas" + type: "Type" + options: + slider: "Slider" + value: "Valeur" osm_query_builder: - title: Liste des requêtes dans la base OpenStreetMap \ No newline at end of file + title: Liste des requêtes dans la base OpenStreetMap diff --git a/translations/messages+intl-icu.fr.yaml b/translations/messages+intl-icu.fr.yaml index 08198e836..1865113a0 100755 --- a/translations/messages+intl-icu.fr.yaml +++ b/translations/messages+intl-icu.fr.yaml @@ -186,38 +186,39 @@ contributor-login: error: #inactive_feature: "Désolé, cette fonctionnalité n'est pas activée pour le moment" # TODO translation pb avec ces chaines ????? #inactive_iframe: "Désolé, cette fonctionnalité n'est pas disponible à l'intérieur d'une iframe" - admin_only: Attention ! Cette fonctionnalité est reservée aux administrateur - invalid_email: Veuillez renseigner une adresse mail valide - used_email: Oups, un compte avec cette adresse email existe déjà ! Connectez-vous ou utilisez une autre adresse ! - oauth: Connectez-vous avec votre compte + admin_only: "Attention ! Cette fonctionnalité est reservée aux administrateur" + invalid_email: V"euillez renseigner une adresse mail valide" + used_email: "Oups, un compte avec cette adresse email existe déjà ! Connectez-vous ou utilisez une autre adresse !" + oauth: "Connectez-vous avec votre compte" printemps: "Printemps de l'éducation" - communs: LesCommuns.org - login: Se connecter - email: Entrez simplement une adresse mail + communs: "LesCommuns.org" + login: "Se connecter" + email: "Entrez simplement une adresse mail" commons: - newsletter-explanation: Soyez informé par mail des nouveaux points référencés près de chez vous ! + newsletter-explanation: "Soyez informé par mail des nouveaux points référencés près de chez vous !" every: - week: Chaque semaine - month: Chaque mois - never: Jamais - username: Nom d'utilisateur - menu: Menu - choose_one_option: Veuillez choisir au moins une option - choose_category: Choisissez {cat} - optional: (optionnel) - category_placeholder: Précisez si nécessaire - validation: Validation + week: "Chaque semaine" + month: "Chaque mois" + never: "Jamais" + username: "Nom d'utilisateur" + email: "Adresse e-mail" + password: "Mot de passe" + check_password: "Retapez votre mot de passe" + register: "Créer un compte" + location: "Votre adresse ou votre ville" + menu: "Menu" + choose_one_option: "Veuillez choisir au moins une option" + choose_category: "Choisissez {cat}" + optional: "(optionnel)" + category_placeholder: "Précisez si nécessaire" + validation: "Validation" errors: - file-too-big: Ce fichier est trop lourd, la taille maximum autorisée est {size} Mb - bad_email: Veuillez renseigner une adresse email valide - bad_url: Veuillez renseigner une url du type http://... - bad_number: Ceci n'est pas un nombre ! - too_long: Oups, ce texte est un peu long ! - -errors: # TODO erreurs ajax - e1: "Les identifiants de connexion ne sont pas corrects" - e2: "Une erreur s'est produite lors de la tentative de connexion" + file-too-big: "Ce fichier est trop lourd, la taille maximum autorisée est {size} Mb" + bad_email: "Veuillez renseigner une adresse email valide" + bad_url: "Veuillez renseigner une url du type http://..." + bad_number: "Ceci n'est pas un nombre !" + too_long: "Oups, ce texte est un peu long !" action: search: "Rechercher" @@ -266,4 +267,7 @@ action: js: # Below keys are available to javascript element_form: - geocoded_marker_text: Déplacez moi pour préciser la position</br>(au centre du bâtiment) \ No newline at end of file + geocoded_marker_text: Déplacez moi pour préciser la position</br>(au centre du bâtiment) + login: + wrong_id: "Les identifiants de connexion ne sont pas corrects" + exception: "Une erreur s'est produite lors de la tentative de connexion" \ No newline at end of file -- GitLab