diff --git a/streetup/common/migrations/0011_userconfig_preferred_language.py b/streetup/common/migrations/0011_userconfig_preferred_language.py new file mode 100644 index 0000000..7289b8a --- /dev/null +++ b/streetup/common/migrations/0011_userconfig_preferred_language.py @@ -0,0 +1,18 @@ +# Generated by Django 6.0.7 on 2026-08-14 20:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0010_userconfig_notification_reminder_delay_hours_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='userconfig', + name='preferred_language', + field=models.CharField(choices=[('fr', 'Français'), ('nl', 'Nederlands'), ('en', 'English')], default='fr', help_text="Langue utilisée pour l'interface, les e-mails et les notifications.", max_length=5, verbose_name='Langue préférée'), + ), + ] diff --git a/streetup/common/models.py b/streetup/common/models.py index d2a4d56..ea4dbf5 100644 --- a/streetup/common/models.py +++ b/streetup/common/models.py @@ -158,6 +158,18 @@ class UserConfig(models.Model): verbose_name="Tri de la liste des interventions", help_text="Préférences de tri pour la vue liste des interventions.", ) + PREFERRED_LANGUAGE_CHOICES = [ + ('fr', _('Français')), + ('nl', _('Nederlands')), + ('en', _('English')), + ] + preferred_language = models.CharField( + max_length=5, + choices=PREFERRED_LANGUAGE_CHOICES, + default='fr', + verbose_name=_("Langue préférée"), + help_text=_("Langue utilisée pour l'interface, les e-mails et les notifications."), + ) notification_reminder_enabled = models.BooleanField( default=False, verbose_name=_("Activer les rappels par e-mail"), diff --git a/streetup/common/tests.py b/streetup/common/tests.py index 963cadd..3343e6c 100644 --- a/streetup/common/tests.py +++ b/streetup/common/tests.py @@ -120,6 +120,8 @@ class LanguageSwitchingTests(TestCase): # Check that the language cookie is set self.assertIn(settings.LANGUAGE_COOKIE_NAME, self.client.cookies) self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, "fr") + self.user.config.refresh_from_db() + self.assertEqual(self.user.config.preferred_language, "fr") def test_set_language_to_dutch(self): """Test switching to Dutch language.""" @@ -134,6 +136,8 @@ class LanguageSwitchingTests(TestCase): self.assertEqual(response.status_code, 200) self.assertIn(settings.LANGUAGE_COOKIE_NAME, self.client.cookies) self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, "nl") + self.user.config.refresh_from_db() + self.assertEqual(self.user.config.preferred_language, "nl") def test_set_language_to_english(self): """Test switching to English language.""" @@ -148,6 +152,8 @@ class LanguageSwitchingTests(TestCase): self.assertEqual(response.status_code, 200) self.assertIn(settings.LANGUAGE_COOKIE_NAME, self.client.cookies) self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, "en") + self.user.config.refresh_from_db() + self.assertEqual(self.user.config.preferred_language, "en") def test_invalid_language_code(self): """Test that invalid language codes are handled gracefully.""" diff --git a/streetup/common/views.py b/streetup/common/views.py index c52ef4c..07f009b 100644 --- a/streetup/common/views.py +++ b/streetup/common/views.py @@ -587,4 +587,25 @@ def get_help_document(request, doc_name): return JsonResponse({'html': html_content}) +from django.views.i18n import set_language as django_set_language + +@login_not_required +def set_language(request): + """ + Wraps Django's set_language to persist the chosen language in UserConfig.preferred_language + when the user is authenticated. + """ + response = django_set_language(request) + if request.user.is_authenticated and request.method == 'POST': + lang_code = request.POST.get('language') + valid_langs = [code for code, _ in getattr(settings, 'LANGUAGES', [('fr', 'Français'), ('nl', 'Nederlands'), ('en', 'English')])] + if lang_code and lang_code in valid_langs: + config, _ = UserConfig.objects.get_or_create(user=request.user) + if config.preferred_language != lang_code: + config.preferred_language = lang_code + config.save(update_fields=['preferred_language']) + return response + + + diff --git a/streetup/notifications/forms.py b/streetup/notifications/forms.py index b45bce1..f9abc86 100644 --- a/streetup/notifications/forms.py +++ b/streetup/notifications/forms.py @@ -109,11 +109,15 @@ class NotificationReminderSettingsForm(forms.ModelForm): class Meta: model = UserConfig fields = [ + 'preferred_language', 'notification_reminder_enabled', 'notification_reminder_emails', 'notification_reminder_delay_hours', ] widgets = { + 'preferred_language': forms.Select( + attrs={'class': 'form-select rounded-3'} + ), 'notification_reminder_enabled': forms.CheckboxInput( attrs={'class': 'form-check-input', 'role': 'switch'} ), diff --git a/streetup/notifications/locale/en/LC_MESSAGES/django.mo b/streetup/notifications/locale/en/LC_MESSAGES/django.mo index 4ff5a37..225556f 100644 Binary files a/streetup/notifications/locale/en/LC_MESSAGES/django.mo and b/streetup/notifications/locale/en/LC_MESSAGES/django.mo differ diff --git a/streetup/notifications/locale/en/LC_MESSAGES/django.po b/streetup/notifications/locale/en/LC_MESSAGES/django.po index 946e83f..aef2c0e 100644 --- a/streetup/notifications/locale/en/LC_MESSAGES/django.po +++ b/streetup/notifications/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-13 19:20+0200\n" +"POT-Creation-Date: 2026-08-14 22:44+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,723 +17,836 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: streetup/notifications/forms.py:35 streetup/notifications/models.py:71 -#: streetup/notifications/models.py:321 +#: .\notifications\forms.py:35 .\notifications\models.py:71 +#: .\notifications\models.py:321 msgid "Titre" -msgstr "Titre" +msgstr "Title" -#: streetup/notifications/forms.py:40 streetup/notifications/models.py:72 -#: streetup/notifications/models.py:406 +#: .\notifications\forms.py:40 .\notifications\models.py:72 +#: .\notifications\models.py:455 msgid "Contenu" -msgstr "Contenu" +msgstr "Content" -#: streetup/notifications/forms.py:46 streetup/notifications/models.py:69 +#: .\notifications\forms.py:46 .\notifications\models.py:69 msgid "Type" msgstr "Type" -#: streetup/notifications/forms.py:52 +#: .\notifications\forms.py:52 msgid "Lien d'action (URL)" -msgstr "" +msgstr "Action URL" -#: streetup/notifications/forms.py:58 streetup/notifications/models.py:98 +#: .\notifications\forms.py:58 .\notifications\models.py:98 msgid "Libellé du lien" -msgstr "" +msgstr "Link label" -#: streetup/notifications/forms.py:63 streetup/notifications/models.py:85 -#: streetup/notifications/templates/notifications/inbox.html:180 +#: .\notifications\forms.py:63 .\notifications\models.py:85 +#: .\notifications\templates\notifications\inbox.html:304 msgid "Expire le" -msgstr "Expire le" +msgstr "Expires on" -#: streetup/notifications/forms.py:68 streetup/notifications/models.py:284 -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:41 +#: .\notifications\forms.py:68 .\notifications\models.py:284 +#: .\notifications\templates\notifications\_new_discussion_modal.html:41 msgid "Pièces jointes" msgstr "Attachments" -#: streetup/notifications/forms.py:69 +#: .\notifications\forms.py:69 msgid "Photos ou documents (plusieurs fichiers possibles)." -msgstr "Photos or documents (multiple files possible)." +msgstr "Photos or documents (multiple files allowed)." -#: streetup/notifications/forms.py:76 +#: .\notifications\forms.py:76 msgid "Destinataires individuels" -msgstr "Destinataires individuels" +msgstr "Individual recipients" -#: streetup/notifications/forms.py:82 streetup/notifications/models.py:504 +#: .\notifications\forms.py:82 .\notifications\models.py:553 msgid "Équipes destinataires" -msgstr "" +msgstr "Recipient teams" -#: streetup/notifications/forms.py:92 +#: .\notifications\forms.py:92 msgid "Veuillez sélectionner au moins un destinataire ou une équipe." -msgstr "" +msgstr "Please select at least one recipient or team." -#: streetup/notifications/forms.py:123 +#: .\notifications\forms.py:127 msgid "Ex: email1@exemple.com, email2@exemple.com" -msgstr "" +msgstr "E.g.: email1@example.com, email2@example.com" -#: streetup/notifications/forms.py:148 +#: .\notifications\forms.py:152 #, python-format msgid "L'adresse e-mail '%(email)s' n'est pas valide." -msgstr "" +msgstr "The email address '%(email)s' is invalid." -#: streetup/notifications/management/commands/send_unread_notification_reminders.py:106 +#: .\notifications\management\commands\send_unread_notification_reminders.py:95 +#, python-format +msgid "[StreetUp] Rappel : %(count)d notification(s) non lue(s)" +msgstr "[StreetUp] Reminder: %(count)d unread notification(s)" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:101 +#, python-format +msgid "Bonjour %(name)s," +msgstr "Hello %(name)s," + +#: .\notifications\management\commands\send_unread_notification_reminders.py:102 +#, python-format +msgid "" +"Vous avez %(count)d notification(s) non lue(s) reçue(s) il y a plus de " +"%(delay)d heure(s) :" +msgstr "You have %(count)d unread notification(s) received more than %(delay)d hour(s) ago:" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:117 msgid "Système" -msgstr "" +msgstr "System" -#: streetup/notifications/models.py:12 +#: .\notifications\management\commands\send_unread_notification_reminders.py:125 +msgid "reçue le" +msgstr "received on" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:125 +msgid "par" +msgstr "by" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:126 +msgid "Lien" +msgstr "Link" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:131 +msgid "Reçue le" +msgstr "Received on" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:132 +msgid "Consulter" +msgstr "View" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:136 +msgid "Accédez à votre boîte de réception :" +msgstr "Go to your inbox:" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:139 +msgid "Notifications non lues" +msgstr "Unread notifications" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:140 +#, python-format +msgid "" +"Vous avez %(count)d notification(s) non lue(s) qui " +"attendent votre attention :" +msgstr "You have %(count)d unread notification(s) waiting for your attention:" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:141 +msgid "Voir mes notifications" +msgstr "View my notifications" + +#: .\notifications\models.py:12 msgid "Nom" -msgstr "Nom" +msgstr "Name" -#: streetup/notifications/models.py:13 +#: .\notifications\models.py:13 msgid "Description" msgstr "Description" -#: streetup/notifications/models.py:18 +#: .\notifications\models.py:18 msgid "Membres" -msgstr "Membres" +msgstr "Members" -#: streetup/notifications/models.py:26 streetup/notifications/models.py:328 +#: .\notifications\models.py:26 .\notifications\models.py:328 msgid "Créé par" -msgstr "" +msgstr "Created by" -#: streetup/notifications/models.py:28 streetup/notifications/models.py:81 -#: streetup/notifications/models.py:330 +#: .\notifications\models.py:28 .\notifications\models.py:81 +#: .\notifications\models.py:330 msgid "Créé le" -msgstr "" +msgstr "Created on" -#: streetup/notifications/models.py:34 streetup/notifications/models.py:224 +#: .\notifications\models.py:34 .\notifications\models.py:224 msgid "Équipe" -msgstr "" +msgstr "Team" -#: streetup/notifications/models.py:35 -#: streetup/notifications/templates/notifications/team_list.html:9 +#: .\notifications\models.py:35 +#: .\notifications\templates\notifications\team_list.html:9 msgid "Équipes" -msgstr "" +msgstr "Teams" -#: streetup/notifications/models.py:49 streetup/notifications/models.py:415 -#: streetup/notifications/models.py:544 +#: .\notifications\models.py:49 .\notifications\models.py:464 +#: .\notifications\models.py:593 msgid "Message" msgstr "Message" -#: streetup/notifications/models.py:50 +#: .\notifications\models.py:50 msgid "Rappel" msgstr "Reminder" -#: streetup/notifications/models.py:51 +#: .\notifications\models.py:51 msgid "Tâche" msgstr "Task" -#: streetup/notifications/models.py:52 +#: .\notifications\models.py:52 msgid "Alerte" msgstr "Alert" -#: streetup/notifications/models.py:53 +#: .\notifications\models.py:53 msgid "Information" msgstr "Information" -#: streetup/notifications/models.py:79 +#: .\notifications\models.py:79 msgid "Expéditeur" -msgstr "" +msgstr "Sender" -#: streetup/notifications/models.py:86 +#: .\notifications\models.py:86 msgid "Laisser vide pour ne pas faire expirer la notification." -msgstr "Laisser vide pour ne pas faire expirer la notification." +msgstr "Leave blank if the notification should not expire." -#: streetup/notifications/models.py:92 +#: .\notifications\models.py:92 msgid "Lien d'action" -msgstr "" +msgstr "Action link" -#: streetup/notifications/models.py:93 +#: .\notifications\models.py:93 msgid "URL relative ou absolue vers laquelle l'utilisateur est redirigé." -msgstr "" +msgstr "Relative or absolute URL the user is redirected to." -#: streetup/notifications/models.py:104 +#: .\notifications\models.py:104 msgid "Application source" -msgstr "Application source" +msgstr "Source application" -#: streetup/notifications/models.py:105 +#: .\notifications\models.py:105 msgid "Nom de l'application qui a généré la notification." -msgstr "" +msgstr "Name of the application that generated the notification." -#: streetup/notifications/models.py:109 +#: .\notifications\models.py:109 msgid "Notification système" -msgstr "" +msgstr "System notification" -#: streetup/notifications/models.py:110 +#: .\notifications\models.py:110 msgid "Générée automatiquement par le système." -msgstr "" +msgstr "Generated automatically by the system." -#: streetup/notifications/models.py:114 streetup/notifications/models.py:517 +#: .\notifications\models.py:114 .\notifications\models.py:566 msgid "Prise en charge unique" msgstr "Single claim" -#: streetup/notifications/models.py:116 +#: .\notifications\models.py:116 msgid "" "Si activé, dès qu'un destinataire marque cette notification comme lue, elle " "est automatiquement archivée pour tous les autres destinataires." -msgstr "" +msgstr "If enabled, as soon as one recipient marks this notification as read, it is automatically archived for all other recipients." -#: streetup/notifications/models.py:126 +#: .\notifications\models.py:126 msgid "Discussion liée" -msgstr "" +msgstr "Linked discussion" -#: streetup/notifications/models.py:147 streetup/notifications/models.py:159 -#: streetup/notifications/models.py:218 streetup/notifications/models.py:246 +#: .\notifications\models.py:147 .\notifications\models.py:159 +#: .\notifications\models.py:218 .\notifications\models.py:246 msgid "Notification" msgstr "Notification" -#: streetup/notifications/models.py:148 -#: streetup/notifications/templates/notifications/discussion_list.html:44 -#: streetup/notifications/templates/notifications/inbox.html:32 -#: streetup/notifications/templates/notifications/inbox_mobile.html:4 -#: streetup/notifications/templates/notifications/inbox_mobile.html:30 +#: .\notifications\models.py:148 +#: .\notifications\templates\notifications\discussion_list.html:77 +#: .\notifications\templates\notifications\inbox.html:116 +#: .\notifications\templates\notifications\inbox_mobile.html:4 +#: .\notifications\templates\notifications\inbox_mobile.html:30 msgid "Notifications" msgstr "Notifications" -#: streetup/notifications/models.py:165 +#: .\notifications\models.py:165 msgid "Destinataire" -msgstr "Destinataire" +msgstr "Recipient" -#: streetup/notifications/models.py:167 streetup/notifications/models.py:303 +#: .\notifications\models.py:167 .\notifications\models.py:303 msgid "Lu le" -msgstr "Lu le" +msgstr "Read on" -#: streetup/notifications/models.py:168 +#: .\notifications\models.py:168 msgid "Archivé le" -msgstr "" +msgstr "Archived on" -#: streetup/notifications/models.py:169 +#: .\notifications\models.py:169 msgid "Rappel envoyé le" -msgstr "" +msgstr "Reminder sent on" -#: streetup/notifications/models.py:205 +#: .\notifications\models.py:205 msgid "Destinataire de notification" -msgstr "Destinataire de notification" +msgstr "Notification recipient" -#: streetup/notifications/models.py:206 +#: .\notifications\models.py:206 msgid "Destinataires de notification" -msgstr "Destinataires de notification" +msgstr "Notification recipients" -#: streetup/notifications/models.py:231 streetup/notifications/models.py:295 +#: .\notifications\models.py:231 .\notifications\models.py:295 msgid "Notification d'équipe" -msgstr "" +msgstr "Team notification" -#: streetup/notifications/models.py:232 +#: .\notifications\models.py:232 msgid "Notifications d'équipe" -msgstr "" +msgstr "Team notifications" -#: streetup/notifications/models.py:250 streetup/notifications/models.py:548 +#: .\notifications\models.py:250 .\notifications\models.py:597 msgid "Fichier" msgstr "File" -#: streetup/notifications/models.py:255 streetup/notifications/models.py:550 +#: .\notifications\models.py:255 .\notifications\models.py:599 msgid "Nom du fichier" -msgstr "Nom du fichier" +msgstr "File name" -#: streetup/notifications/models.py:263 +#: .\notifications\models.py:263 msgid "Ajouté par" -msgstr "" +msgstr "Added by" -#: streetup/notifications/models.py:265 streetup/notifications/models.py:551 +#: .\notifications\models.py:265 .\notifications\models.py:600 msgid "Ajouté le" -msgstr "" +msgstr "Added on" -#: streetup/notifications/models.py:283 +#: .\notifications\models.py:283 msgid "Pièce jointe" -msgstr "" +msgstr "Attachment" -#: streetup/notifications/models.py:301 +#: .\notifications\models.py:301 msgid "Utilisateur" -msgstr "Utilisateur" +msgstr "User" -#: streetup/notifications/models.py:306 +#: .\notifications\models.py:306 msgid "Lecture de notification d'équipe" -msgstr "" +msgstr "Team notification read" -#: streetup/notifications/models.py:307 +#: .\notifications\models.py:307 msgid "Lectures de notifications d'équipe" -msgstr "" +msgstr "Team notification reads" -#: streetup/notifications/models.py:331 +#: .\notifications\models.py:331 msgid "Mis à jour le" -msgstr "" +msgstr "Updated on" -#: streetup/notifications/models.py:336 -#: streetup/notifications/templates/notifications/discussion_detail.html:105 +#: .\notifications\models.py:336 +#: .\notifications\templates\notifications\discussion_detail.html:105 +#: .\notifications\templates\notifications\discussion_list.html:144 +#: .\notifications\templates\notifications\inbox.html:421 msgid "Participants" msgstr "Participants" -#: streetup/notifications/models.py:338 -#: streetup/notifications/templates/notifications/discussion_detail.html:97 +#: .\notifications\models.py:338 +#: .\notifications\templates\notifications\discussion_detail.html:97 +#: .\notifications\templates\notifications\discussion_list.html:120 +#: .\notifications\templates\notifications\inbox.html:397 msgid "Clôturée" msgstr "Closed" -#: streetup/notifications/models.py:346 +#: .\notifications\models.py:346 msgid "Type d'objet lié" -msgstr "" +msgstr "Linked object type" -#: streetup/notifications/models.py:349 +#: .\notifications\models.py:349 msgid "ID objet lié" -msgstr "" +msgstr "Linked object ID" -#: streetup/notifications/models.py:355 +#: .\notifications\models.py:355 msgid "URL objet lié" -msgstr "" +msgstr "Linked object URL" -#: streetup/notifications/models.py:358 +#: .\notifications\models.py:358 msgid "Libellé objet lié" -msgstr "" +msgstr "Linked object label" -#: streetup/notifications/models.py:380 streetup/notifications/models.py:396 +#: .\notifications\models.py:392 +msgid "Intervention" +msgstr "Intervention" + +#: .\notifications\models.py:400 +msgid "Observation" +msgstr "Observation" + +#: .\notifications\models.py:408 +msgid "Ordre de préparation" +msgstr "Preparation order" + +#: .\notifications\models.py:416 +msgid "Projet" +msgstr "Project" + +#: .\notifications\models.py:424 +msgid "Générale" +msgstr "General" + +#: .\notifications\models.py:429 .\notifications\models.py:445 msgid "Discussion" msgstr "Discussion" -#: streetup/notifications/models.py:381 -#: streetup/notifications/templates/notifications/discussion_list.html:37 -#: streetup/notifications/templates/notifications/inbox.html:54 +#: .\notifications\models.py:430 +#: .\notifications\templates\notifications\discussion_list.html:70 +#: .\notifications\templates\notifications\inbox.html:133 msgid "Discussions" msgstr "Discussions" -#: streetup/notifications/models.py:404 +#: .\notifications\models.py:453 msgid "Auteur" -msgstr "Auteur" +msgstr "Author" -#: streetup/notifications/models.py:407 +#: .\notifications\models.py:456 msgid "Envoyé le" -msgstr "" +msgstr "Sent on" -#: streetup/notifications/models.py:408 +#: .\notifications\models.py:457 msgid "Supprimé" -msgstr "" +msgstr "Deleted" -#: streetup/notifications/models.py:416 +#: .\notifications\models.py:465 msgid "Messages" msgstr "Messages" -#: streetup/notifications/models.py:441 +#: .\notifications\models.py:490 msgid "Intervention annulée" -msgstr "" +msgstr "Intervention cancelled" -#: streetup/notifications/models.py:446 +#: .\notifications\models.py:495 msgid "Tous (pas de filtre)" -msgstr "Tous (pas de filtre)" +msgstr "All (no filter)" -#: streetup/notifications/models.py:447 +#: .\notifications\models.py:496 msgid "Doublon" -msgstr "Doublon" +msgstr "Duplicate" -#: streetup/notifications/models.py:448 +#: .\notifications\models.py:497 msgid "A rediriger" -msgstr "A rediriger" +msgstr "To redirect" -#: streetup/notifications/models.py:449 +#: .\notifications\models.py:498 msgid "Pas sous notre gestion" -msgstr "Pas sous notre gestion" +msgstr "Not under our management" -#: streetup/notifications/models.py:450 +#: .\notifications\models.py:499 msgid "Non-relevant" -msgstr "Non-relevant" +msgstr "Not relevant" -#: streetup/notifications/models.py:451 +#: .\notifications\models.py:500 msgid "Autre" -msgstr "Autre" +msgstr "Other" -#: streetup/notifications/models.py:455 +#: .\notifications\models.py:504 msgid "Nom de la règle" -msgstr "" +msgstr "Rule name" -#: streetup/notifications/models.py:456 +#: .\notifications\models.py:505 msgid "Active" msgstr "Active" -#: streetup/notifications/models.py:462 +#: .\notifications\models.py:511 msgid "Événement déclencheur" -msgstr "" +msgstr "Trigger event" -#: streetup/notifications/models.py:468 +#: .\notifications\models.py:517 msgid "Filtre : type d'annulation" -msgstr "" +msgstr "Filter: cancellation type" -#: streetup/notifications/models.py:470 +#: .\notifications\models.py:519 msgid "" "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "valeur pour n'agir que sur ce type précis." -msgstr "" +msgstr "Leave blank to trigger on all cancellation types. Select a value to trigger only on that type." -#: streetup/notifications/models.py:480 +#: .\notifications\models.py:529 msgid "Type de notification" -msgstr "Type de notification" +msgstr "Notification type" -#: streetup/notifications/models.py:484 +#: .\notifications\models.py:533 msgid "Modèle de titre" -msgstr "" +msgstr "Title template" -#: streetup/notifications/models.py:486 +#: .\notifications\models.py:535 #, python-brace-format msgid "" "Variables disponibles : {intervention_code}, {intervention_title}, " "{cancellation_type_label}" -msgstr "" +msgstr "Available variables: {intervention_code}, {intervention_title}, {cancellation_type_label}" -#: streetup/notifications/models.py:492 +#: .\notifications\models.py:541 msgid "Modèle de contenu" -msgstr "" +msgstr "Content template" -#: streetup/notifications/models.py:494 +#: .\notifications\models.py:543 #, python-brace-format msgid "" "Variables disponibles : {intervention_code}, {intervention_title}, " "{cancellation_type_label}, {cancellation_reason}" -msgstr "" +msgstr "Available variables: {intervention_code}, {intervention_title}, {cancellation_type_label}, {cancellation_reason}" -#: streetup/notifications/models.py:505 +#: .\notifications\models.py:554 msgid "" "Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "équipes." -msgstr "" +msgstr "Notifications will be sent to all members (CompanyMember) of these teams." -#: streetup/notifications/models.py:511 +#: .\notifications\models.py:560 msgid "Utilisateurs destinataires supplémentaires" -msgstr "" +msgstr "Additional individual recipients" -#: streetup/notifications/models.py:519 +#: .\notifications\models.py:568 msgid "" "Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "charge), elle est automatiquement archivée pour tous les autres " "destinataires." -msgstr "" +msgstr "If enabled, as soon as one recipient claims the notification, it is automatically archived for all other recipients." -#: streetup/notifications/models.py:525 +#: .\notifications\models.py:574 msgid "Créée le" -msgstr "" +msgstr "Created on" -#: streetup/notifications/models.py:526 +#: .\notifications\models.py:575 msgid "Mise à jour le" -msgstr "" +msgstr "Updated on" -#: streetup/notifications/models.py:532 +#: .\notifications\models.py:581 msgid "Règle de notification" -msgstr "" +msgstr "Notification rule" -#: streetup/notifications/models.py:533 +#: .\notifications\models.py:582 msgid "Règles de notification" -msgstr "" +msgstr "Notification rules" -#: streetup/notifications/models.py:569 +#: .\notifications\models.py:618 msgid "Pièce jointe de message" -msgstr "" +msgstr "Message attachment" -#: streetup/notifications/models.py:570 +#: .\notifications\models.py:619 msgid "Pièces jointes de messages" -msgstr "" +msgstr "Message attachments" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:8 -#: streetup/notifications/templates/notifications/discussion_list.html:41 +#: .\notifications\templates\notifications\_new_discussion_modal.html:8 +#: .\notifications\templates\notifications\discussion_list.html:74 +#: .\notifications\templates\notifications\inbox.html:165 msgid "Nouvelle discussion" msgstr "New discussion" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:10 +#: .\notifications\templates\notifications\_new_discussion_modal.html:10 msgid "Fermer" msgstr "Close" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:17 +#: .\notifications\templates\notifications\_new_discussion_modal.html:17 msgid "Sujet / Titre (optionnel)" msgstr "Subject / Title (optional)" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:20 +#: .\notifications\templates\notifications\_new_discussion_modal.html:20 msgid "Ex: Question sur le dossier..." -msgstr "Ex: Question about the file..." +msgstr "E.g.: Question about the file..." -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:25 +#: .\notifications\templates\notifications\_new_discussion_modal.html:25 msgid "Message *" msgstr "Message *" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:28 +#: .\notifications\templates\notifications\_new_discussion_modal.html:28 msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." msgstr "Type @ to mention/tag users or teams." -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:32 +#: .\notifications\templates\notifications\_new_discussion_modal.html:32 msgid "Rédigez votre message... (@ pour tagger quelqu'un)" msgstr "Write your message... (@ to tag someone)" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:44 +#: .\notifications\templates\notifications\_new_discussion_modal.html:44 msgid "Joindre des fichiers" msgstr "Attach files" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:52 -#: streetup/notifications/templates/notifications/create.html:82 -#: streetup/notifications/templates/notifications/notification_settings.html:83 -#: streetup/notifications/templates/notifications/team_form.html:39 +#: .\notifications\templates\notifications\_new_discussion_modal.html:52 +#: .\notifications\templates\notifications\create.html:82 +#: .\notifications\templates\notifications\notification_settings.html:99 +#: .\notifications\templates\notifications\team_form.html:39 msgid "Annuler" msgstr "Cancel" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:55 -#: streetup/notifications/templates/notifications/create.html:85 -#: streetup/notifications/templates/notifications/discussion_detail.html:194 +#: .\notifications\templates\notifications\_new_discussion_modal.html:55 +#: .\notifications\templates\notifications\create.html:85 +#: .\notifications\templates\notifications\discussion_detail.html:194 msgid "Envoyer" msgstr "Send" -#: streetup/notifications/templates/notifications/create.html:11 +#: .\notifications\templates\notifications\create.html:11 msgid "Créer une notification" -msgstr "" +msgstr "Create notification" -#: streetup/notifications/templates/notifications/create.html:69 -#: streetup/notifications/templates/notifications/create.html:75 +#: .\notifications\templates\notifications\create.html:69 +#: .\notifications\templates\notifications\create.html:75 msgid "Ctrl+clic pour sélectionner plusieurs" -msgstr "" +msgstr "Ctrl+click to select multiple" -#: streetup/notifications/templates/notifications/discussion_detail.html:120 +#: .\notifications\templates\notifications\discussion_detail.html:85 +msgid "Retour aux discussions" +msgstr "Back to discussions" + +#: .\notifications\templates\notifications\discussion_detail.html:120 msgid "Aucun message pour l'instant. Soyez le premier à écrire." msgstr "No messages yet. Be the first to write." -#: streetup/notifications/templates/notifications/discussion_detail.html:184 +#: .\notifications\templates\notifications\discussion_detail.html:184 msgid "Écrire un message... (@ pour mentionner)" msgstr "Write a message... (@ to mention)" -#: streetup/notifications/templates/notifications/discussion_detail.html:187 +#: .\notifications\templates\notifications\discussion_detail.html:187 msgid "Joindre" msgstr "Attach" -#: streetup/notifications/templates/notifications/discussion_detail.html:202 +#: .\notifications\templates\notifications\discussion_detail.html:202 msgid "Cette discussion est clôturée." msgstr "This discussion is closed." -#: streetup/notifications/templates/notifications/discussion_list.html:46 -#: streetup/notifications/templates/notifications/discussion_list.html:47 -#: streetup/notifications/templates/notifications/inbox.html:57 +#: .\notifications\templates\notifications\discussion_list.html:79 +#: .\notifications\templates\notifications\discussion_list.html:80 +#: .\notifications\templates\notifications\inbox.html:170 +#: .\notifications\templates\notifications\inbox.html:171 msgid "Paramètres" msgstr "Settings" -#: streetup/notifications/templates/notifications/discussion_list.html:56 +#: .\notifications\templates\notifications\discussion_list.html:89 +#: .\notifications\templates\notifications\inbox.html:366 msgid "Vous n'avez encore aucune discussion." -msgstr "You do not have any discussions yet." +msgstr "You don't have any discussions yet." -#: streetup/notifications/templates/notifications/discussion_list.html:92 +#: .\notifications\templates\notifications\discussion_list.html:137 +#: .\notifications\templates\notifications\inbox.html:414 msgid "Aucun message encore." -msgstr "Aucun message encore." +msgstr "No messages yet." -#: streetup/notifications/templates/notifications/inbox.html:44 -#: streetup/notifications/templates/notifications/inbox_mobile.html:72 +#: .\notifications\templates\notifications\discussion_list.html:160 +#: .\notifications\templates\notifications\inbox.html:437 +msgid "participants au total" +msgstr "participants in total" + +#: .\notifications\templates\notifications\discussion_list.html:170 +#: .\notifications\templates\notifications\inbox.html:447 +msgid "non lu(s)" +msgstr "unread" + +#: .\notifications\templates\notifications\inbox.html:151 +#: .\notifications\templates\notifications\inbox_mobile.html:72 msgid "Tout marquer comme lu" msgstr "Mark all as read" -#: streetup/notifications/templates/notifications/inbox.html:50 +#: .\notifications\templates\notifications\inbox.html:157 msgid "Nouvelle notification" msgstr "New notification" -#: streetup/notifications/templates/notifications/inbox.html:68 -#: streetup/notifications/templates/notifications/inbox_mobile.html:45 +#: .\notifications\templates\notifications\inbox.html:192 +#: .\notifications\templates\notifications\inbox_mobile.html:45 msgid "Tous les types" msgstr "All types" -#: streetup/notifications/templates/notifications/inbox.html:80 -#: streetup/notifications/templates/notifications/inbox_mobile.html:57 +#: .\notifications\templates\notifications\inbox.html:204 +#: .\notifications\templates\notifications\inbox_mobile.html:57 msgid "Archivées" msgstr "Archived" -#: streetup/notifications/templates/notifications/inbox.html:86 -#: streetup/notifications/templates/notifications/inbox_mobile.html:61 +#: .\notifications\templates\notifications\inbox.html:210 +#: .\notifications\templates\notifications\inbox_mobile.html:61 msgid "Réinitialiser" msgstr "Reset" -#: streetup/notifications/templates/notifications/inbox.html:120 -#: streetup/notifications/templates/notifications/inbox_mobile.html:90 +#: .\notifications\templates\notifications\inbox.html:244 +#: .\notifications\templates\notifications\inbox_mobile.html:90 msgid "Nouveau" msgstr "New" -#: streetup/notifications/templates/notifications/inbox.html:131 -#: streetup/notifications/templates/notifications/inbox.html:135 +#: .\notifications\templates\notifications\inbox.html:255 +#: .\notifications\templates\notifications\inbox.html:259 msgid "Prendre en charge" -msgstr "Claim" +msgstr "Take over" -#: streetup/notifications/templates/notifications/inbox.html:131 -#: streetup/notifications/templates/notifications/inbox.html:137 +#: .\notifications\templates\notifications\inbox.html:255 +#: .\notifications\templates\notifications\inbox.html:261 msgid "Marquer comme lu" msgstr "Mark as read" -#: streetup/notifications/templates/notifications/inbox.html:146 -#: streetup/notifications/templates/notifications/inbox_mobile.html:125 +#: .\notifications\templates\notifications\inbox.html:270 +#: .\notifications\templates\notifications\inbox_mobile.html:125 msgid "Archiver" msgstr "Archive" -#: streetup/notifications/templates/notifications/inbox.html:223 -#: streetup/notifications/templates/notifications/inbox_mobile.html:141 +#: .\notifications\templates\notifications\inbox.html:347 +#: .\notifications\templates\notifications\inbox_mobile.html:141 msgid "Aucune notification archivée." msgstr "No archived notifications." -#: streetup/notifications/templates/notifications/inbox.html:225 -#: streetup/notifications/templates/notifications/inbox_mobile.html:143 +#: .\notifications\templates\notifications\inbox.html:349 +#: .\notifications\templates\notifications\inbox_mobile.html:143 msgid "Vous n'avez aucune notification." msgstr "You have no notifications." -#: streetup/notifications/templates/notifications/inbox_mobile.html:36 +#: .\notifications\templates\notifications\inbox_mobile.html:36 msgid "Accueil" msgstr "Home" -#: streetup/notifications/templates/notifications/inbox_mobile.html:115 +#: .\notifications\templates\notifications\inbox_mobile.html:115 msgid "Prendre" -msgstr "Claim" +msgstr "Take" -#: streetup/notifications/templates/notifications/inbox_mobile.html:117 +#: .\notifications\templates\notifications\inbox_mobile.html:117 msgid "Lu" msgstr "Read" -#: streetup/notifications/templates/notifications/notification_settings.html:15 +#: .\notifications\templates\notifications\notification_settings.html:15 msgid "Paramètres des notifications" msgstr "Notification settings" -#: streetup/notifications/templates/notifications/notification_settings.html:17 +#: .\notifications\templates\notifications\notification_settings.html:17 msgid "" "Gérez vos préférences de rappel par e-mail pour les notifications non lues." -msgstr "" +msgstr "Manage your email reminder preferences for unread notifications." -#: streetup/notifications/templates/notifications/notification_settings.html:26 +#: .\notifications\templates\notifications\notification_settings.html:26 msgid "Rappels par e-mail" msgstr "Email reminders" -#: streetup/notifications/templates/notifications/notification_settings.html:37 +#: .\notifications\templates\notifications\notification_settings.html:36 +msgid "Langue préférée pour les e-mails et notifications" +msgstr "Preferred language for emails and notifications" + +#: .\notifications\templates\notifications\notification_settings.html:45 +msgid "" +"Les e-mails de rappel et les notifications automatiques vous seront envoyés " +"dans cette langue." +msgstr "Reminder emails and automatic notifications will be sent in this language." + +#: .\notifications\templates\notifications\notification_settings.html:53 msgid "Activer les rappels par e-mail" msgstr "Enable email reminders" -#: streetup/notifications/templates/notifications/notification_settings.html:40 +#: .\notifications\templates\notifications\notification_settings.html:56 msgid "" "Recevoir un récapitulatif par e-mail si des notifications restent non lues " "au-delà du délai spécifié." -msgstr "" +msgstr "Receive an email summary if notifications remain unread past the specified delay." -#: streetup/notifications/templates/notifications/notification_settings.html:51 +#: .\notifications\templates\notifications\notification_settings.html:67 msgid "Adresse(s) e-mail de réception" msgstr "Recipient email address(es)" -#: streetup/notifications/templates/notifications/notification_settings.html:59 +#: .\notifications\templates\notifications\notification_settings.html:75 msgid "Laissez vide pour utiliser l'e-mail principal de votre compte" -msgstr "Leave empty to use your account primary email" +msgstr "Leave blank to use your account's primary email" -#: streetup/notifications/templates/notifications/notification_settings.html:60 +#: .\notifications\templates\notifications\notification_settings.html:76 msgid "Pour plusieurs destinataires, séparez les adresses par des virgules." msgstr "For multiple recipients, separate addresses with commas." -#: streetup/notifications/templates/notifications/notification_settings.html:67 +#: .\notifications\templates\notifications\notification_settings.html:83 msgid "Délai avant l'envoi du rappel (en heures)" msgstr "Delay before sending reminder (in hours)" -#: streetup/notifications/templates/notifications/notification_settings.html:71 +#: .\notifications\templates\notifications\notification_settings.html:87 msgid "heures" msgstr "hours" -#: streetup/notifications/templates/notifications/notification_settings.html:77 +#: .\notifications\templates\notifications\notification_settings.html:93 msgid "" "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "bout de 24 heures." -msgstr "" +msgstr "Example: 24h = a reminder will be sent if a notification is unread after 24 hours." -#: streetup/notifications/templates/notifications/notification_settings.html:86 +#: .\notifications\templates\notifications\notification_settings.html:102 msgid "Enregistrer mes préférences" msgstr "Save my preferences" -#: streetup/notifications/templates/notifications/team_form.html:11 +#: .\notifications\templates\notifications\team_form.html:11 msgid "une équipe" -msgstr "" +msgstr "a team" -#: streetup/notifications/templates/notifications/team_form.html:34 +#: .\notifications\templates\notifications\team_form.html:34 msgid "Ctrl+clic pour sélectionner plusieurs membres" -msgstr "" +msgstr "Ctrl+click to select multiple members" -#: streetup/notifications/templates/notifications/team_form.html:42 +#: .\notifications\templates\notifications\team_form.html:42 msgid "Enregistrer" msgstr "Save" -#: streetup/notifications/templates/notifications/team_list.html:14 +#: .\notifications\templates\notifications\team_list.html:14 msgid "Nouvelle équipe" -msgstr "" +msgstr "New team" -#: streetup/notifications/templates/notifications/team_list.html:18 +#: .\notifications\templates\notifications\team_list.html:18 msgid "Retour aux notifications" -msgstr "Retour aux notifications" +msgstr "Back to notifications" -#: streetup/notifications/templates/notifications/team_list.html:46 -#: streetup/notifications/views.py:456 +#: .\notifications\templates\notifications\team_list.html:46 +#: .\notifications\views.py:498 msgid "Modifier" msgstr "Edit" -#: streetup/notifications/templates/notifications/team_list.html:51 +#: .\notifications\templates\notifications\team_list.html:51 msgid "Supprimer cette équipe ?" -msgstr "" +msgstr "Delete this team?" -#: streetup/notifications/templates/notifications/team_list.html:54 +#: .\notifications\templates\notifications\team_list.html:54 msgid "Supprimer" msgstr "Delete" -#: streetup/notifications/templates/notifications/team_list.html:68 +#: .\notifications\templates\notifications\team_list.html:68 msgid "Aucun membre" -msgstr "Aucun membre" +msgstr "No members" -#: streetup/notifications/templates/notifications/team_list.html:73 +#: .\notifications\templates\notifications\team_list.html:73 msgid "membre(s)" -msgstr "membre(s)" +msgstr "member(s)" -#: streetup/notifications/templates/notifications/team_list.html:75 +#: .\notifications\templates\notifications\team_list.html:75 msgid "Créée par" -msgstr "" +msgstr "Created by" -#: streetup/notifications/templates/notifications/team_list.html:85 +#: .\notifications\templates\notifications\team_list.html:85 msgid "Aucune équipe définie." -msgstr "" +msgstr "No teams defined." -#: streetup/notifications/templates/notifications/team_list.html:88 +#: .\notifications\templates\notifications\team_list.html:88 msgid "Créer une équipe" -msgstr "" +msgstr "Create team" -#: streetup/notifications/views.py:348 +#: .\notifications\views.py:390 msgid "Vous n'avez pas les droits pour créer une notification." -msgstr "" +msgstr "You do not have permission to create a notification." -#: streetup/notifications/views.py:381 +#: .\notifications\views.py:423 msgid "Notification envoyée avec succès." -msgstr "" +msgstr "Notification sent successfully." -#: streetup/notifications/views.py:418 +#: .\notifications\views.py:460 msgid "Vous n'avez pas les droits pour créer une équipe." -msgstr "" +msgstr "You do not have permission to create a team." -#: streetup/notifications/views.py:428 +#: .\notifications\views.py:470 msgid "Équipe créée avec succès." -msgstr "" +msgstr "Team created successfully." -#: streetup/notifications/views.py:433 +#: .\notifications\views.py:475 msgid "Créer" -msgstr "" +msgstr "Create" -#: streetup/notifications/views.py:444 +#: .\notifications\views.py:486 msgid "Vous n'avez pas les droits pour modifier une équipe." -msgstr "" +msgstr "You do not have permission to edit a team." -#: streetup/notifications/views.py:451 +#: .\notifications\views.py:493 msgid "Équipe mise à jour." -msgstr "" +msgstr "Team updated." -#: streetup/notifications/views.py:466 +#: .\notifications\views.py:508 msgid "Vous n'avez pas les droits pour supprimer une équipe." -msgstr "" +msgstr "You do not have permission to delete a team." -#: streetup/notifications/views.py:469 +#: .\notifications\views.py:511 msgid "Équipe supprimée." -msgstr "" +msgstr "Team deleted." -#: streetup/notifications/views.py:550 +#: .\notifications\views.py:561 msgid "Vous n'êtes pas participant de cette discussion." -msgstr "" +msgstr "You are not a participant in this discussion." -#: streetup/notifications/views.py:563 +#: .\notifications\views.py:574 msgid "Message envoyé." -msgstr "" +msgstr "Message sent." -#: streetup/notifications/views.py:601 +#: .\notifications\views.py:602 +#, python-format +msgid "Discussion de %(name)s" +msgstr "Discussion from %(name)s" + +#: .\notifications\views.py:613 msgid "Discussion créée avec succès." msgstr "Discussion created successfully." -#: streetup/notifications/views.py:604 +#: .\notifications\views.py:616 msgid "Le contenu du message ne peut pas être vide." msgstr "Message content cannot be empty." -#: streetup/notifications/views.py:621 +#: .\notifications\views.py:633 msgid "Vos préférences de rappel par e-mail ont été enregistrées." msgstr "Your email reminder preferences have been saved." diff --git a/streetup/notifications/locale/fr/LC_MESSAGES/django.mo b/streetup/notifications/locale/fr/LC_MESSAGES/django.mo index 1726f7b..b2d9814 100644 Binary files a/streetup/notifications/locale/fr/LC_MESSAGES/django.mo and b/streetup/notifications/locale/fr/LC_MESSAGES/django.mo differ diff --git a/streetup/notifications/locale/fr/LC_MESSAGES/django.po b/streetup/notifications/locale/fr/LC_MESSAGES/django.po index 705d316..d9dad44 100644 --- a/streetup/notifications/locale/fr/LC_MESSAGES/django.po +++ b/streetup/notifications/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-13 19:20+0200\n" +"POT-Creation-Date: 2026-08-14 22:44+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,723 +17,836 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: streetup/notifications/forms.py:35 streetup/notifications/models.py:71 -#: streetup/notifications/models.py:321 +#: .\notifications\forms.py:35 .\notifications\models.py:71 +#: .\notifications\models.py:321 msgid "Titre" msgstr "Titre" -#: streetup/notifications/forms.py:40 streetup/notifications/models.py:72 -#: streetup/notifications/models.py:406 +#: .\notifications\forms.py:40 .\notifications\models.py:72 +#: .\notifications\models.py:455 msgid "Contenu" msgstr "Contenu" -#: streetup/notifications/forms.py:46 streetup/notifications/models.py:69 +#: .\notifications\forms.py:46 .\notifications\models.py:69 msgid "Type" msgstr "Type" -#: streetup/notifications/forms.py:52 +#: .\notifications\forms.py:52 msgid "Lien d'action (URL)" msgstr "Lien d'action (URL)" -#: streetup/notifications/forms.py:58 streetup/notifications/models.py:98 +#: .\notifications\forms.py:58 .\notifications\models.py:98 msgid "Libellé du lien" msgstr "Libellé du lien" -#: streetup/notifications/forms.py:63 streetup/notifications/models.py:85 -#: streetup/notifications/templates/notifications/inbox.html:180 +#: .\notifications\forms.py:63 .\notifications\models.py:85 +#: .\notifications\templates\notifications\inbox.html:304 msgid "Expire le" msgstr "Expire le" -#: streetup/notifications/forms.py:68 streetup/notifications/models.py:284 -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:41 +#: .\notifications\forms.py:68 .\notifications\models.py:284 +#: .\notifications\templates\notifications\_new_discussion_modal.html:41 msgid "Pièces jointes" msgstr "Pièces jointes" -#: streetup/notifications/forms.py:69 +#: .\notifications\forms.py:69 msgid "Photos ou documents (plusieurs fichiers possibles)." msgstr "Photos ou documents (plusieurs fichiers possibles)." -#: streetup/notifications/forms.py:76 +#: .\notifications\forms.py:76 msgid "Destinataires individuels" msgstr "Destinataires individuels" -#: streetup/notifications/forms.py:82 streetup/notifications/models.py:504 +#: .\notifications\forms.py:82 .\notifications\models.py:553 msgid "Équipes destinataires" msgstr "Équipes destinataires" -#: streetup/notifications/forms.py:92 +#: .\notifications\forms.py:92 msgid "Veuillez sélectionner au moins un destinataire ou une équipe." msgstr "Veuillez sélectionner au moins un destinataire ou une équipe." -#: streetup/notifications/forms.py:123 +#: .\notifications\forms.py:127 msgid "Ex: email1@exemple.com, email2@exemple.com" msgstr "Ex: email1@exemple.com, email2@exemple.com" -#: streetup/notifications/forms.py:148 +#: .\notifications\forms.py:152 #, python-format msgid "L'adresse e-mail '%(email)s' n'est pas valide." msgstr "L'adresse e-mail '%(email)s' n'est pas valide." -#: streetup/notifications/management/commands/send_unread_notification_reminders.py:106 +#: .\notifications\management\commands\send_unread_notification_reminders.py:95 +#, python-format +msgid "[StreetUp] Rappel : %(count)d notification(s) non lue(s)" +msgstr "[StreetUp] Rappel : %(count)d notification(s) non lue(s)" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:101 +#, python-format +msgid "Bonjour %(name)s," +msgstr "Bonjour %(name)s," + +#: .\notifications\management\commands\send_unread_notification_reminders.py:102 +#, python-format +msgid "" +"Vous avez %(count)d notification(s) non lue(s) reçue(s) il y a plus de " +"%(delay)d heure(s) :" +msgstr "Vous avez %(count)d notification(s) non lue(s) reçue(s) il y a plus de %(delay)d heure(s) :" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:117 msgid "Système" msgstr "Système" -#: streetup/notifications/models.py:12 +#: .\notifications\management\commands\send_unread_notification_reminders.py:125 +msgid "reçue le" +msgstr "reçue le" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:125 +msgid "par" +msgstr "par" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:126 +msgid "Lien" +msgstr "Lien" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:131 +msgid "Reçue le" +msgstr "Reçue le" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:132 +msgid "Consulter" +msgstr "Consulter" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:136 +msgid "Accédez à votre boîte de réception :" +msgstr "Accédez à votre boîte de réception :" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:139 +msgid "Notifications non lues" +msgstr "Notifications non lues" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:140 +#, python-format +msgid "" +"Vous avez %(count)d notification(s) non lue(s) qui " +"attendent votre attention :" +msgstr "Vous avez %(count)d notification(s) non lue(s) qui attendent votre attention :" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:141 +msgid "Voir mes notifications" +msgstr "Voir mes notifications" + +#: .\notifications\models.py:12 msgid "Nom" msgstr "Nom" -#: streetup/notifications/models.py:13 +#: .\notifications\models.py:13 msgid "Description" msgstr "Description" -#: streetup/notifications/models.py:18 +#: .\notifications\models.py:18 msgid "Membres" msgstr "Membres" -#: streetup/notifications/models.py:26 streetup/notifications/models.py:328 +#: .\notifications\models.py:26 .\notifications\models.py:328 msgid "Créé par" msgstr "Créé par" -#: streetup/notifications/models.py:28 streetup/notifications/models.py:81 -#: streetup/notifications/models.py:330 +#: .\notifications\models.py:28 .\notifications\models.py:81 +#: .\notifications\models.py:330 msgid "Créé le" msgstr "Créé le" -#: streetup/notifications/models.py:34 streetup/notifications/models.py:224 +#: .\notifications\models.py:34 .\notifications\models.py:224 msgid "Équipe" msgstr "Équipe" -#: streetup/notifications/models.py:35 -#: streetup/notifications/templates/notifications/team_list.html:9 +#: .\notifications\models.py:35 +#: .\notifications\templates\notifications\team_list.html:9 msgid "Équipes" msgstr "Équipes" -#: streetup/notifications/models.py:49 streetup/notifications/models.py:415 -#: streetup/notifications/models.py:544 +#: .\notifications\models.py:49 .\notifications\models.py:464 +#: .\notifications\models.py:593 msgid "Message" msgstr "Message" -#: streetup/notifications/models.py:50 +#: .\notifications\models.py:50 msgid "Rappel" msgstr "Rappel" -#: streetup/notifications/models.py:51 +#: .\notifications\models.py:51 msgid "Tâche" msgstr "Tâche" -#: streetup/notifications/models.py:52 +#: .\notifications\models.py:52 msgid "Alerte" msgstr "Alerte" -#: streetup/notifications/models.py:53 +#: .\notifications\models.py:53 msgid "Information" msgstr "Information" -#: streetup/notifications/models.py:79 +#: .\notifications\models.py:79 msgid "Expéditeur" msgstr "Expéditeur" -#: streetup/notifications/models.py:86 +#: .\notifications\models.py:86 msgid "Laisser vide pour ne pas faire expirer la notification." msgstr "Laisser vide pour ne pas faire expirer la notification." -#: streetup/notifications/models.py:92 +#: .\notifications\models.py:92 msgid "Lien d'action" msgstr "Lien d'action" -#: streetup/notifications/models.py:93 +#: .\notifications\models.py:93 msgid "URL relative ou absolue vers laquelle l'utilisateur est redirigé." msgstr "URL relative ou absolue vers laquelle l'utilisateur est redirigé." -#: streetup/notifications/models.py:104 +#: .\notifications\models.py:104 msgid "Application source" msgstr "Application source" -#: streetup/notifications/models.py:105 +#: .\notifications\models.py:105 msgid "Nom de l'application qui a généré la notification." msgstr "Nom de l'application qui a généré la notification." -#: streetup/notifications/models.py:109 +#: .\notifications\models.py:109 msgid "Notification système" msgstr "Notification système" -#: streetup/notifications/models.py:110 +#: .\notifications\models.py:110 msgid "Générée automatiquement par le système." msgstr "Générée automatiquement par le système." -#: streetup/notifications/models.py:114 streetup/notifications/models.py:517 +#: .\notifications\models.py:114 .\notifications\models.py:566 msgid "Prise en charge unique" msgstr "Prise en charge unique" -#: streetup/notifications/models.py:116 +#: .\notifications\models.py:116 msgid "" "Si activé, dès qu'un destinataire marque cette notification comme lue, elle " "est automatiquement archivée pour tous les autres destinataires." -msgstr "" +msgstr "Si activé, dès qu'un destinataire marque cette notification comme lue, elle est automatiquement archivée pour tous les autres destinataires." -#: streetup/notifications/models.py:126 +#: .\notifications\models.py:126 msgid "Discussion liée" msgstr "Discussion liée" -#: streetup/notifications/models.py:147 streetup/notifications/models.py:159 -#: streetup/notifications/models.py:218 streetup/notifications/models.py:246 +#: .\notifications\models.py:147 .\notifications\models.py:159 +#: .\notifications\models.py:218 .\notifications\models.py:246 msgid "Notification" msgstr "Notification" -#: streetup/notifications/models.py:148 -#: streetup/notifications/templates/notifications/discussion_list.html:44 -#: streetup/notifications/templates/notifications/inbox.html:32 -#: streetup/notifications/templates/notifications/inbox_mobile.html:4 -#: streetup/notifications/templates/notifications/inbox_mobile.html:30 +#: .\notifications\models.py:148 +#: .\notifications\templates\notifications\discussion_list.html:77 +#: .\notifications\templates\notifications\inbox.html:116 +#: .\notifications\templates\notifications\inbox_mobile.html:4 +#: .\notifications\templates\notifications\inbox_mobile.html:30 msgid "Notifications" msgstr "Notifications" -#: streetup/notifications/models.py:165 +#: .\notifications\models.py:165 msgid "Destinataire" msgstr "Destinataire" -#: streetup/notifications/models.py:167 streetup/notifications/models.py:303 +#: .\notifications\models.py:167 .\notifications\models.py:303 msgid "Lu le" msgstr "Lu le" -#: streetup/notifications/models.py:168 +#: .\notifications\models.py:168 msgid "Archivé le" msgstr "Archivé le" -#: streetup/notifications/models.py:169 +#: .\notifications\models.py:169 msgid "Rappel envoyé le" msgstr "Rappel envoyé le" -#: streetup/notifications/models.py:205 +#: .\notifications\models.py:205 msgid "Destinataire de notification" msgstr "Destinataire de notification" -#: streetup/notifications/models.py:206 +#: .\notifications\models.py:206 msgid "Destinataires de notification" msgstr "Destinataires de notification" -#: streetup/notifications/models.py:231 streetup/notifications/models.py:295 +#: .\notifications\models.py:231 .\notifications\models.py:295 msgid "Notification d'équipe" msgstr "Notification d'équipe" -#: streetup/notifications/models.py:232 +#: .\notifications\models.py:232 msgid "Notifications d'équipe" msgstr "Notifications d'équipe" -#: streetup/notifications/models.py:250 streetup/notifications/models.py:548 +#: .\notifications\models.py:250 .\notifications\models.py:597 msgid "Fichier" msgstr "Fichier" -#: streetup/notifications/models.py:255 streetup/notifications/models.py:550 +#: .\notifications\models.py:255 .\notifications\models.py:599 msgid "Nom du fichier" msgstr "Nom du fichier" -#: streetup/notifications/models.py:263 +#: .\notifications\models.py:263 msgid "Ajouté par" msgstr "Ajouté par" -#: streetup/notifications/models.py:265 streetup/notifications/models.py:551 +#: .\notifications\models.py:265 .\notifications\models.py:600 msgid "Ajouté le" msgstr "Ajouté le" -#: streetup/notifications/models.py:283 +#: .\notifications\models.py:283 msgid "Pièce jointe" msgstr "Pièce jointe" -#: streetup/notifications/models.py:301 +#: .\notifications\models.py:301 msgid "Utilisateur" msgstr "Utilisateur" -#: streetup/notifications/models.py:306 +#: .\notifications\models.py:306 msgid "Lecture de notification d'équipe" msgstr "Lecture de notification d'équipe" -#: streetup/notifications/models.py:307 +#: .\notifications\models.py:307 msgid "Lectures de notifications d'équipe" msgstr "Lectures de notifications d'équipe" -#: streetup/notifications/models.py:331 +#: .\notifications\models.py:331 msgid "Mis à jour le" msgstr "Mis à jour le" -#: streetup/notifications/models.py:336 -#: streetup/notifications/templates/notifications/discussion_detail.html:105 +#: .\notifications\models.py:336 +#: .\notifications\templates\notifications\discussion_detail.html:105 +#: .\notifications\templates\notifications\discussion_list.html:144 +#: .\notifications\templates\notifications\inbox.html:421 msgid "Participants" msgstr "Participants" -#: streetup/notifications/models.py:338 -#: streetup/notifications/templates/notifications/discussion_detail.html:97 +#: .\notifications\models.py:338 +#: .\notifications\templates\notifications\discussion_detail.html:97 +#: .\notifications\templates\notifications\discussion_list.html:120 +#: .\notifications\templates\notifications\inbox.html:397 msgid "Clôturée" msgstr "Clôturée" -#: streetup/notifications/models.py:346 +#: .\notifications\models.py:346 msgid "Type d'objet lié" msgstr "Type d'objet lié" -#: streetup/notifications/models.py:349 +#: .\notifications\models.py:349 msgid "ID objet lié" msgstr "ID objet lié" -#: streetup/notifications/models.py:355 +#: .\notifications\models.py:355 msgid "URL objet lié" msgstr "URL objet lié" -#: streetup/notifications/models.py:358 +#: .\notifications\models.py:358 msgid "Libellé objet lié" msgstr "Libellé objet lié" -#: streetup/notifications/models.py:380 streetup/notifications/models.py:396 +#: .\notifications\models.py:392 +msgid "Intervention" +msgstr "Intervention" + +#: .\notifications\models.py:400 +msgid "Observation" +msgstr "Observation" + +#: .\notifications\models.py:408 +msgid "Ordre de préparation" +msgstr "Ordre de préparation" + +#: .\notifications\models.py:416 +msgid "Projet" +msgstr "Projet" + +#: .\notifications\models.py:424 +msgid "Générale" +msgstr "Générale" + +#: .\notifications\models.py:429 .\notifications\models.py:445 msgid "Discussion" msgstr "Discussion" -#: streetup/notifications/models.py:381 -#: streetup/notifications/templates/notifications/discussion_list.html:37 -#: streetup/notifications/templates/notifications/inbox.html:54 +#: .\notifications\models.py:430 +#: .\notifications\templates\notifications\discussion_list.html:70 +#: .\notifications\templates\notifications\inbox.html:133 msgid "Discussions" msgstr "Discussions" -#: streetup/notifications/models.py:404 +#: .\notifications\models.py:453 msgid "Auteur" msgstr "Auteur" -#: streetup/notifications/models.py:407 +#: .\notifications\models.py:456 msgid "Envoyé le" msgstr "Envoyé le" -#: streetup/notifications/models.py:408 +#: .\notifications\models.py:457 msgid "Supprimé" msgstr "Supprimé" -#: streetup/notifications/models.py:416 +#: .\notifications\models.py:465 msgid "Messages" msgstr "Messages" -#: streetup/notifications/models.py:441 +#: .\notifications\models.py:490 msgid "Intervention annulée" msgstr "Intervention annulée" -#: streetup/notifications/models.py:446 +#: .\notifications\models.py:495 msgid "Tous (pas de filtre)" msgstr "Tous (pas de filtre)" -#: streetup/notifications/models.py:447 +#: .\notifications\models.py:496 msgid "Doublon" msgstr "Doublon" -#: streetup/notifications/models.py:448 +#: .\notifications\models.py:497 msgid "A rediriger" msgstr "A rediriger" -#: streetup/notifications/models.py:449 +#: .\notifications\models.py:498 msgid "Pas sous notre gestion" msgstr "Pas sous notre gestion" -#: streetup/notifications/models.py:450 +#: .\notifications\models.py:499 msgid "Non-relevant" msgstr "Non-relevant" -#: streetup/notifications/models.py:451 +#: .\notifications\models.py:500 msgid "Autre" msgstr "Autre" -#: streetup/notifications/models.py:455 +#: .\notifications\models.py:504 msgid "Nom de la règle" msgstr "Nom de la règle" -#: streetup/notifications/models.py:456 +#: .\notifications\models.py:505 msgid "Active" msgstr "Active" -#: streetup/notifications/models.py:462 +#: .\notifications\models.py:511 msgid "Événement déclencheur" msgstr "Événement déclencheur" -#: streetup/notifications/models.py:468 +#: .\notifications\models.py:517 msgid "Filtre : type d'annulation" msgstr "Filtre : type d'annulation" -#: streetup/notifications/models.py:470 +#: .\notifications\models.py:519 msgid "" "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "valeur pour n'agir que sur ce type précis." -msgstr "" +msgstr "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une valeur pour n'agir que sur ce type précis." -#: streetup/notifications/models.py:480 +#: .\notifications\models.py:529 msgid "Type de notification" msgstr "Type de notification" -#: streetup/notifications/models.py:484 +#: .\notifications\models.py:533 msgid "Modèle de titre" msgstr "Modèle de titre" -#: streetup/notifications/models.py:486 +#: .\notifications\models.py:535 #, python-brace-format msgid "" "Variables disponibles : {intervention_code}, {intervention_title}, " "{cancellation_type_label}" -msgstr "" +msgstr "Variables disponibles : {intervention_code}, {intervention_title}, {cancellation_type_label}" -#: streetup/notifications/models.py:492 +#: .\notifications\models.py:541 msgid "Modèle de contenu" msgstr "Modèle de contenu" -#: streetup/notifications/models.py:494 +#: .\notifications\models.py:543 #, python-brace-format msgid "" "Variables disponibles : {intervention_code}, {intervention_title}, " "{cancellation_type_label}, {cancellation_reason}" -msgstr "" +msgstr "Variables disponibles : {intervention_code}, {intervention_title}, {cancellation_type_label}, {cancellation_reason}" -#: streetup/notifications/models.py:505 +#: .\notifications\models.py:554 msgid "" "Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "équipes." -msgstr "" +msgstr "Les notifications seront envoyées à tous les membres (CompanyMember) de ces équipes." -#: streetup/notifications/models.py:511 +#: .\notifications\models.py:560 msgid "Utilisateurs destinataires supplémentaires" msgstr "Utilisateurs destinataires supplémentaires" -#: streetup/notifications/models.py:519 +#: .\notifications\models.py:568 msgid "" "Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "charge), elle est automatiquement archivée pour tous les autres " "destinataires." -msgstr "" +msgstr "Si activé, dès qu'un destinataire marque la notification comme lue (prise en charge), elle est automatiquement archivée pour tous les autres destinataires." -#: streetup/notifications/models.py:525 +#: .\notifications\models.py:574 msgid "Créée le" msgstr "Créée le" -#: streetup/notifications/models.py:526 +#: .\notifications\models.py:575 msgid "Mise à jour le" msgstr "Mise à jour le" -#: streetup/notifications/models.py:532 +#: .\notifications\models.py:581 msgid "Règle de notification" msgstr "Règle de notification" -#: streetup/notifications/models.py:533 +#: .\notifications\models.py:582 msgid "Règles de notification" msgstr "Règles de notification" -#: streetup/notifications/models.py:569 +#: .\notifications\models.py:618 msgid "Pièce jointe de message" msgstr "Pièce jointe de message" -#: streetup/notifications/models.py:570 +#: .\notifications\models.py:619 msgid "Pièces jointes de messages" msgstr "Pièces jointes de messages" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:8 -#: streetup/notifications/templates/notifications/discussion_list.html:41 +#: .\notifications\templates\notifications\_new_discussion_modal.html:8 +#: .\notifications\templates\notifications\discussion_list.html:74 +#: .\notifications\templates\notifications\inbox.html:165 msgid "Nouvelle discussion" msgstr "Nouvelle discussion" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:10 +#: .\notifications\templates\notifications\_new_discussion_modal.html:10 msgid "Fermer" msgstr "Fermer" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:17 +#: .\notifications\templates\notifications\_new_discussion_modal.html:17 msgid "Sujet / Titre (optionnel)" msgstr "Sujet / Titre (optionnel)" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:20 +#: .\notifications\templates\notifications\_new_discussion_modal.html:20 msgid "Ex: Question sur le dossier..." msgstr "Ex: Question sur le dossier..." -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:25 +#: .\notifications\templates\notifications\_new_discussion_modal.html:25 msgid "Message *" msgstr "Message *" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:28 +#: .\notifications\templates\notifications\_new_discussion_modal.html:28 msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." msgstr "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:32 +#: .\notifications\templates\notifications\_new_discussion_modal.html:32 msgid "Rédigez votre message... (@ pour tagger quelqu'un)" msgstr "Rédigez votre message... (@ pour tagger quelqu'un)" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:44 +#: .\notifications\templates\notifications\_new_discussion_modal.html:44 msgid "Joindre des fichiers" msgstr "Joindre des fichiers" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:52 -#: streetup/notifications/templates/notifications/create.html:82 -#: streetup/notifications/templates/notifications/notification_settings.html:83 -#: streetup/notifications/templates/notifications/team_form.html:39 +#: .\notifications\templates\notifications\_new_discussion_modal.html:52 +#: .\notifications\templates\notifications\create.html:82 +#: .\notifications\templates\notifications\notification_settings.html:99 +#: .\notifications\templates\notifications\team_form.html:39 msgid "Annuler" msgstr "Annuler" -#: streetup/notifications/templates/notifications/_new_discussion_modal.html:55 -#: streetup/notifications/templates/notifications/create.html:85 -#: streetup/notifications/templates/notifications/discussion_detail.html:194 +#: .\notifications\templates\notifications\_new_discussion_modal.html:55 +#: .\notifications\templates\notifications\create.html:85 +#: .\notifications\templates\notifications\discussion_detail.html:194 msgid "Envoyer" msgstr "Envoyer" -#: streetup/notifications/templates/notifications/create.html:11 +#: .\notifications\templates\notifications\create.html:11 msgid "Créer une notification" msgstr "Créer une notification" -#: streetup/notifications/templates/notifications/create.html:69 -#: streetup/notifications/templates/notifications/create.html:75 +#: .\notifications\templates\notifications\create.html:69 +#: .\notifications\templates\notifications\create.html:75 msgid "Ctrl+clic pour sélectionner plusieurs" msgstr "Ctrl+clic pour sélectionner plusieurs" -#: streetup/notifications/templates/notifications/discussion_detail.html:120 +#: .\notifications\templates\notifications\discussion_detail.html:85 +msgid "Retour aux discussions" +msgstr "Retour aux discussions" + +#: .\notifications\templates\notifications\discussion_detail.html:120 msgid "Aucun message pour l'instant. Soyez le premier à écrire." msgstr "Aucun message pour l'instant. Soyez le premier à écrire." -#: streetup/notifications/templates/notifications/discussion_detail.html:184 +#: .\notifications\templates\notifications\discussion_detail.html:184 msgid "Écrire un message... (@ pour mentionner)" msgstr "Écrire un message... (@ pour mentionner)" -#: streetup/notifications/templates/notifications/discussion_detail.html:187 +#: .\notifications\templates\notifications\discussion_detail.html:187 msgid "Joindre" msgstr "Joindre" -#: streetup/notifications/templates/notifications/discussion_detail.html:202 +#: .\notifications\templates\notifications\discussion_detail.html:202 msgid "Cette discussion est clôturée." msgstr "Cette discussion est clôturée." -#: streetup/notifications/templates/notifications/discussion_list.html:46 -#: streetup/notifications/templates/notifications/discussion_list.html:47 -#: streetup/notifications/templates/notifications/inbox.html:57 +#: .\notifications\templates\notifications\discussion_list.html:79 +#: .\notifications\templates\notifications\discussion_list.html:80 +#: .\notifications\templates\notifications\inbox.html:170 +#: .\notifications\templates\notifications\inbox.html:171 msgid "Paramètres" msgstr "Paramètres" -#: streetup/notifications/templates/notifications/discussion_list.html:56 +#: .\notifications\templates\notifications\discussion_list.html:89 +#: .\notifications\templates\notifications\inbox.html:366 msgid "Vous n'avez encore aucune discussion." msgstr "Vous n'avez encore aucune discussion." -#: streetup/notifications/templates/notifications/discussion_list.html:92 +#: .\notifications\templates\notifications\discussion_list.html:137 +#: .\notifications\templates\notifications\inbox.html:414 msgid "Aucun message encore." msgstr "Aucun message encore." -#: streetup/notifications/templates/notifications/inbox.html:44 -#: streetup/notifications/templates/notifications/inbox_mobile.html:72 +#: .\notifications\templates\notifications\discussion_list.html:160 +#: .\notifications\templates\notifications\inbox.html:437 +msgid "participants au total" +msgstr "participants au total" + +#: .\notifications\templates\notifications\discussion_list.html:170 +#: .\notifications\templates\notifications\inbox.html:447 +msgid "non lu(s)" +msgstr "non lu(s)" + +#: .\notifications\templates\notifications\inbox.html:151 +#: .\notifications\templates\notifications\inbox_mobile.html:72 msgid "Tout marquer comme lu" msgstr "Tout marquer comme lu" -#: streetup/notifications/templates/notifications/inbox.html:50 +#: .\notifications\templates\notifications\inbox.html:157 msgid "Nouvelle notification" msgstr "Nouvelle notification" -#: streetup/notifications/templates/notifications/inbox.html:68 -#: streetup/notifications/templates/notifications/inbox_mobile.html:45 +#: .\notifications\templates\notifications\inbox.html:192 +#: .\notifications\templates\notifications\inbox_mobile.html:45 msgid "Tous les types" msgstr "Tous les types" -#: streetup/notifications/templates/notifications/inbox.html:80 -#: streetup/notifications/templates/notifications/inbox_mobile.html:57 +#: .\notifications\templates\notifications\inbox.html:204 +#: .\notifications\templates\notifications\inbox_mobile.html:57 msgid "Archivées" msgstr "Archivées" -#: streetup/notifications/templates/notifications/inbox.html:86 -#: streetup/notifications/templates/notifications/inbox_mobile.html:61 +#: .\notifications\templates\notifications\inbox.html:210 +#: .\notifications\templates\notifications\inbox_mobile.html:61 msgid "Réinitialiser" msgstr "Réinitialiser" -#: streetup/notifications/templates/notifications/inbox.html:120 -#: streetup/notifications/templates/notifications/inbox_mobile.html:90 +#: .\notifications\templates\notifications\inbox.html:244 +#: .\notifications\templates\notifications\inbox_mobile.html:90 msgid "Nouveau" msgstr "Nouveau" -#: streetup/notifications/templates/notifications/inbox.html:131 -#: streetup/notifications/templates/notifications/inbox.html:135 +#: .\notifications\templates\notifications\inbox.html:255 +#: .\notifications\templates\notifications\inbox.html:259 msgid "Prendre en charge" msgstr "Prendre en charge" -#: streetup/notifications/templates/notifications/inbox.html:131 -#: streetup/notifications/templates/notifications/inbox.html:137 +#: .\notifications\templates\notifications\inbox.html:255 +#: .\notifications\templates\notifications\inbox.html:261 msgid "Marquer comme lu" msgstr "Marquer comme lu" -#: streetup/notifications/templates/notifications/inbox.html:146 -#: streetup/notifications/templates/notifications/inbox_mobile.html:125 +#: .\notifications\templates\notifications\inbox.html:270 +#: .\notifications\templates\notifications\inbox_mobile.html:125 msgid "Archiver" msgstr "Archiver" -#: streetup/notifications/templates/notifications/inbox.html:223 -#: streetup/notifications/templates/notifications/inbox_mobile.html:141 +#: .\notifications\templates\notifications\inbox.html:347 +#: .\notifications\templates\notifications\inbox_mobile.html:141 msgid "Aucune notification archivée." msgstr "Aucune notification archivée." -#: streetup/notifications/templates/notifications/inbox.html:225 -#: streetup/notifications/templates/notifications/inbox_mobile.html:143 +#: .\notifications\templates\notifications\inbox.html:349 +#: .\notifications\templates\notifications\inbox_mobile.html:143 msgid "Vous n'avez aucune notification." msgstr "Vous n'avez aucune notification." -#: streetup/notifications/templates/notifications/inbox_mobile.html:36 +#: .\notifications\templates\notifications\inbox_mobile.html:36 msgid "Accueil" msgstr "Accueil" -#: streetup/notifications/templates/notifications/inbox_mobile.html:115 +#: .\notifications\templates\notifications\inbox_mobile.html:115 msgid "Prendre" msgstr "Prendre" -#: streetup/notifications/templates/notifications/inbox_mobile.html:117 +#: .\notifications\templates\notifications\inbox_mobile.html:117 msgid "Lu" msgstr "Lu" -#: streetup/notifications/templates/notifications/notification_settings.html:15 +#: .\notifications\templates\notifications\notification_settings.html:15 msgid "Paramètres des notifications" msgstr "Paramètres des notifications" -#: streetup/notifications/templates/notifications/notification_settings.html:17 +#: .\notifications\templates\notifications\notification_settings.html:17 msgid "" "Gérez vos préférences de rappel par e-mail pour les notifications non lues." -msgstr "" +msgstr "Gérez vos préférences de rappel par e-mail pour les notifications non lues." -#: streetup/notifications/templates/notifications/notification_settings.html:26 +#: .\notifications\templates\notifications\notification_settings.html:26 msgid "Rappels par e-mail" msgstr "Rappels par e-mail" -#: streetup/notifications/templates/notifications/notification_settings.html:37 +#: .\notifications\templates\notifications\notification_settings.html:36 +msgid "Langue préférée pour les e-mails et notifications" +msgstr "Langue préférée pour les e-mails et notifications" + +#: .\notifications\templates\notifications\notification_settings.html:45 +msgid "" +"Les e-mails de rappel et les notifications automatiques vous seront envoyés " +"dans cette langue." +msgstr "Les e-mails de rappel et les notifications automatiques vous seront envoyés dans cette langue." + +#: .\notifications\templates\notifications\notification_settings.html:53 msgid "Activer les rappels par e-mail" msgstr "Activer les rappels par e-mail" -#: streetup/notifications/templates/notifications/notification_settings.html:40 +#: .\notifications\templates\notifications\notification_settings.html:56 msgid "" "Recevoir un récapitulatif par e-mail si des notifications restent non lues " "au-delà du délai spécifié." -msgstr "" +msgstr "Recevoir un récapitulatif par e-mail si des notifications restent non lues au-delà du délai spécifié." -#: streetup/notifications/templates/notifications/notification_settings.html:51 +#: .\notifications\templates\notifications\notification_settings.html:67 msgid "Adresse(s) e-mail de réception" msgstr "Adresse(s) e-mail de réception" -#: streetup/notifications/templates/notifications/notification_settings.html:59 +#: .\notifications\templates\notifications\notification_settings.html:75 msgid "Laissez vide pour utiliser l'e-mail principal de votre compte" msgstr "Laissez vide pour utiliser l'e-mail principal de votre compte" -#: streetup/notifications/templates/notifications/notification_settings.html:60 +#: .\notifications\templates\notifications\notification_settings.html:76 msgid "Pour plusieurs destinataires, séparez les adresses par des virgules." msgstr "Pour plusieurs destinataires, séparez les adresses par des virgules." -#: streetup/notifications/templates/notifications/notification_settings.html:67 +#: .\notifications\templates\notifications\notification_settings.html:83 msgid "Délai avant l'envoi du rappel (en heures)" msgstr "Délai avant l'envoi du rappel (en heures)" -#: streetup/notifications/templates/notifications/notification_settings.html:71 +#: .\notifications\templates\notifications\notification_settings.html:87 msgid "heures" msgstr "heures" -#: streetup/notifications/templates/notifications/notification_settings.html:77 +#: .\notifications\templates\notifications\notification_settings.html:93 msgid "" "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "bout de 24 heures." -msgstr "" +msgstr "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au bout de 24 heures." -#: streetup/notifications/templates/notifications/notification_settings.html:86 +#: .\notifications\templates\notifications\notification_settings.html:102 msgid "Enregistrer mes préférences" msgstr "Enregistrer mes préférences" -#: streetup/notifications/templates/notifications/team_form.html:11 +#: .\notifications\templates\notifications\team_form.html:11 msgid "une équipe" msgstr "une équipe" -#: streetup/notifications/templates/notifications/team_form.html:34 +#: .\notifications\templates\notifications\team_form.html:34 msgid "Ctrl+clic pour sélectionner plusieurs membres" msgstr "Ctrl+clic pour sélectionner plusieurs membres" -#: streetup/notifications/templates/notifications/team_form.html:42 +#: .\notifications\templates\notifications\team_form.html:42 msgid "Enregistrer" msgstr "Enregistrer" -#: streetup/notifications/templates/notifications/team_list.html:14 +#: .\notifications\templates\notifications\team_list.html:14 msgid "Nouvelle équipe" msgstr "Nouvelle équipe" -#: streetup/notifications/templates/notifications/team_list.html:18 +#: .\notifications\templates\notifications\team_list.html:18 msgid "Retour aux notifications" msgstr "Retour aux notifications" -#: streetup/notifications/templates/notifications/team_list.html:46 -#: streetup/notifications/views.py:456 +#: .\notifications\templates\notifications\team_list.html:46 +#: .\notifications\views.py:498 msgid "Modifier" msgstr "Modifier" -#: streetup/notifications/templates/notifications/team_list.html:51 +#: .\notifications\templates\notifications\team_list.html:51 msgid "Supprimer cette équipe ?" msgstr "Supprimer cette équipe ?" -#: streetup/notifications/templates/notifications/team_list.html:54 +#: .\notifications\templates\notifications\team_list.html:54 msgid "Supprimer" msgstr "Supprimer" -#: streetup/notifications/templates/notifications/team_list.html:68 +#: .\notifications\templates\notifications\team_list.html:68 msgid "Aucun membre" msgstr "Aucun membre" -#: streetup/notifications/templates/notifications/team_list.html:73 +#: .\notifications\templates\notifications\team_list.html:73 msgid "membre(s)" msgstr "membre(s)" -#: streetup/notifications/templates/notifications/team_list.html:75 +#: .\notifications\templates\notifications\team_list.html:75 msgid "Créée par" msgstr "Créée par" -#: streetup/notifications/templates/notifications/team_list.html:85 +#: .\notifications\templates\notifications\team_list.html:85 msgid "Aucune équipe définie." msgstr "Aucune équipe définie." -#: streetup/notifications/templates/notifications/team_list.html:88 +#: .\notifications\templates\notifications\team_list.html:88 msgid "Créer une équipe" msgstr "Créer une équipe" -#: streetup/notifications/views.py:348 +#: .\notifications\views.py:390 msgid "Vous n'avez pas les droits pour créer une notification." msgstr "Vous n'avez pas les droits pour créer une notification." -#: streetup/notifications/views.py:381 +#: .\notifications\views.py:423 msgid "Notification envoyée avec succès." msgstr "Notification envoyée avec succès." -#: streetup/notifications/views.py:418 +#: .\notifications\views.py:460 msgid "Vous n'avez pas les droits pour créer une équipe." msgstr "Vous n'avez pas les droits pour créer une équipe." -#: streetup/notifications/views.py:428 +#: .\notifications\views.py:470 msgid "Équipe créée avec succès." msgstr "Équipe créée avec succès." -#: streetup/notifications/views.py:433 +#: .\notifications\views.py:475 msgid "Créer" msgstr "Créer" -#: streetup/notifications/views.py:444 +#: .\notifications\views.py:486 msgid "Vous n'avez pas les droits pour modifier une équipe." msgstr "Vous n'avez pas les droits pour modifier une équipe." -#: streetup/notifications/views.py:451 +#: .\notifications\views.py:493 msgid "Équipe mise à jour." msgstr "Équipe mise à jour." -#: streetup/notifications/views.py:466 +#: .\notifications\views.py:508 msgid "Vous n'avez pas les droits pour supprimer une équipe." msgstr "Vous n'avez pas les droits pour supprimer une équipe." -#: streetup/notifications/views.py:469 +#: .\notifications\views.py:511 msgid "Équipe supprimée." msgstr "Équipe supprimée." -#: streetup/notifications/views.py:550 +#: .\notifications\views.py:561 msgid "Vous n'êtes pas participant de cette discussion." msgstr "Vous n'êtes pas participant de cette discussion." -#: streetup/notifications/views.py:563 +#: .\notifications\views.py:574 msgid "Message envoyé." msgstr "Message envoyé." -#: streetup/notifications/views.py:601 +#: .\notifications\views.py:602 +#| msgid "Discussion de %(name)s" +msgid "Discussion de %(name)s" +msgstr "Discussion de %(name)s" + +#: .\notifications\views.py:613 msgid "Discussion créée avec succès." msgstr "Discussion créée avec succès." -#: streetup/notifications/views.py:604 +#: .\notifications\views.py:616 msgid "Le contenu du message ne peut pas être vide." msgstr "Le contenu du message ne peut pas être vide." -#: streetup/notifications/views.py:621 +#: .\notifications\views.py:633 msgid "Vos préférences de rappel par e-mail ont été enregistrées." msgstr "Vos préférences de rappel par e-mail ont été enregistrées." diff --git a/streetup/notifications/locale/nl/LC_MESSAGES/django.mo b/streetup/notifications/locale/nl/LC_MESSAGES/django.mo index 3217c1c..4fdd857 100644 Binary files a/streetup/notifications/locale/nl/LC_MESSAGES/django.mo and b/streetup/notifications/locale/nl/LC_MESSAGES/django.mo differ diff --git a/streetup/notifications/locale/nl/LC_MESSAGES/django.po b/streetup/notifications/locale/nl/LC_MESSAGES/django.po index 7d40a3f..7e1f724 100644 --- a/streetup/notifications/locale/nl/LC_MESSAGES/django.po +++ b/streetup/notifications/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-12 12:19+0200\n" +"POT-Creation-Date: 2026-08-14 22:44+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,723 +17,836 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: notifications/forms.py:35 notifications/models.py:71 -#: notifications/models.py:321 +#: .\notifications\forms.py:35 .\notifications\models.py:71 +#: .\notifications\models.py:321 msgid "Titre" -msgstr "" +msgstr "Titel" -#: notifications/forms.py:40 notifications/models.py:72 -#: notifications/models.py:406 +#: .\notifications\forms.py:40 .\notifications\models.py:72 +#: .\notifications\models.py:455 msgid "Contenu" -msgstr "" +msgstr "Inhoud" -#: notifications/forms.py:46 notifications/models.py:69 +#: .\notifications\forms.py:46 .\notifications\models.py:69 msgid "Type" -msgstr "" +msgstr "Type" -#: notifications/forms.py:52 +#: .\notifications\forms.py:52 msgid "Lien d'action (URL)" -msgstr "" +msgstr "Actielink (URL)" -#: notifications/forms.py:58 notifications/models.py:98 +#: .\notifications\forms.py:58 .\notifications\models.py:98 msgid "Libellé du lien" -msgstr "" +msgstr "Linklabel" -#: notifications/forms.py:63 notifications/models.py:85 -#: notifications/templates/notifications/inbox.html:180 +#: .\notifications\forms.py:63 .\notifications\models.py:85 +#: .\notifications\templates\notifications\inbox.html:304 msgid "Expire le" -msgstr "" +msgstr "Vervalt op" -#: notifications/forms.py:68 notifications/models.py:284 -#: notifications/templates/notifications/_new_discussion_modal.html:41 +#: .\notifications\forms.py:68 .\notifications\models.py:284 +#: .\notifications\templates\notifications\_new_discussion_modal.html:41 msgid "Pièces jointes" msgstr "Bijlagen" -#: notifications/forms.py:69 +#: .\notifications\forms.py:69 msgid "Photos ou documents (plusieurs fichiers possibles)." msgstr "Foto's of documenten (meerdere bestanden mogelijk)." -#: notifications/forms.py:76 +#: .\notifications\forms.py:76 msgid "Destinataires individuels" -msgstr "" +msgstr "Individuele ontvangers" -#: notifications/forms.py:82 notifications/models.py:504 +#: .\notifications\forms.py:82 .\notifications\models.py:553 msgid "Équipes destinataires" -msgstr "" +msgstr "Ontvangende teams" -#: notifications/forms.py:92 +#: .\notifications\forms.py:92 msgid "Veuillez sélectionner au moins un destinataire ou une équipe." -msgstr "" +msgstr "Selecteer ten minste één ontvanger of team." -#: notifications/forms.py:123 +#: .\notifications\forms.py:127 msgid "Ex: email1@exemple.com, email2@exemple.com" -msgstr "" +msgstr "Bijv: email1@voorbeeld.com, email2@voorbeeld.com" -#: notifications/forms.py:148 +#: .\notifications\forms.py:152 #, python-format msgid "L'adresse e-mail '%(email)s' n'est pas valide." -msgstr "" +msgstr "Het e-mailadres '%(email)s' is ongeldig." -#: notifications/management/commands/send_unread_notification_reminders.py:106 +#: .\notifications\management\commands\send_unread_notification_reminders.py:95 +#, python-format +msgid "[StreetUp] Rappel : %(count)d notification(s) non lue(s)" +msgstr "[StreetUp] Herinnering: %(count)d ongelezen melding(en)" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:101 +#, python-format +msgid "Bonjour %(name)s," +msgstr "Hallo %(name)s," + +#: .\notifications\management\commands\send_unread_notification_reminders.py:102 +#, python-format +msgid "" +"Vous avez %(count)d notification(s) non lue(s) reçue(s) il y a plus de " +"%(delay)d heure(s) :" +msgstr "U heeft %(count)d ongelezen melding(en) die meer dan %(delay)d uur geleden zijn ontvangen:" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:117 msgid "Système" -msgstr "" +msgstr "Systeem" -#: notifications/models.py:12 +#: .\notifications\management\commands\send_unread_notification_reminders.py:125 +msgid "reçue le" +msgstr "ontvangen op" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:125 +msgid "par" +msgstr "door" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:126 +msgid "Lien" +msgstr "Link" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:131 +msgid "Reçue le" +msgstr "Ontvangen op" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:132 +msgid "Consulter" +msgstr "Bekijken" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:136 +msgid "Accédez à votre boîte de réception :" +msgstr "Ga naar uw inbox:" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:139 +msgid "Notifications non lues" +msgstr "Ongelezen meldingen" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:140 +#, python-format +msgid "" +"Vous avez %(count)d notification(s) non lue(s) qui " +"attendent votre attention :" +msgstr "U heeft %(count)d ongelezen melding(en) die op uw aandacht wachten:" + +#: .\notifications\management\commands\send_unread_notification_reminders.py:141 +msgid "Voir mes notifications" +msgstr "Mijn meldingen bekijken" + +#: .\notifications\models.py:12 msgid "Nom" -msgstr "" +msgstr "Naam" -#: notifications/models.py:13 +#: .\notifications\models.py:13 msgid "Description" -msgstr "" +msgstr "Beschrijving" -#: notifications/models.py:18 +#: .\notifications\models.py:18 msgid "Membres" -msgstr "" +msgstr "Leden" -#: notifications/models.py:26 notifications/models.py:328 +#: .\notifications\models.py:26 .\notifications\models.py:328 msgid "Créé par" -msgstr "" +msgstr "Aangemaakt door" -#: notifications/models.py:28 notifications/models.py:81 -#: notifications/models.py:330 +#: .\notifications\models.py:28 .\notifications\models.py:81 +#: .\notifications\models.py:330 msgid "Créé le" -msgstr "" +msgstr "Aangemaakt op" -#: notifications/models.py:34 notifications/models.py:224 +#: .\notifications\models.py:34 .\notifications\models.py:224 msgid "Équipe" -msgstr "" +msgstr "Team" -#: notifications/models.py:35 -#: notifications/templates/notifications/team_list.html:9 +#: .\notifications\models.py:35 +#: .\notifications\templates\notifications\team_list.html:9 msgid "Équipes" -msgstr "" +msgstr "Teams" -#: notifications/models.py:49 notifications/models.py:415 -#: notifications/models.py:544 +#: .\notifications\models.py:49 .\notifications\models.py:464 +#: .\notifications\models.py:593 msgid "Message" msgstr "Bericht" -#: notifications/models.py:50 +#: .\notifications\models.py:50 msgid "Rappel" msgstr "Herinnering" -#: notifications/models.py:51 +#: .\notifications\models.py:51 msgid "Tâche" msgstr "Taak" -#: notifications/models.py:52 +#: .\notifications\models.py:52 msgid "Alerte" -msgstr "Waarschuwing" +msgstr "Melding" -#: notifications/models.py:53 +#: .\notifications\models.py:53 msgid "Information" msgstr "Informatie" -#: notifications/models.py:79 +#: .\notifications\models.py:79 msgid "Expéditeur" -msgstr "" +msgstr "Afzender" -#: notifications/models.py:86 +#: .\notifications\models.py:86 msgid "Laisser vide pour ne pas faire expirer la notification." -msgstr "" +msgstr "Leeg laten om de melding niet te laten vervallen." -#: notifications/models.py:92 +#: .\notifications\models.py:92 msgid "Lien d'action" -msgstr "" +msgstr "Actielink" -#: notifications/models.py:93 +#: .\notifications\models.py:93 msgid "URL relative ou absolue vers laquelle l'utilisateur est redirigé." -msgstr "" +msgstr "Relatieve of absolute URL waarnaar de gebruiker wordt omgeleid." -#: notifications/models.py:104 +#: .\notifications\models.py:104 msgid "Application source" -msgstr "" +msgstr "Bronapplicatie" -#: notifications/models.py:105 +#: .\notifications\models.py:105 msgid "Nom de l'application qui a généré la notification." -msgstr "" +msgstr "Naam van de applicatie die de melding heeft gegenereerd." -#: notifications/models.py:109 +#: .\notifications\models.py:109 msgid "Notification système" -msgstr "" +msgstr "Systeemmelding" -#: notifications/models.py:110 +#: .\notifications\models.py:110 msgid "Générée automatiquement par le système." -msgstr "" +msgstr "Automatisch gegenereerd door het systeem." -#: notifications/models.py:114 notifications/models.py:517 +#: .\notifications\models.py:114 .\notifications\models.py:566 msgid "Prise en charge unique" -msgstr "" +msgstr "Enkele overname" -#: notifications/models.py:116 +#: .\notifications\models.py:116 msgid "" "Si activé, dès qu'un destinataire marque cette notification comme lue, elle " "est automatiquement archivée pour tous les autres destinataires." -msgstr "" +msgstr "Indien ingeschakeld, zodra een ontvanger deze melding als gelezen markeert, wordt deze automatisch gearchiveerd voor alle andere ontvangers." -#: notifications/models.py:126 +#: .\notifications\models.py:126 msgid "Discussion liée" -msgstr "" +msgstr "Gekoppeld gesprek" -#: notifications/models.py:147 notifications/models.py:159 -#: notifications/models.py:218 notifications/models.py:246 +#: .\notifications\models.py:147 .\notifications\models.py:159 +#: .\notifications\models.py:218 .\notifications\models.py:246 msgid "Notification" -msgstr "" +msgstr "Melding" -#: notifications/models.py:148 -#: notifications/templates/notifications/discussion_list.html:44 -#: notifications/templates/notifications/inbox.html:32 -#: notifications/templates/notifications/inbox_mobile.html:4 -#: notifications/templates/notifications/inbox_mobile.html:30 +#: .\notifications\models.py:148 +#: .\notifications\templates\notifications\discussion_list.html:77 +#: .\notifications\templates\notifications\inbox.html:116 +#: .\notifications\templates\notifications\inbox_mobile.html:4 +#: .\notifications\templates\notifications\inbox_mobile.html:30 msgid "Notifications" msgstr "Meldingen" -#: notifications/models.py:165 +#: .\notifications\models.py:165 msgid "Destinataire" -msgstr "" +msgstr "Ontvanger" -#: notifications/models.py:167 notifications/models.py:303 +#: .\notifications\models.py:167 .\notifications\models.py:303 msgid "Lu le" -msgstr "" +msgstr "Gelezen op" -#: notifications/models.py:168 +#: .\notifications\models.py:168 msgid "Archivé le" -msgstr "" +msgstr "Gearchiveerd op" -#: notifications/models.py:169 +#: .\notifications\models.py:169 msgid "Rappel envoyé le" -msgstr "" +msgstr "Herinnering verzonden op" -#: notifications/models.py:205 +#: .\notifications\models.py:205 msgid "Destinataire de notification" -msgstr "" +msgstr "Meldingontvanger" -#: notifications/models.py:206 +#: .\notifications\models.py:206 msgid "Destinataires de notification" -msgstr "" +msgstr "Meldingontvangers" -#: notifications/models.py:231 notifications/models.py:295 +#: .\notifications\models.py:231 .\notifications\models.py:295 msgid "Notification d'équipe" -msgstr "" +msgstr "Teammelding" -#: notifications/models.py:232 +#: .\notifications\models.py:232 msgid "Notifications d'équipe" -msgstr "" +msgstr "Teammeldingen" -#: notifications/models.py:250 notifications/models.py:548 +#: .\notifications\models.py:250 .\notifications\models.py:597 msgid "Fichier" -msgstr "" +msgstr "Bestand" -#: notifications/models.py:255 notifications/models.py:550 +#: .\notifications\models.py:255 .\notifications\models.py:599 msgid "Nom du fichier" -msgstr "" +msgstr "Bestandsnaam" -#: notifications/models.py:263 +#: .\notifications\models.py:263 msgid "Ajouté par" -msgstr "" +msgstr "Toegevoegd door" -#: notifications/models.py:265 notifications/models.py:551 +#: .\notifications\models.py:265 .\notifications\models.py:600 msgid "Ajouté le" -msgstr "" +msgstr "Toegevoegd op" -#: notifications/models.py:283 +#: .\notifications\models.py:283 msgid "Pièce jointe" -msgstr "" +msgstr "Bijlage" -#: notifications/models.py:301 +#: .\notifications\models.py:301 msgid "Utilisateur" -msgstr "" +msgstr "Gebruiker" -#: notifications/models.py:306 +#: .\notifications\models.py:306 msgid "Lecture de notification d'équipe" -msgstr "" +msgstr "Teammelding gelezen" -#: notifications/models.py:307 +#: .\notifications\models.py:307 msgid "Lectures de notifications d'équipe" -msgstr "" +msgstr "Teammeldingen gelezen" -#: notifications/models.py:331 +#: .\notifications\models.py:331 msgid "Mis à jour le" -msgstr "" +msgstr "Bijgewerkt op" -#: notifications/models.py:336 -#: notifications/templates/notifications/discussion_detail.html:105 +#: .\notifications\models.py:336 +#: .\notifications\templates\notifications\discussion_detail.html:105 +#: .\notifications\templates\notifications\discussion_list.html:144 +#: .\notifications\templates\notifications\inbox.html:421 msgid "Participants" -msgstr "" +msgstr "Deelnemers" -#: notifications/models.py:338 -#: notifications/templates/notifications/discussion_detail.html:97 +#: .\notifications\models.py:338 +#: .\notifications\templates\notifications\discussion_detail.html:97 +#: .\notifications\templates\notifications\discussion_list.html:120 +#: .\notifications\templates\notifications\inbox.html:397 msgid "Clôturée" -msgstr "" +msgstr "Gesloten" -#: notifications/models.py:346 +#: .\notifications\models.py:346 msgid "Type d'objet lié" -msgstr "" +msgstr "Type gekoppeld object" -#: notifications/models.py:349 +#: .\notifications\models.py:349 msgid "ID objet lié" -msgstr "" +msgstr "ID gekoppeld object" -#: notifications/models.py:355 +#: .\notifications\models.py:355 msgid "URL objet lié" -msgstr "" +msgstr "URL gekoppeld object" -#: notifications/models.py:358 +#: .\notifications\models.py:358 msgid "Libellé objet lié" -msgstr "" +msgstr "Label gekoppeld object" -#: notifications/models.py:380 notifications/models.py:396 +#: .\notifications\models.py:392 +msgid "Intervention" +msgstr "Interventie" + +#: .\notifications\models.py:400 +msgid "Observation" +msgstr "Observatie" + +#: .\notifications\models.py:408 +msgid "Ordre de préparation" +msgstr "Voorbereidingsopdracht" + +#: .\notifications\models.py:416 +msgid "Projet" +msgstr "Project" + +#: .\notifications\models.py:424 +msgid "Générale" +msgstr "Algemeen" + +#: .\notifications\models.py:429 .\notifications\models.py:445 msgid "Discussion" -msgstr "" +msgstr "Gesprek" -#: notifications/models.py:381 -#: notifications/templates/notifications/discussion_list.html:37 -#: notifications/templates/notifications/inbox.html:54 +#: .\notifications\models.py:430 +#: .\notifications\templates\notifications\discussion_list.html:70 +#: .\notifications\templates\notifications\inbox.html:133 msgid "Discussions" msgstr "Gesprekken" -#: notifications/models.py:404 +#: .\notifications\models.py:453 msgid "Auteur" -msgstr "" +msgstr "Auteur" -#: notifications/models.py:407 +#: .\notifications\models.py:456 msgid "Envoyé le" -msgstr "" +msgstr "Verzonden op" -#: notifications/models.py:408 +#: .\notifications\models.py:457 msgid "Supprimé" -msgstr "" +msgstr "Verwijderd" -#: notifications/models.py:416 +#: .\notifications\models.py:465 msgid "Messages" -msgstr "" +msgstr "Berichten" -#: notifications/models.py:441 +#: .\notifications\models.py:490 msgid "Intervention annulée" -msgstr "" +msgstr "Interventie geannuleerd" -#: notifications/models.py:446 +#: .\notifications\models.py:495 msgid "Tous (pas de filtre)" -msgstr "" +msgstr "Alle (geen filter)" -#: notifications/models.py:447 +#: .\notifications\models.py:496 msgid "Doublon" -msgstr "" +msgstr "Duplicaat" -#: notifications/models.py:448 +#: .\notifications\models.py:497 msgid "A rediriger" -msgstr "" +msgstr "Door te sturen" -#: notifications/models.py:449 +#: .\notifications\models.py:498 msgid "Pas sous notre gestion" -msgstr "" +msgstr "Niet onder ons beheer" -#: notifications/models.py:450 +#: .\notifications\models.py:499 msgid "Non-relevant" -msgstr "" +msgstr "Niet relevant" -#: notifications/models.py:451 +#: .\notifications\models.py:500 msgid "Autre" -msgstr "" +msgstr "Overige" -#: notifications/models.py:455 +#: .\notifications\models.py:504 msgid "Nom de la règle" -msgstr "" +msgstr "Regelnaam" -#: notifications/models.py:456 +#: .\notifications\models.py:505 msgid "Active" -msgstr "" +msgstr "Actief" -#: notifications/models.py:462 +#: .\notifications\models.py:511 msgid "Événement déclencheur" -msgstr "" +msgstr "Triggergebeurtenis" -#: notifications/models.py:468 +#: .\notifications\models.py:517 msgid "Filtre : type d'annulation" -msgstr "" +msgstr "Filter: annuleringstype" -#: notifications/models.py:470 +#: .\notifications\models.py:519 msgid "" "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "valeur pour n'agir que sur ce type précis." -msgstr "" +msgstr "Leeg laten om te triggeren op elk type annulering. Selecteer een waarde om alleen op dit specifieke type te reageren." -#: notifications/models.py:480 +#: .\notifications\models.py:529 msgid "Type de notification" -msgstr "" +msgstr "Type melding" -#: notifications/models.py:484 +#: .\notifications\models.py:533 msgid "Modèle de titre" -msgstr "" +msgstr "Titelsjabloon" -#: notifications/models.py:486 +#: .\notifications\models.py:535 #, python-brace-format msgid "" "Variables disponibles : {intervention_code}, {intervention_title}, " "{cancellation_type_label}" -msgstr "" +msgstr "Beschikbare variabelen: {intervention_code}, {intervention_title}, {cancellation_type_label}" -#: notifications/models.py:492 +#: .\notifications\models.py:541 msgid "Modèle de contenu" -msgstr "" +msgstr "Inhoudssjabloon" -#: notifications/models.py:494 +#: .\notifications\models.py:543 #, python-brace-format msgid "" "Variables disponibles : {intervention_code}, {intervention_title}, " "{cancellation_type_label}, {cancellation_reason}" -msgstr "" +msgstr "Beschikbare variabelen: {intervention_code}, {intervention_title}, {cancellation_type_label}, {cancellation_reason}" -#: notifications/models.py:505 +#: .\notifications\models.py:554 msgid "" "Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "équipes." -msgstr "" +msgstr "Meldingen worden verzonden naar alle leden (CompanyMember) van deze teams." -#: notifications/models.py:511 +#: .\notifications\models.py:560 msgid "Utilisateurs destinataires supplémentaires" -msgstr "" +msgstr "Extra individuele ontvangers" -#: notifications/models.py:519 +#: .\notifications\models.py:568 msgid "" "Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "charge), elle est automatiquement archivée pour tous les autres " "destinataires." -msgstr "" +msgstr "Indien ingeschakeld, zodra een ontvanger de melding als gelezen markeert (overname), wordt deze automatisch gearchiveerd voor alle andere ontvangers." -#: notifications/models.py:525 +#: .\notifications\models.py:574 msgid "Créée le" -msgstr "" +msgstr "Aangemaakt op" -#: notifications/models.py:526 +#: .\notifications\models.py:575 msgid "Mise à jour le" -msgstr "" +msgstr "Bijgewerkt op" -#: notifications/models.py:532 +#: .\notifications\models.py:581 msgid "Règle de notification" -msgstr "" +msgstr "Meldingsregel" -#: notifications/models.py:533 +#: .\notifications\models.py:582 msgid "Règles de notification" -msgstr "" +msgstr "Meldingsregels" -#: notifications/models.py:569 +#: .\notifications\models.py:618 msgid "Pièce jointe de message" -msgstr "" +msgstr "Berichtbijlage" -#: notifications/models.py:570 +#: .\notifications\models.py:619 msgid "Pièces jointes de messages" -msgstr "" +msgstr "Berichtbijlagen" -#: notifications/templates/notifications/_new_discussion_modal.html:8 -#: notifications/templates/notifications/discussion_list.html:41 +#: .\notifications\templates\notifications\_new_discussion_modal.html:8 +#: .\notifications\templates\notifications\discussion_list.html:74 +#: .\notifications\templates\notifications\inbox.html:165 msgid "Nouvelle discussion" msgstr "Nieuw gesprek" -#: notifications/templates/notifications/_new_discussion_modal.html:10 +#: .\notifications\templates\notifications\_new_discussion_modal.html:10 msgid "Fermer" msgstr "Sluiten" -#: notifications/templates/notifications/_new_discussion_modal.html:17 +#: .\notifications\templates\notifications\_new_discussion_modal.html:17 msgid "Sujet / Titre (optionnel)" msgstr "Onderwerp / Titel (optioneel)" -#: notifications/templates/notifications/_new_discussion_modal.html:20 +#: .\notifications\templates\notifications\_new_discussion_modal.html:20 msgid "Ex: Question sur le dossier..." msgstr "Bijv: Vraag over het dossier..." -#: notifications/templates/notifications/_new_discussion_modal.html:25 +#: .\notifications\templates\notifications\_new_discussion_modal.html:25 msgid "Message *" msgstr "Bericht *" -#: notifications/templates/notifications/_new_discussion_modal.html:28 +#: .\notifications\templates\notifications\_new_discussion_modal.html:28 msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." -msgstr "Typ @ om gebruikers of teams te vermelden/taggen." +msgstr "Typ @ om gebruikers of teams te vermelden." -#: notifications/templates/notifications/_new_discussion_modal.html:32 +#: .\notifications\templates\notifications\_new_discussion_modal.html:32 msgid "Rédigez votre message... (@ pour tagger quelqu'un)" msgstr "Schrijf uw bericht... (@ om iemand te taggen)" -#: notifications/templates/notifications/_new_discussion_modal.html:44 +#: .\notifications\templates\notifications\_new_discussion_modal.html:44 msgid "Joindre des fichiers" msgstr "Bestanden bijvoegen" -#: notifications/templates/notifications/_new_discussion_modal.html:52 -#: notifications/templates/notifications/create.html:82 -#: notifications/templates/notifications/notification_settings.html:83 -#: notifications/templates/notifications/team_form.html:39 +#: .\notifications\templates\notifications\_new_discussion_modal.html:52 +#: .\notifications\templates\notifications\create.html:82 +#: .\notifications\templates\notifications\notification_settings.html:99 +#: .\notifications\templates\notifications\team_form.html:39 msgid "Annuler" msgstr "Annuleren" -#: notifications/templates/notifications/_new_discussion_modal.html:55 -#: notifications/templates/notifications/create.html:85 -#: notifications/templates/notifications/discussion_detail.html:194 +#: .\notifications\templates\notifications\_new_discussion_modal.html:55 +#: .\notifications\templates\notifications\create.html:85 +#: .\notifications\templates\notifications\discussion_detail.html:194 msgid "Envoyer" msgstr "Verzenden" -#: notifications/templates/notifications/create.html:11 +#: .\notifications\templates\notifications\create.html:11 msgid "Créer une notification" -msgstr "" +msgstr "Melding aanmaken" -#: notifications/templates/notifications/create.html:69 -#: notifications/templates/notifications/create.html:75 +#: .\notifications\templates\notifications\create.html:69 +#: .\notifications\templates\notifications\create.html:75 msgid "Ctrl+clic pour sélectionner plusieurs" -msgstr "" +msgstr "Ctrl+klik om meerdere te selecteren" -#: notifications/templates/notifications/discussion_detail.html:120 +#: .\notifications\templates\notifications\discussion_detail.html:85 +msgid "Retour aux discussions" +msgstr "Terug naar gesprekken" + +#: .\notifications\templates\notifications\discussion_detail.html:120 msgid "Aucun message pour l'instant. Soyez le premier à écrire." -msgstr "" +msgstr "Nog geen berichten. Wees de eerste om te schrijven." -#: notifications/templates/notifications/discussion_detail.html:184 +#: .\notifications\templates\notifications\discussion_detail.html:184 msgid "Écrire un message... (@ pour mentionner)" -msgstr "" +msgstr "Schrijf een bericht... (@ om te vermelden)" -#: notifications/templates/notifications/discussion_detail.html:187 +#: .\notifications\templates\notifications\discussion_detail.html:187 msgid "Joindre" -msgstr "" +msgstr "Bijvoegen" -#: notifications/templates/notifications/discussion_detail.html:202 +#: .\notifications\templates\notifications\discussion_detail.html:202 msgid "Cette discussion est clôturée." -msgstr "" +msgstr "Dit gesprek is gesloten." -#: notifications/templates/notifications/discussion_list.html:46 -#: notifications/templates/notifications/discussion_list.html:47 -#: notifications/templates/notifications/inbox.html:57 +#: .\notifications\templates\notifications\discussion_list.html:79 +#: .\notifications\templates\notifications\discussion_list.html:80 +#: .\notifications\templates\notifications\inbox.html:170 +#: .\notifications\templates\notifications\inbox.html:171 msgid "Paramètres" msgstr "Instellingen" -#: notifications/templates/notifications/discussion_list.html:56 +#: .\notifications\templates\notifications\discussion_list.html:89 +#: .\notifications\templates\notifications\inbox.html:366 msgid "Vous n'avez encore aucune discussion." -msgstr "" +msgstr "U heeft nog geen gesprekken." -#: notifications/templates/notifications/discussion_list.html:92 +#: .\notifications\templates\notifications\discussion_list.html:137 +#: .\notifications\templates\notifications\inbox.html:414 msgid "Aucun message encore." -msgstr "" +msgstr "Nog geen bericht." -#: notifications/templates/notifications/inbox.html:44 -#: notifications/templates/notifications/inbox_mobile.html:72 +#: .\notifications\templates\notifications\discussion_list.html:160 +#: .\notifications\templates\notifications\inbox.html:437 +msgid "participants au total" +msgstr "deelnemers in totaal" + +#: .\notifications\templates\notifications\discussion_list.html:170 +#: .\notifications\templates\notifications\inbox.html:447 +msgid "non lu(s)" +msgstr "ongelezen" + +#: .\notifications\templates\notifications\inbox.html:151 +#: .\notifications\templates\notifications\inbox_mobile.html:72 msgid "Tout marquer comme lu" msgstr "Alles als gelezen markeren" -#: notifications/templates/notifications/inbox.html:50 +#: .\notifications\templates\notifications\inbox.html:157 msgid "Nouvelle notification" msgstr "Nieuwe melding" -#: notifications/templates/notifications/inbox.html:68 -#: notifications/templates/notifications/inbox_mobile.html:45 +#: .\notifications\templates\notifications\inbox.html:192 +#: .\notifications\templates\notifications\inbox_mobile.html:45 msgid "Tous les types" msgstr "Alle types" -#: notifications/templates/notifications/inbox.html:80 -#: notifications/templates/notifications/inbox_mobile.html:57 +#: .\notifications\templates\notifications\inbox.html:204 +#: .\notifications\templates\notifications\inbox_mobile.html:57 msgid "Archivées" msgstr "Gearchiveerd" -#: notifications/templates/notifications/inbox.html:86 -#: notifications/templates/notifications/inbox_mobile.html:61 +#: .\notifications\templates\notifications\inbox.html:210 +#: .\notifications\templates\notifications\inbox_mobile.html:61 msgid "Réinitialiser" -msgstr "Resetten" +msgstr "Herstellen" -#: notifications/templates/notifications/inbox.html:120 -#: notifications/templates/notifications/inbox_mobile.html:90 +#: .\notifications\templates\notifications\inbox.html:244 +#: .\notifications\templates\notifications\inbox_mobile.html:90 msgid "Nouveau" msgstr "Nieuw" -#: notifications/templates/notifications/inbox.html:131 -#: notifications/templates/notifications/inbox.html:135 +#: .\notifications\templates\notifications\inbox.html:255 +#: .\notifications\templates\notifications\inbox.html:259 msgid "Prendre en charge" -msgstr "In behandeling nemen" +msgstr "Overnemen" -#: notifications/templates/notifications/inbox.html:131 -#: notifications/templates/notifications/inbox.html:137 +#: .\notifications\templates\notifications\inbox.html:255 +#: .\notifications\templates\notifications\inbox.html:261 msgid "Marquer comme lu" -msgstr "Markeren als gelezen" +msgstr "Als gelezen markeren" -#: notifications/templates/notifications/inbox.html:146 -#: notifications/templates/notifications/inbox_mobile.html:125 +#: .\notifications\templates\notifications\inbox.html:270 +#: .\notifications\templates\notifications\inbox_mobile.html:125 msgid "Archiver" msgstr "Archiveren" -#: notifications/templates/notifications/inbox.html:223 -#: notifications/templates/notifications/inbox_mobile.html:141 +#: .\notifications\templates\notifications\inbox.html:347 +#: .\notifications\templates\notifications\inbox_mobile.html:141 msgid "Aucune notification archivée." msgstr "Geen gearchiveerde meldingen." -#: notifications/templates/notifications/inbox.html:225 -#: notifications/templates/notifications/inbox_mobile.html:143 +#: .\notifications\templates\notifications\inbox.html:349 +#: .\notifications\templates\notifications\inbox_mobile.html:143 msgid "Vous n'avez aucune notification." msgstr "U heeft geen meldingen." -#: notifications/templates/notifications/inbox_mobile.html:36 +#: .\notifications\templates\notifications\inbox_mobile.html:36 msgid "Accueil" -msgstr "" +msgstr "Startpagina" -#: notifications/templates/notifications/inbox_mobile.html:115 +#: .\notifications\templates\notifications\inbox_mobile.html:115 msgid "Prendre" -msgstr "Neem" +msgstr "Nemen" -#: notifications/templates/notifications/inbox_mobile.html:117 +#: .\notifications\templates\notifications\inbox_mobile.html:117 msgid "Lu" msgstr "Gelezen" -#: notifications/templates/notifications/notification_settings.html:15 +#: .\notifications\templates\notifications\notification_settings.html:15 msgid "Paramètres des notifications" msgstr "Meldingsinstellingen" -#: notifications/templates/notifications/notification_settings.html:17 +#: .\notifications\templates\notifications\notification_settings.html:17 msgid "" "Gérez vos préférences de rappel par e-mail pour les notifications non lues." -msgstr "" +msgstr "Beheer uw e-mailherinneringsvoorkeuren voor ongelezen meldingen." -#: notifications/templates/notifications/notification_settings.html:26 +#: .\notifications\templates\notifications\notification_settings.html:26 msgid "Rappels par e-mail" msgstr "E-mailherinneringen" -#: notifications/templates/notifications/notification_settings.html:37 +#: .\notifications\templates\notifications\notification_settings.html:36 +msgid "Langue préférée pour les e-mails et notifications" +msgstr "Voorkeurstaal voor e-mails en meldingen" + +#: .\notifications\templates\notifications\notification_settings.html:45 +msgid "" +"Les e-mails de rappel et les notifications automatiques vous seront envoyés " +"dans cette langue." +msgstr "Herinneringsmails en automatische meldingen worden in deze taal verzonden." + +#: .\notifications\templates\notifications\notification_settings.html:53 msgid "Activer les rappels par e-mail" msgstr "E-mailherinneringen inschakelen" -#: notifications/templates/notifications/notification_settings.html:40 +#: .\notifications\templates\notifications\notification_settings.html:56 msgid "" "Recevoir un récapitulatif par e-mail si des notifications restent non lues " "au-delà du délai spécifié." -msgstr "" +msgstr "Ontvang een samenvatting per e-mail als meldingen langer dan de opgegeven tijd ongelezen blijven." -#: notifications/templates/notifications/notification_settings.html:51 +#: .\notifications\templates\notifications\notification_settings.html:67 msgid "Adresse(s) e-mail de réception" msgstr "E-mailadres(sen) voor ontvangst" -#: notifications/templates/notifications/notification_settings.html:59 +#: .\notifications\templates\notifications\notification_settings.html:75 msgid "Laissez vide pour utiliser l'e-mail principal de votre compte" -msgstr "Laat leeg om het primaire e-mailadres van uw account te gebruiken" +msgstr "Leeg laten om het primaire e-mailadres van uw account te gebruiken" -#: notifications/templates/notifications/notification_settings.html:60 +#: .\notifications\templates\notifications\notification_settings.html:76 msgid "Pour plusieurs destinataires, séparez les adresses par des virgules." -msgstr "Voor meervoudige ontvangers scheidt u de adressen met komma's." +msgstr "Voor meerdere ontvangers, scheid de adressen met komma's." -#: notifications/templates/notifications/notification_settings.html:67 +#: .\notifications\templates\notifications\notification_settings.html:83 msgid "Délai avant l'envoi du rappel (en heures)" -msgstr "Wachttijd vóór verzending van herinnering (in uren)" +msgstr "Vertraging voor verzending herinnering (in uren)" -#: notifications/templates/notifications/notification_settings.html:71 +#: .\notifications\templates\notifications\notification_settings.html:87 msgid "heures" -msgstr "uren" +msgstr "uur" -#: notifications/templates/notifications/notification_settings.html:77 +#: .\notifications\templates\notifications\notification_settings.html:93 msgid "" "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "bout de 24 heures." -msgstr "" +msgstr "Voorbeeld: 24u = er wordt een herinnering gestuurd als een melding na 24 uur niet is gelezen." -#: notifications/templates/notifications/notification_settings.html:86 +#: .\notifications\templates\notifications\notification_settings.html:102 msgid "Enregistrer mes préférences" msgstr "Mijn voorkeuren opslaan" -#: notifications/templates/notifications/team_form.html:11 +#: .\notifications\templates\notifications\team_form.html:11 msgid "une équipe" -msgstr "" +msgstr "een team" -#: notifications/templates/notifications/team_form.html:34 +#: .\notifications\templates\notifications\team_form.html:34 msgid "Ctrl+clic pour sélectionner plusieurs membres" -msgstr "" +msgstr "Ctrl+klik om meerdere leden te selecteren" -#: notifications/templates/notifications/team_form.html:42 +#: .\notifications\templates\notifications\team_form.html:42 msgid "Enregistrer" -msgstr "" +msgstr "Opslaan" -#: notifications/templates/notifications/team_list.html:14 +#: .\notifications\templates\notifications\team_list.html:14 msgid "Nouvelle équipe" -msgstr "" +msgstr "Nieuw team" -#: notifications/templates/notifications/team_list.html:18 +#: .\notifications\templates\notifications\team_list.html:18 msgid "Retour aux notifications" -msgstr "" +msgstr "Terug naar meldingen" -#: notifications/templates/notifications/team_list.html:46 -#: notifications/views.py:456 +#: .\notifications\templates\notifications\team_list.html:46 +#: .\notifications\views.py:498 msgid "Modifier" -msgstr "" +msgstr "Bewerken" -#: notifications/templates/notifications/team_list.html:51 +#: .\notifications\templates\notifications\team_list.html:51 msgid "Supprimer cette équipe ?" -msgstr "" +msgstr "Dit team verwijderen?" -#: notifications/templates/notifications/team_list.html:54 +#: .\notifications\templates\notifications\team_list.html:54 msgid "Supprimer" -msgstr "" +msgstr "Verwijderen" -#: notifications/templates/notifications/team_list.html:68 +#: .\notifications\templates\notifications\team_list.html:68 msgid "Aucun membre" -msgstr "" +msgstr "Geen leden" -#: notifications/templates/notifications/team_list.html:73 +#: .\notifications\templates\notifications\team_list.html:73 msgid "membre(s)" -msgstr "" +msgstr "lid/leden" -#: notifications/templates/notifications/team_list.html:75 +#: .\notifications\templates\notifications\team_list.html:75 msgid "Créée par" -msgstr "" +msgstr "Aangemaakt door" -#: notifications/templates/notifications/team_list.html:85 +#: .\notifications\templates\notifications\team_list.html:85 msgid "Aucune équipe définie." -msgstr "" +msgstr "Geen teams gedefinieerd." -#: notifications/templates/notifications/team_list.html:88 +#: .\notifications\templates\notifications\team_list.html:88 msgid "Créer une équipe" -msgstr "" +msgstr "Team aanmaken" -#: notifications/views.py:348 +#: .\notifications\views.py:390 msgid "Vous n'avez pas les droits pour créer une notification." -msgstr "" +msgstr "U heeft geen rechten om een melding aan te maken." -#: notifications/views.py:381 +#: .\notifications\views.py:423 msgid "Notification envoyée avec succès." -msgstr "" +msgstr "Melding succesvol verzonden." -#: notifications/views.py:418 +#: .\notifications\views.py:460 msgid "Vous n'avez pas les droits pour créer une équipe." -msgstr "" +msgstr "U heeft geen rechten om een team aan te maken." -#: notifications/views.py:428 +#: .\notifications\views.py:470 msgid "Équipe créée avec succès." -msgstr "" +msgstr "Team succesvol aangemaakt." -#: notifications/views.py:433 +#: .\notifications\views.py:475 msgid "Créer" -msgstr "" +msgstr "Aanmaken" -#: notifications/views.py:444 +#: .\notifications\views.py:486 msgid "Vous n'avez pas les droits pour modifier une équipe." -msgstr "" +msgstr "U heeft geen rechten om een team te bewerken." -#: notifications/views.py:451 +#: .\notifications\views.py:493 msgid "Équipe mise à jour." -msgstr "" +msgstr "Team bijgewerkt." -#: notifications/views.py:466 +#: .\notifications\views.py:508 msgid "Vous n'avez pas les droits pour supprimer une équipe." -msgstr "" +msgstr "U heeft geen rechten om een team te verwijderen." -#: notifications/views.py:469 +#: .\notifications\views.py:511 msgid "Équipe supprimée." -msgstr "" +msgstr "Team verwijderd." -#: notifications/views.py:531 +#: .\notifications\views.py:561 msgid "Vous n'êtes pas participant de cette discussion." -msgstr "" +msgstr "U bent geen deelnemer aan dit gesprek." -#: notifications/views.py:544 +#: .\notifications\views.py:574 msgid "Message envoyé." -msgstr "" +msgstr "Bericht verzonden." -#: notifications/views.py:582 +#: .\notifications\views.py:602 +#, python-format +msgid "Discussion de %(name)s" +msgstr "Gesprek van %(name)s" + +#: .\notifications\views.py:613 msgid "Discussion créée avec succès." msgstr "Gesprek succesvol aangemaakt." -#: notifications/views.py:585 +#: .\notifications\views.py:616 msgid "Le contenu du message ne peut pas être vide." msgstr "De inhoud van het bericht mag niet leeg zijn." -#: notifications/views.py:602 +#: .\notifications\views.py:633 msgid "Vos préférences de rappel par e-mail ont été enregistrées." msgstr "Uw e-mailherinneringsvoorkeuren zijn opgeslagen." diff --git a/streetup/notifications/management/commands/send_unread_notification_reminders.py b/streetup/notifications/management/commands/send_unread_notification_reminders.py index c05b50a..6ed22b5 100644 --- a/streetup/notifications/management/commands/send_unread_notification_reminders.py +++ b/streetup/notifications/management/commands/send_unread_notification_reminders.py @@ -5,11 +5,12 @@ from datetime import timedelta from django.conf import settings from django.core.mail import EmailMultiAlternatives from django.core.management.base import BaseCommand -from django.utils import timezone +from django.utils import timezone, translation from django.utils.translation import gettext as _ from common.models import UserConfig from notifications.models import NotificationRecipient +from notifications.views import _translate_notification_data logger = logging.getLogger(__name__) @@ -87,81 +88,96 @@ class Command(BaseCommand): logger.warning("Aucune adresse e-mail trouvée pour l'utilisateur %s.", user.username) continue - # Construire l'e-mail - count = len(valid_recipients) - subject = f"[StreetUp] Rappel : {count} notification(s) non lue(s)" + user_lang = getattr(config, 'preferred_language', 'fr') or 'fr' + with translation.override(user_lang): + # Construire l'e-mail dans la langue de l'utilisateur + count = len(valid_recipients) + subject = _("[StreetUp] Rappel : %(count)d notification(s) non lue(s)") % {'count': count} - # Host URL pour les liens - domain = (getattr(settings, 'ROOT_URL', '') or getattr(settings, 'SITE_URL', '') or 'http://localhost:8000').rstrip('/') + # Host URL pour les liens + domain = (getattr(settings, 'ROOT_URL', '') or getattr(settings, 'SITE_URL', '') or 'http://localhost:8000').rstrip('/') - lines_text = [ - f"Bonjour {user.get_full_name() or user.username},\n", - f"Vous avez {count} notification(s) non lue(s) reçue(s) il y a plus de {delay_hours} heure(s) :\n", - ] + user_display_name = user.get_full_name() or user.username + greeting = _("Bonjour %(name)s,") % {'name': user_display_name} + intro_text = _("Vous avez %(count)d notification(s) non lue(s) reçue(s) il y a plus de %(delay)d heure(s) :") % { + 'count': count, + 'delay': delay_hours, + } - html_items = [] - for r in valid_recipients: - n = r.notification - created_str = n.created_at.strftime('%d/%m/%Y à %H:%M') - sender_str = n.sender.get_full_name() if n.sender else _("Système") - if n.action_url: - action_path = n.action_url if n.action_url.startswith('/') else f"/{n.action_url}" - link = f"{domain}{action_path}" + lines_text = [ + f"{greeting}\n", + f"{intro_text}\n", + ] + + html_items = [] + for r in valid_recipients: + n = r.notification + _translate_notification_data(n) + created_str = n.created_at.strftime('%d/%m/%Y %H:%M') + sender_str = n.sender.get_full_name() if n.sender else _("Système") + if n.action_url: + action_path = n.action_url if n.action_url.startswith('/') else f"/{n.action_url}" + link = f"{domain}{action_path}" + else: + link = f"{domain}/notifications/" + + type_label = n.get_notification_type_display() + lines_text.append(f"- [{type_label}] {n.title} ({_('reçue le')} {created_str} {_('par')} {sender_str})") + lines_text.append(f" {_('Lien')}: {link}\n") + + html_items.append( + f"
  • " + f"{n.title} ({type_label})
    " + f"{_('Reçue le')} {created_str} • {sender_str}
    " + f"{_('Consulter')}" + f"
  • " + ) + + lines_text.append(f"\n{_('Accédez à votre boîte de réception :')} {domain}/notifications/") + text_body = "\n".join(lines_text) + + html_title = _("Notifications non lues") + html_intro = _("Vous avez %(count)d notification(s) non lue(s) qui attendent votre attention :") % {'count': count} + btn_label = _("Voir mes notifications") + + html_body = f""" +
    +

    {html_title}

    +

    {greeting}

    +

    {html_intro}

    +
      + {"".join(html_items)} +
    +

    + + {btn_label} + +

    +
    + """ + + if dry_run: + self.stdout.write(f"[DRY-RUN] E-mail simulé [{user_lang}] pour {user.username} ({recipient_emails}) - {count} notification(s).") else: - link = f"{domain}/notifications/" + try: + msg = EmailMultiAlternatives( + subject=subject, + body=text_body, + from_email=getattr(settings, 'DEFAULT_FROM_EMAIL', 'StreetUp no-reply '), + to=recipient_emails, + ) + msg.attach_alternative(html_body, "text/html") + msg.send() - lines_text.append(f"- [{n.get_notification_type_display()}] {n.title} (reçue le {created_str} par {sender_str})") - lines_text.append(f" Lien: {link}\n") - - html_items.append( - f"
  • " - f"{n.title} ({n.get_notification_type_display()})
    " - f"Reçue le {created_str} • {sender_str}
    " - f"Consulter" - f"
  • " - ) - - lines_text.append(f"\nAccédez à votre boîte de réception : {domain}/notifications/") - text_body = "\n".join(lines_text) - - html_body = f""" -
    -

    Notifications non lues

    -

    Bonjour {user.get_full_name() or user.username},

    -

    Vous avez {count} notification(s) non lue(s) qui attendent votre attention :

    -
      - {"".join(html_items)} -
    -

    - - Voir mes notifications - -

    -
    - """ - - if dry_run: - self.stdout.write(f"[DRY-RUN] E-mail simulé pour {user.username} ({recipient_emails}) - {count} notification(s).") - else: - try: - msg = EmailMultiAlternatives( - subject=subject, - body=text_body, - from_email=getattr(settings, 'DEFAULT_FROM_EMAIL', 'StreetUp no-reply '), - to=recipient_emails, - ) - msg.attach_alternative(html_body, "text/html") - msg.send() - - # Marquer le rappel envoyé - NotificationRecipient.objects.filter(pk__in=[r.pk for r in valid_recipients]).update( - reminder_sent_at=now - ) - sent_count += 1 - user_count += 1 - self.stdout.write(self.style.SUCCESS(f"Rappel envoyé avec succès à {user.username} ({recipient_emails}).")) - except Exception as exc: - logger.exception("Erreur d'envoi du rappel pour %s: %s", user.username, exc) - self.stderr.write(self.style.ERROR(f"Erreur d'envoi pour {user.username}: {exc}")) + # Marquer le rappel envoyé + NotificationRecipient.objects.filter(pk__in=[r.pk for r in valid_recipients]).update( + reminder_sent_at=now + ) + sent_count += 1 + user_count += 1 + self.stdout.write(self.style.SUCCESS(f"Rappel envoyé avec succès à {user.username} ({recipient_emails}) en [{user_lang}].")) + except Exception as exc: + logger.exception("Erreur d'envoi du rappel pour %s: %s", user.username, exc) + self.stderr.write(self.style.ERROR(f"Erreur d'envoi pour {user.username}: {exc}")) self.stdout.write(self.style.SUCCESS(f"Traitement terminé : {sent_count} e-mail(s) envoyé(s) pour {user_count} utilisateur(s).")) diff --git a/streetup/notifications/templates/notifications/notification_settings.html b/streetup/notifications/templates/notifications/notification_settings.html index 0c2c0df..b0e5be7 100644 --- a/streetup/notifications/templates/notifications/notification_settings.html +++ b/streetup/notifications/templates/notifications/notification_settings.html @@ -30,6 +30,22 @@
    {% csrf_token %} + +
    + +
    + {{ form.preferred_language }} +
    + {% if form.preferred_language.errors %} +
    {{ form.preferred_language.errors|join:", " }}
    + {% endif %} +
    + {% translate "Les e-mails de rappel et les notifications automatiques vous seront envoyés dans cette langue." %} +
    +
    +
    diff --git a/streetup/notifications/tests.py b/streetup/notifications/tests.py index 6f1aa27..4db9cc1 100644 --- a/streetup/notifications/tests.py +++ b/streetup/notifications/tests.py @@ -123,6 +123,7 @@ class NotificationReminderTests(TestCase): # POST updated settings response = self.client.post(reverse('notifications:settings'), { + 'preferred_language': 'nl', 'notification_reminder_enabled': 'on', 'notification_reminder_emails': 'custom@example.com, other@example.com', 'notification_reminder_delay_hours': 12, @@ -130,6 +131,7 @@ class NotificationReminderTests(TestCase): self.assertEqual(response.status_code, 302) self.config.refresh_from_db() + self.assertEqual(self.config.preferred_language, 'nl') self.assertTrue(self.config.notification_reminder_enabled) self.assertEqual(self.config.notification_reminder_emails, 'custom@example.com, other@example.com') self.assertEqual(self.config.notification_reminder_delay_hours, 12) @@ -175,3 +177,37 @@ class NotificationReminderTests(TestCase): # Verify reminder_sent_at is set recipient.refresh_from_db() self.assertIsNotNone(recipient.reminder_sent_at) + + @override_settings(EMAIL_OVERRIDE=None) + def test_send_unread_notification_reminders_multilingual(self): + from datetime import timedelta + from django.utils import timezone + from django.core import mail + from django.core.management import call_command + from notifications.models import Notification, NotificationRecipient + + self.config.notification_reminder_enabled = True + self.config.notification_reminder_delay_hours = 1 + self.config.preferred_language = 'nl' + self.config.save() + + past_time = timezone.now() - timedelta(hours=2) + notif = Notification.objects.create( + title="Dringende melding", + content="Details", + notification_type=Notification.TYPE_ALERT, + ) + recipient = NotificationRecipient.objects.create( + notification=notif, + user=self.user, + ) + Notification.objects.filter(pk=notif.pk).update(created_at=past_time) + + mail.outbox.clear() + call_command('send_unread_notification_reminders') + + self.assertEqual(len(mail.outbox), 1) + sent_email = mail.outbox[0] + # In Dutch, subject contains 'Herinnering' + self.assertIn("Herinnering", sent_email.subject) + diff --git a/streetup/notifications/views.py b/streetup/notifications/views.py index d93ddb0..19c2076 100644 --- a/streetup/notifications/views.py +++ b/streetup/notifications/views.py @@ -597,8 +597,9 @@ def discussion_create(request): files = request.FILES.getlist('attachments') if content: + user_name = request.user.get_full_name() or request.user.username discussion = Discussion.objects.create( - title=title or f"Discussion de {request.user.get_full_name() or request.user.username}", + title=title or (_("Discussion de %(name)s") % {'name': user_name}), created_by=request.user, ) discussion.participants.add(request.user) diff --git a/streetup/streetup/urls.py b/streetup/streetup/urls.py index 57fd86b..e27ca33 100644 --- a/streetup/streetup/urls.py +++ b/streetup/streetup/urls.py @@ -21,8 +21,9 @@ from django.conf import settings from django.conf.urls.static import static from django.conf.urls import handler403 from django.shortcuts import render -from django.views.i18n import JavaScriptCatalog, set_language +from django.views.i18n import JavaScriptCatalog from django.contrib.auth.decorators import login_not_required +from common import views as common_views from common.private_files import views as private_files_views @@ -55,7 +56,7 @@ urlpatterns = [ path("password/change/", auth_views.PasswordChangeView.as_view(success_url=reverse_lazy("common:account_info")), name="password_change",), path('accounts/password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'), path("private/download/", private_files_views.private_file_download, name="private_file_download"), - path("i18n/setlang/", login_not_required(set_language), name="set_language"), + path("i18n/setlang/", login_not_required(common_views.set_language), name="set_language"), path("jsi18n/", login_not_required(JavaScriptCatalog.as_view()), name="javascript-catalog"), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)