From a19fc6ba7b00dc89c3388b46f712274f131157f6 Mon Sep 17 00:00:00 2001 From: Yves Pratter <yves.pratter@gmail.com> Date: Tue, 20 Apr 2021 18:25:34 +0200 Subject: [PATCH] controllers translation : starting (with plurals) --- .../BulkActionsAbstractController.php | 7 +-- .../DataUpdateActionsController.php | 5 +- .../ModerationActionsController.php | 6 ++- src/Controller/Admin/UserAdminController.php | 11 +++-- translations/admin+intl-icu.fr.yaml | 47 ++++++++++++++----- 5 files changed, 51 insertions(+), 25 deletions(-) diff --git a/src/Controller/Admin/BulkActions/BulkActionsAbstractController.php b/src/Controller/Admin/BulkActions/BulkActionsAbstractController.php index 5ae787744..a92d2d7a6 100755 --- a/src/Controller/Admin/BulkActions/BulkActionsAbstractController.php +++ b/src/Controller/Admin/BulkActions/BulkActionsAbstractController.php @@ -4,6 +4,7 @@ namespace App\Controller\Admin\BulkActions; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as Controller; use App\Document\ElementStatus; +use Symfony\Contracts\Translation\TranslatorInterface; class BulkActionsAbstractController extends Controller { @@ -13,7 +14,7 @@ class BulkActionsAbstractController extends Controller protected $batchSize = 1000; protected $automaticRedirection = true; - protected function elementsBulkAction($functionToExecute, $dm, $request, $session) + protected function elementsBulkAction($functionToExecute, $dm, $request, $session, TranslatorInterface $t) { $isStillElementsToProceed = false; @@ -47,7 +48,7 @@ class BulkActionsAbstractController extends Controller $renderedViews[] = $view; } } catch (\Exception $e) { - $renderedViews[] = "Erreur en traitant l'élement {$element->getId()} : {$e->getMessage()} FILE {$e->getFile()} LINE {$e->getLine()}"; // TODO translate ? + $renderedViews[] = $t->trans('bulk.errorElement', [$id=$element->getId(), $error=$e->getMessage(), $file=$e->getFile(), $line=$e->getLine()], 'admin'); } if (0 == (++$i % 100)) { @@ -65,7 +66,7 @@ class BulkActionsAbstractController extends Controller } if ($this->automaticRedirection) { - $session->getFlashBag()->add('success', 'Tous les éléments ont été traité avec succès'); // TODO translate ? + $session->getFlashBag()->add('success', $t->trans('bulk.batchDone'), [], 'admin'); return $this->redirectToIndex(); } diff --git a/src/Controller/Admin/BulkActions/DataUpdateActionsController.php b/src/Controller/Admin/BulkActions/DataUpdateActionsController.php index b2ad65e14..b6384b640 100755 --- a/src/Controller/Admin/BulkActions/DataUpdateActionsController.php +++ b/src/Controller/Admin/BulkActions/DataUpdateActionsController.php @@ -6,11 +6,12 @@ use App\Application\Sonata\UserBundle\Services\GamificationService; use Doctrine\ODM\MongoDB\DocumentManager; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; +use Symfony\Contracts\Translation\TranslatorInterface; class DataUpdateActionsController extends BulkActionsAbstractController { public function updateGamificationAction(Request $request, SessionInterface $session, DocumentManager $dm, - GamificationService $gamificationService) + GamificationService $gamificationService, TranslatorInterface $t) { $qb = $dm->query('User'); $qb->field('email')->notEqual(null); @@ -30,7 +31,7 @@ class DataUpdateActionsController extends BulkActionsAbstractController $dm->flush(); $dm->clear(); - $session->getFlashBag()->add('success', count($users).' utilisateurs ont été mis à jour'); // TODO translate + $session->getFlashBag()->add('success', $t->trans('bulk.updateUser', ['%count%' => count($users)], 'admin')); return $this->redirect($this->generateUrl('admin_app_user_list')); } diff --git a/src/Controller/Admin/BulkActions/ModerationActionsController.php b/src/Controller/Admin/BulkActions/ModerationActionsController.php index 50d656a86..4a2d47113 100755 --- a/src/Controller/Admin/BulkActions/ModerationActionsController.php +++ b/src/Controller/Admin/BulkActions/ModerationActionsController.php @@ -6,12 +6,14 @@ use App\Services\ElementActionService; use Doctrine\ODM\MongoDB\DocumentManager; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; +use Symfony\Contracts\Translation\TranslatorInterface; class ModerationActionsController extends BulkActionsAbstractController { public function deleteElementReportedAsNoMoreExistingAction(Request $request, SessionInterface $session, DocumentManager $dm, - ElementActionService $actionService) + ElementActionService $actionService, + TranslatorInterface $t) { $repo = $dm->get('Element'); $elements = $repo->findModerationNeeded(false, 1); @@ -34,7 +36,7 @@ class ModerationActionsController extends BulkActionsAbstractController $dm->flush(); $dm->clear(); - $session->getFlashBag()->add('success', $count.' éléments ont été supprimés'); // TODO translate + $session->getFlashBag()->add('success', $t->trans('bulk.deleteElement', ['%count%' => $count], 'admin')); return $this->redirectToIndex(); } diff --git a/src/Controller/Admin/UserAdminController.php b/src/Controller/Admin/UserAdminController.php index a58187dac..db0b2c5c5 100755 --- a/src/Controller/Admin/UserAdminController.php +++ b/src/Controller/Admin/UserAdminController.php @@ -6,12 +6,14 @@ use App\Services\MailService; use Sonata\AdminBundle\Controller\CRUDController as Controller; use Sonata\AdminBundle\Datagrid\ProxyQueryInterface; use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Contracts\Translation\TranslatorInterface; class UserAdminController extends Controller { - public function __construct(MailService $mailService) + public function __construct(MailService $mailService, TranslatorInterface $t) { $this->mailService = $mailService; + $this->t = $t; } public function batchActionSendMail(ProxyQueryInterface $selectedModelQuery) @@ -41,19 +43,18 @@ class UserAdminController extends Controller } if (!$request->get('mail-subject') || !$request->get('mail-content')) { - $this->addFlash('sonata_flash_error', 'Vous devez renseigner un objet et un contenu. Veuillez recommencer'); // TODO translate + $this->addFlash('sonata_flash_error', $this->t->trans('mailError', [], 'admin')); } elseif (count($mails) > 0) { $result = $this->mailService->sendMail(null, $request->get('mail-subject'), $request->get('mail-content'), $request->get('from'), $mails); if ($result['success']) { - $this->addFlash('sonata_flash_success', count($mails).' mails ont bien été envoyés'); // TODO translate - // $this->addFlash('sonata_flash_success', $this->t('sendmails', $count=count($mails))); // $this->t not found + $this->addFlash('sonata_flash_success', $this->t->trans('batch.sendmails', ['%count%' => count($mails)], 'admin')); } else { $this->addFlash('sonata_flash_error', $result['message']); } } if ($usersWithoutEmail > 0) { - $this->addFlash('sonata_flash_error', $usersWithoutEmail." mails n'ont pas pu être envoyé car aucune adresse mail n'était renseignée"); // TODO translate + $this->addFlash('sonata_flash_error', $this->t->trans('usersWithoutEmail', ['%count%' => $usersWithoutEmail], 'admin')); } if ($nbreModelsToProceed >= 5000) { diff --git a/translations/admin+intl-icu.fr.yaml b/translations/admin+intl-icu.fr.yaml index fe34a760b..2749c2e0f 100644 --- a/translations/admin+intl-icu.fr.yaml +++ b/translations/admin+intl-icu.fr.yaml @@ -690,10 +690,18 @@ sonata: ROLE_DIRECTMODERATION_ADD: "CONTRIBUTEUR + (peut ajouter des éléments comme un Admin depuis le site)" ROLE_DIRECTMODERATION_EDIT_OWN_CONTRIB: "CONTRIBUTEUR + (peut éditer les éléments auquel il a contribué, même sans être propriétaire)" ROLE_SONATA_ADMIN: "INTERFACE ADMINISTRATEUR" - batch: - send: Envoyer - sendmails: "{count} mails ont bien été envoyés" # TODO plurals + send: "Envoyer" + sendmails: "{count, plural, + =1 {# mail a bien été envoyé} + other {# mails ont bien été envoyés} + }" + mailError: "Vous devez renseigner un objet et un contenu. Veuillez recommencer" + usersWithoutEmail: "{count, plural + =1 {# mail n'a pas pu être envoyé car aucune adresse mail n'était renseignée} + other {# mails n'ont pas pu être envoyé car aucune adresse mail n'était renseignée} + }" + config_users: _label: Configuration @@ -707,20 +715,33 @@ config_users: loginWithFacebook: Activer la connexion avec Facebook sidebar: - gogo_homepage: Retour au site - toggle_dropdown: Toggle Dropdown - gogo_directory: La Carte - gogo_element_add: Formulaire - gogo_partners: Qui sommes nous + gogo_homepage: "Retour au site" + toggle_dropdown: "Toggle Dropdown" + gogo_directory: "La Carte" + gogo_element_add: "Formulaire" + gogo_partners: "Qui sommes nous" bulk: - _label: Actions de masse + _label: "Actions de masse" delete: "Supprimer les éléments reportés comme n'existant plus" - update_gamification: Mettre à jour les scores (nombre de votes, de contributions, et score total par utilisateur) + update_gamification: "Mettre à jour les scores (nombre de votes, de contributions, et score total par utilisateur)" + batchDone: "Tous les éléments ont été traité avec succès" + deleteElement: "{count, plural, + =0 {Aucun élément supprimé} + =1 {# élément a été supprimé} + other {# éléments ont été supprimés} + }" + errorElement: "Erreur en traitant l'élement {id} : {error} FILE {file} LINE {line}" + updateUser: "{count, plural, + =0 {Aucun utilisateur mis à jour} + =1 {# utilisateur a été mis à jour} + other {# utilisateurs ont été mis à jour} + }" + help: - _label: Aide + _label: "Aide" doc: "Un problème, une question ? c'est par ici : " saas: - list: Liste des Projets - config: Configuration \ No newline at end of file + list: "Liste des Projets" + config: "Configuration" \ No newline at end of file -- GitLab