From d038bf2b02972784b3073ff04d7f3c6ccaf0d95d Mon Sep 17 00:00:00 2001
From: Antoine Nguyen
Date: Wed, 4 Feb 2026 09:32:08 +0100
Subject: [PATCH] Updated translation files
---
frontend/src/locale/br/app.po | 308 +++--
frontend/src/locale/cs/app.po | 296 +++--
frontend/src/locale/de/app.po | 316 ++++--
frontend/src/locale/el/app.po | 296 +++--
frontend/src/locale/en/app.po | 296 +++--
frontend/src/locale/es/app.po | 308 +++--
frontend/src/locale/fi/app.po | 313 +++--
frontend/src/locale/fr/app.po | 412 ++++---
frontend/src/locale/it/app.po | 308 +++--
frontend/src/locale/ja/app.po | 296 +++--
frontend/src/locale/messages.pot | 296 +++--
frontend/src/locale/nl/app.po | 296 +++--
frontend/src/locale/pl/app.po | 296 +++--
frontend/src/locale/pt_BR/app.po | 316 ++++--
frontend/src/locale/ru/app.po | 316 ++++--
frontend/src/locale/sv/app.po | 316 ++++--
frontend/src/locale/tr/app.po | 300 +++--
frontend/src/locale/zh/app.po | 296 +++--
modoboa/locale/br/LC_MESSAGES/django.po | 574 +++++-----
modoboa/locale/cs/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/cs_CZ/LC_MESSAGES/django.po | 578 +++++-----
modoboa/locale/de/LC_MESSAGES/django.po | 566 +++++-----
modoboa/locale/de_DE/LC_MESSAGES/django.po | 578 +++++-----
modoboa/locale/el_GR/LC_MESSAGES/django.po | 586 +++++-----
modoboa/locale/en/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/es/LC_MESSAGES/django.po | 584 +++++-----
modoboa/locale/es_MX/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/fi/LC_MESSAGES/django.po | 570 +++++-----
modoboa/locale/fr/LC_MESSAGES/django.po | 1192 ++++++++++++--------
modoboa/locale/hu/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/it/LC_MESSAGES/django.po | 578 +++++-----
modoboa/locale/ja_JP/LC_MESSAGES/django.po | 972 +++++++++-------
modoboa/locale/ka/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/nl_NL/LC_MESSAGES/django.po | 570 +++++-----
modoboa/locale/no/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/pl_PL/LC_MESSAGES/django.po | 566 +++++-----
modoboa/locale/pt_BR/LC_MESSAGES/django.po | 568 +++++-----
modoboa/locale/pt_PT/LC_MESSAGES/django.po | 586 +++++-----
modoboa/locale/ro_RO/LC_MESSAGES/django.po | 570 +++++-----
modoboa/locale/ru/LC_MESSAGES/django.po | 1058 ++++++++++-------
modoboa/locale/si/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/sk/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/sk_SK/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/sl_SI/LC_MESSAGES/django.po | 565 +++++-----
modoboa/locale/sv/LC_MESSAGES/django.po | 566 +++++-----
modoboa/locale/tr/LC_MESSAGES/django.po | 573 +++++-----
modoboa/locale/tr_TR/LC_MESSAGES/django.po | 568 +++++-----
modoboa/locale/uk/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/zh/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/zh_CN/LC_MESSAGES/django.po | 563 ++++-----
modoboa/locale/zh_TW/LC_MESSAGES/django.po | 568 +++++-----
51 files changed, 14445 insertions(+), 11428 deletions(-)
diff --git a/frontend/src/locale/br/app.po b/frontend/src/locale/br/app.po
index 5702df85f..5d933e036 100644
--- a/frontend/src/locale/br/app.po
+++ b/frontend/src/locale/br/app.po
@@ -62,8 +62,8 @@ msgstr "Kont krouet"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -113,7 +113,7 @@ msgstr "Enaouet"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -133,7 +133,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -233,7 +233,7 @@ msgstr "Anv implier"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -264,10 +264,10 @@ msgstr "Kont nevez"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Oberioù"
@@ -286,7 +286,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -297,7 +297,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -458,6 +458,7 @@ msgstr "Hollek"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
#, fuzzy
msgid "First name"
msgstr "Anv bihan"
@@ -466,6 +467,7 @@ msgstr "Anv bihan"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Anv familh"
@@ -557,9 +559,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Serriñ"
@@ -620,7 +624,7 @@ msgstr "O vezañ anavezet"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Klask"
@@ -668,13 +672,14 @@ msgstr "Implij"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -901,7 +906,7 @@ msgstr "Neket ganet"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -993,7 +998,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Ouzhpennañ"
@@ -1277,10 +1282,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1473,7 +1478,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Kont nevez"
@@ -1513,7 +1518,7 @@ msgstr "Kont krouet"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1912,7 +1917,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1924,17 +1929,17 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
#, fuzzy
msgid "Provider"
msgstr "Domani krouet"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
#, fuzzy
msgid "Old account"
msgstr "Kont nevez"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
#, fuzzy
msgid "Migration deleted"
msgstr "Deiziad krouidigezh"
@@ -1954,14 +1959,14 @@ msgid "Associated domain"
msgstr "Domanioù meret"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
#, fuzzy
msgid "Associated domains"
msgstr "Domanioù meret"
@@ -1986,7 +1991,7 @@ msgstr "Domanioù meret"
msgid "No associated domains"
msgstr "Domanioù meret"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
#, fuzzy
msgid "Provider updated"
msgstr "Profil hizivaet"
@@ -2026,8 +2031,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -2079,7 +2084,7 @@ msgid "Edit calendar"
msgstr "Alias nevez"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
#, fuzzy
msgid "New calendar"
msgstr "Alias nevez"
@@ -2103,7 +2108,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2117,21 +2122,22 @@ msgid "Edit event"
msgstr "Kont nevez"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
#, fuzzy
msgid "New event"
msgstr "Kont nevez"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
#, fuzzy
msgid "Event updated"
msgstr "Kont hizivaet"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Kont hizivaet"
@@ -2150,7 +2156,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
#, fuzzy
msgid "Send"
msgstr "Kont nevez"
@@ -2189,13 +2195,12 @@ msgid "Category deleted"
msgstr "Deiziad krouidigezh"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Rummadoù"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
#, fuzzy
msgid "Display name"
msgstr "Diskouez an anv"
@@ -2252,23 +2257,35 @@ msgstr "Aozañ an darempred"
msgid "New contact"
msgstr "Darempred nevez"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Pellgomz"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Chomlec'h postel"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Niverenn pellgomz"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Darempredoù"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2363,7 +2380,7 @@ msgstr ""
msgid "Notifications"
msgstr "Deiziad aozañ diwezhañ"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Digevreañ"
@@ -2437,7 +2454,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Emporzhiañ"
@@ -2477,14 +2494,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2501,7 +2524,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2509,28 +2532,41 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
#, fuzzy
msgid "Provide one or more addresses"
msgstr "Chomlec'hioù ar c'haser"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "Postel"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
#, fuzzy
msgid "Email sent"
msgstr "Postel"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
#, fuzzy
msgid "Add to contacts"
@@ -2545,60 +2581,100 @@ msgstr "Aozañ an darempred"
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
#, fuzzy
msgid "Empty mailbox"
msgstr "Gant ur voest-posteloù"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Kont krouet"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
#, fuzzy
msgid "Message(s) deleted"
msgstr "Implij"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
#, fuzzy
msgid "Message(s) flagged"
msgstr "Implij"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "Emporzhiañ domanioù"
msgstr[1] "Emporzhiañ domanioù"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Deiziad krouidigezh"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
#, fuzzy
msgid "Parent mailbox"
@@ -2624,7 +2700,7 @@ msgstr "Boest-posteloù"
msgid "Mailbox created"
msgstr "Domani krouet"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2641,12 +2717,12 @@ msgstr "Implijout un dalvoudegezh domani dre-ziouer"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Arventennoù"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2693,7 +2769,7 @@ msgid "Migrations"
msgstr "Kadarnadur"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Titouroù"
@@ -2701,35 +2777,35 @@ msgstr "Titouroù"
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
#, fuzzy
msgid "Create a new mailbox"
msgstr "Gant ur voest-posteloù"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
#, fuzzy
msgid "Edit this mailbox"
msgstr "Gant ur voest-posteloù"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
#, fuzzy
msgid "Delete this mailbox"
msgstr "Gant ur voest-posteloù"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
#, fuzzy
msgid "Mailbox compressed"
msgstr "Boest-posteloù"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
#, fuzzy
msgid "Mailbox deleted"
msgstr "Deiziad krouidigezh"
@@ -2746,24 +2822,28 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
#, fuzzy
msgid "Field is required"
msgstr "Ar vaezienn-mañ a zo rekiset"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Disklotadurioù gerioù-tremen"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2883,7 +2963,7 @@ msgstr "Arventennoù"
msgid "Two-factor auth"
msgstr "O vezañ anavezet"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Treuzkas"
@@ -3047,28 +3127,32 @@ msgstr "Stumm staliet"
msgid "Message history"
msgstr "Implij"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
#, fuzzy
msgid "Calendar deleted"
msgstr "Deiziad krouidigezh"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Darempredoù"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
#, fuzzy
msgid "Add a category"
msgstr "Oberioù"
@@ -3108,7 +3192,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
#, fuzzy
msgid "Message deleted"
msgstr "Implij"
@@ -3121,39 +3205,44 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
#, fuzzy
msgid "Enable links"
msgstr "Enaouet"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
#, fuzzy
msgid "Disable links"
msgstr "Lazhet"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
#, fuzzy
msgid "Display source"
msgstr "Diskouez an anv"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Implij"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Implij"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
@@ -3162,6 +3251,9 @@ msgstr ""
msgid "Webmail"
msgstr "Postel"
+#~ msgid "Phone"
+#~ msgstr "Pellgomz"
+
#, fuzzy
#~ msgid "inactive"
#~ msgstr "Oberioù"
diff --git a/frontend/src/locale/cs/app.po b/frontend/src/locale/cs/app.po
index 682d9640c..90231793d 100644
--- a/frontend/src/locale/cs/app.po
+++ b/frontend/src/locale/cs/app.po
@@ -61,8 +61,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -111,7 +111,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -131,7 +131,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -229,7 +229,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -259,10 +259,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -281,7 +281,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -292,7 +292,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -438,6 +438,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -445,6 +446,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -533,9 +535,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -593,7 +597,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -641,13 +645,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -863,7 +868,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -954,7 +959,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1234,10 +1239,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1416,7 +1421,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1453,7 +1458,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1823,7 +1828,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1835,15 +1840,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1860,14 +1865,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1887,7 +1892,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1925,8 +1930,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1974,7 +1979,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1995,7 +2000,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2008,19 +2013,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2037,7 +2043,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2071,13 +2077,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2129,23 +2134,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2233,7 +2247,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2307,7 +2321,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2344,14 +2358,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2368,7 +2388,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2376,26 +2396,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2408,57 +2440,95 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2479,7 +2549,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2495,12 +2565,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2545,7 +2615,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2553,31 +2623,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2593,23 +2663,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2718,7 +2792,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2872,27 +2946,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2928,7 +3006,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2940,35 +3018,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/de/app.po b/frontend/src/locale/de/app.po
index 231a7c841..c3041f156 100644
--- a/frontend/src/locale/de/app.po
+++ b/frontend/src/locale/de/app.po
@@ -68,8 +68,8 @@ msgstr "API-Token erstellt"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr "Warnung"
@@ -118,7 +118,7 @@ msgstr "Aktiviert"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr "Betreff"
@@ -141,7 +141,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "Von"
@@ -242,7 +242,7 @@ msgstr "Name"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -272,10 +272,10 @@ msgstr "Anzahl benutzt"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Aktionen"
@@ -294,7 +294,7 @@ msgstr "Wollen Sie dieses WebAuthn Gerät wirklich löschen?"
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Nein"
@@ -305,7 +305,7 @@ msgstr "Nein"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Ja"
@@ -451,6 +451,7 @@ msgstr "Allgemeine Einstellungen"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr "Vorname"
@@ -458,6 +459,7 @@ msgstr "Vorname"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Nachname"
@@ -550,9 +552,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Schließen"
@@ -618,7 +622,7 @@ msgstr "Authentifikator registrieren"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Suchen"
@@ -666,13 +670,14 @@ msgstr "Verwendung"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr "Löschen"
@@ -892,7 +897,7 @@ msgstr "Nicht generiert"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -989,7 +994,7 @@ msgstr "Eine Domäne wählen"
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Hinzufügen"
@@ -1271,10 +1276,10 @@ msgstr "Domain gelöscht"
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr "Bearbeiten"
@@ -1469,7 +1474,7 @@ msgid "Create standard aliases for the domain."
msgstr "Standardaliase für diese Domäne erstellen."
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Neues Konto"
@@ -1507,7 +1512,7 @@ msgstr "Konto gelöscht"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1899,7 +1904,7 @@ msgstr "IMAP Port"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr "Gesichert"
@@ -1911,15 +1916,15 @@ msgstr "Ist die IMAP Verbindung mit SSL/TLS oder StartTLS gesichert?"
msgid "Check connection:"
msgstr "Verbindung überprüfen:"
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr "Provider"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr "Altes Konto"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr "Migration gelöscht"
@@ -1936,14 +1941,14 @@ msgid "Associated domain"
msgstr "Zugehörige Domain"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr "Port"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr "Verknüpfte Domänen"
@@ -1963,7 +1968,7 @@ msgstr "Anzahl der zugehörigen Domains:"
msgid "No associated domains"
msgstr "Keine zugehörigen Domains"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr "Provider aktualisiert"
@@ -2002,8 +2007,8 @@ msgstr "Warteschlangen ID"
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "Bis"
@@ -2055,7 +2060,7 @@ msgid "Edit calendar"
msgstr "Kalender bearbeiten"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr "Neuer Kalender"
@@ -2076,7 +2081,7 @@ msgid "Title"
msgstr "Titel"
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr "Kalender"
@@ -2089,19 +2094,20 @@ msgid "Edit event"
msgstr "Ereignis bearbeiten"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr "Neues Ereignis"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr "Termin hinzugefügt"
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr "Ereignis aktualisiert"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr "Ereignis gelöscht"
@@ -2120,7 +2126,7 @@ msgid "Select an ICS file"
msgstr "ICS Datei wählen"
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr "Senden"
@@ -2155,13 +2161,12 @@ msgid "Category deleted"
msgstr "Kalender gelöscht"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Kategorien"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr "Anzeigename"
@@ -2213,23 +2218,36 @@ msgstr "Kontakt bearbeiten"
msgid "New contact"
msgstr "Neuer Kontakt"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr "Adressbuchinfos anzeigen"
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr "Kontakte mit dem Adressbuch synchronisieren"
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
-msgstr "E-Mail"
+#: src/components/contacts/ContactList.vue:48
+#, fuzzy
+msgid "Synchronize"
+msgstr "Synchronisierung wurde gestartet"
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Telefon"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr "Adressbuchinfos anzeigen"
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "E-Mail Adresse"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Telefonnummer"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Administrator entfernt"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr "Synchronisierung wurde gestartet"
@@ -2323,7 +2341,7 @@ msgstr ""
msgid "Notifications"
msgstr "Datum der letzten Änderung"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Logout"
@@ -2403,7 +2421,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr "Doppelte Objekte nicht als Fehler behandeln"
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Import"
@@ -2440,14 +2458,20 @@ msgid "Relative time ranges"
msgstr "Relative Zeiträume"
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Tag"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Woche"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Monat"
@@ -2464,7 +2488,7 @@ msgid "no"
msgstr "nein"
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr "Anhänge"
@@ -2472,26 +2496,39 @@ msgstr "Anhänge"
msgid "Attach"
msgstr "Anhängen"
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
msgid "Provide one or more addresses"
msgstr "Eine oder mehrere Adressen eingeben"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr "Cc"
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr "Bcc"
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "E-Mail gesendet"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr "E-Mail gesendet"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr "Zu Kontakten hinzufügen"
@@ -2504,57 +2541,98 @@ msgstr "Kontakt aktualisieren"
msgid "Contact added to address book"
msgstr "Kontakt zum Adressbuch hinzugefügt"
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr "Als gelesen markieren"
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr "Als ungelesen markieren"
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr "Als gefolgt markieren"
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr "Als nicht gefolgt markieren"
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr "Postfach leeren"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr "an"
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr "Noch keine Nachricht in diesem Postfach"
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+#, fuzzy
+msgid "Sending failure"
+msgstr "Senden verboten"
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Konto gelöscht"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr "Nachricht(en) gelöscht"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr "Als Junk markierte Nachricht(en)"
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr "Nicht als Junk markierte Nachricht(en)"
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr "Nachricht(en) markiert"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "Wichtige Nachrichten"
msgstr[1] "Wichtige Nachrichten"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Wählen Sie eine Datei aus"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr "Übergeordnetes Postfach"
@@ -2575,7 +2653,7 @@ msgstr "Postfach umbenannt"
msgid "Mailbox created"
msgstr "Postfach erstellt"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2592,12 +2670,12 @@ msgstr "Standardwert der Domain verwenden"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Einstellungen"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr "Filter"
@@ -2642,7 +2720,7 @@ msgid "Migrations"
msgstr "Migrationen"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Information"
@@ -2650,31 +2728,31 @@ msgstr "Information"
msgid "Compose"
msgstr "Komponieren"
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr "Neues Postfach erstellen"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr "Dieses Postfach bearbeiten"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr "Dieses Postfach löschen"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr "Dieses Postfach komprimieren"
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr "Postfach komprimiert"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr "Dieses Postfach löschen?"
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr "Postfach gelöscht"
@@ -2690,23 +2768,28 @@ msgstr "CSV scheint schlecht formatiert zu sein"
msgid "Not a valid email"
msgstr "Keine gültige E-Mail"
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+#, fuzzy
+msgid "Not a valid time"
+msgstr "Keine gültige E-Mail"
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr "Feld ist erforderlich"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr "Mindestlänge beträgt %{ length }"
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr "Muss ein numerischer Wert oder leer sein"
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Passwörter stimmen nicht überein"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr "Ungültige Portnummer"
@@ -2818,7 +2901,7 @@ msgstr "Kontoeinstellungen"
msgid "Two-factor auth"
msgstr "2 Faktor Authentifizierung"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Weiterleiten"
@@ -2986,27 +3069,31 @@ msgstr "Lezte Version"
msgid "Message history"
msgstr "Nachrichtenverlauf"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr "Meine Kalender"
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr "Zugriffsregeln"
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr "Wollen Sie den Kalender wirklich löschen?"
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr "Kalender gelöscht"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Kontakte"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr "Kategorie hinzufügen"
@@ -3045,7 +3132,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr "Nachricht gelöscht"
@@ -3057,36 +3144,41 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr "Antworten"
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr "Allen antworten"
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr "Links aktivieren"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr "Links deaktivieren"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr "Quelle anzeigen"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Nachricht gelöscht"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Nachrichtenverlauf"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr "Als Junk markierte Nachricht"
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr "Nachricht als, kein Junk markiert"
@@ -3094,6 +3186,12 @@ msgstr "Nachricht als, kein Junk markiert"
msgid "Webmail"
msgstr "Webmail"
+#~ msgid "E-mail"
+#~ msgstr "E-Mail"
+
+#~ msgid "Phone"
+#~ msgstr "Telefon"
+
#~ msgid "active"
#~ msgstr "aktiv"
diff --git a/frontend/src/locale/el/app.po b/frontend/src/locale/el/app.po
index ad3156778..36323817b 100644
--- a/frontend/src/locale/el/app.po
+++ b/frontend/src/locale/el/app.po
@@ -61,8 +61,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -111,7 +111,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -131,7 +131,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -229,7 +229,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -259,10 +259,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -281,7 +281,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -292,7 +292,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -438,6 +438,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -445,6 +446,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -533,9 +535,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -593,7 +597,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -641,13 +645,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -863,7 +868,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -954,7 +959,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1234,10 +1239,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1416,7 +1421,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1453,7 +1458,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1823,7 +1828,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1835,15 +1840,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1860,14 +1865,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1887,7 +1892,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1924,8 +1929,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1973,7 +1978,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1994,7 +1999,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2007,19 +2012,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2036,7 +2042,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2069,13 +2075,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2127,23 +2132,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2231,7 +2245,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2305,7 +2319,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2342,14 +2356,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2366,7 +2386,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2374,26 +2394,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2406,56 +2438,94 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2476,7 +2546,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2492,12 +2562,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2542,7 +2612,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2550,31 +2620,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2590,23 +2660,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2715,7 +2789,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2869,27 +2943,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2925,7 +3003,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2937,35 +3015,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/en/app.po b/frontend/src/locale/en/app.po
index dcce899ca..9018b4ef9 100644
--- a/frontend/src/locale/en/app.po
+++ b/frontend/src/locale/en/app.po
@@ -53,8 +53,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -103,7 +103,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -221,7 +221,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -251,10 +251,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -273,7 +273,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -284,7 +284,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -430,6 +430,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -437,6 +438,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -525,9 +527,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -585,7 +589,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -633,13 +637,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -855,7 +860,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -946,7 +951,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1226,10 +1231,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1408,7 +1413,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1445,7 +1450,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1815,7 +1820,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1827,15 +1832,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1852,14 +1857,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1879,7 +1884,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1916,8 +1921,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1965,7 +1970,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1986,7 +1991,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -1999,19 +2004,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2028,7 +2034,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2061,13 +2067,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2119,23 +2124,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2223,7 +2237,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2297,7 +2311,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2334,14 +2348,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2358,7 +2378,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2366,26 +2386,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2398,56 +2430,94 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2468,7 +2538,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2484,12 +2554,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2534,7 +2604,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2542,31 +2612,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2582,23 +2652,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2707,7 +2781,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2861,27 +2935,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2917,7 +2995,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2929,35 +3007,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/es/app.po b/frontend/src/locale/es/app.po
index b324cc8cf..dec2a1231 100644
--- a/frontend/src/locale/es/app.po
+++ b/frontend/src/locale/es/app.po
@@ -63,8 +63,8 @@ msgstr "Cuenta creada"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -114,7 +114,7 @@ msgstr "Activado"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -134,7 +134,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -234,7 +234,7 @@ msgstr "Nombre de usuario"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -265,10 +265,10 @@ msgstr "Nueva cuenta"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Acciones"
@@ -287,7 +287,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -298,7 +298,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -457,6 +457,7 @@ msgstr "General"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
#, fuzzy
msgid "First name"
msgstr "Nombre"
@@ -465,6 +466,7 @@ msgstr "Nombre"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Apellidos"
@@ -556,9 +558,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Cerrar"
@@ -619,7 +623,7 @@ msgstr "Autenticación"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Buscar"
@@ -667,13 +671,14 @@ msgstr "Uso"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -898,7 +903,7 @@ msgstr "Sin definir"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -990,7 +995,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Agregar"
@@ -1273,10 +1278,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1467,7 +1472,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Nueva cuenta"
@@ -1507,7 +1512,7 @@ msgstr "Cuenta creada"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1905,7 +1910,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1917,17 +1922,17 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
#, fuzzy
msgid "Provider"
msgstr "Dominio creado"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
#, fuzzy
msgid "Old account"
msgstr "Nueva cuenta"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
#, fuzzy
msgid "Migration deleted"
msgstr "Fecha de creación"
@@ -1947,14 +1952,14 @@ msgid "Associated domain"
msgstr "Dominios administrados"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
#, fuzzy
msgid "Associated domains"
msgstr "Dominios administrados"
@@ -1979,7 +1984,7 @@ msgstr "Dominios administrados"
msgid "No associated domains"
msgstr "Dominios administrados"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
#, fuzzy
msgid "Provider updated"
msgstr "Perfil actualizado"
@@ -2019,8 +2024,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -2073,7 +2078,7 @@ msgid "Edit calendar"
msgstr "Nuevo alias"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
#, fuzzy
msgid "New calendar"
msgstr "Nuevo alias"
@@ -2097,7 +2102,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2111,21 +2116,22 @@ msgid "Edit event"
msgstr "Nueva cuenta"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
#, fuzzy
msgid "New event"
msgstr "Nueva cuenta"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
#, fuzzy
msgid "Event updated"
msgstr "Cuenta actualizada"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Cuenta actualizada"
@@ -2144,7 +2150,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
#, fuzzy
msgid "Send"
msgstr "Nueva cuenta"
@@ -2183,13 +2189,12 @@ msgid "Category deleted"
msgstr "Fecha de creación"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Categorías"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
#, fuzzy
msgid "Display name"
msgstr "Nombre a mostrar"
@@ -2246,23 +2251,35 @@ msgstr "Editar contacto"
msgid "New contact"
msgstr "Nuevo contacto"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Teléfono"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Dirección de email"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Número de teléfono"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Contactos"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2357,7 +2374,7 @@ msgstr ""
msgid "Notifications"
msgstr "Última fecha de modificación"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Salir"
@@ -2431,7 +2448,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Importar"
@@ -2470,14 +2487,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Día"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Semana"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Mes"
@@ -2494,7 +2517,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2502,28 +2525,41 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
#, fuzzy
msgid "Provide one or more addresses"
msgstr "Direcciónes de remitente"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "Correo-e"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
#, fuzzy
msgid "Email sent"
msgstr "Correo-e"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
#, fuzzy
msgid "Add to contacts"
@@ -2538,60 +2574,100 @@ msgstr "Editar contacto"
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
#, fuzzy
msgid "Empty mailbox"
msgstr "Con una mailbox"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Cuenta creada"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
#, fuzzy
msgid "Message(s) deleted"
msgstr "Uso"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
#, fuzzy
msgid "Message(s) flagged"
msgstr "Uso"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "Importar dominios"
msgstr[1] "Importar dominios"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Fecha de creación"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
#, fuzzy
msgid "Parent mailbox"
@@ -2617,7 +2693,7 @@ msgstr "Mailboxes"
msgid "Mailbox created"
msgstr "Dominio creado"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2634,12 +2710,12 @@ msgstr "Usar el valor por defecto del dominio"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Configuración"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2686,7 +2762,7 @@ msgid "Migrations"
msgstr "Confirmación"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Información"
@@ -2694,35 +2770,35 @@ msgstr "Información"
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
#, fuzzy
msgid "Create a new mailbox"
msgstr "Con una mailbox"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
#, fuzzy
msgid "Edit this mailbox"
msgstr "Con una mailbox"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
#, fuzzy
msgid "Delete this mailbox"
msgstr "Con una mailbox"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
#, fuzzy
msgid "Mailbox compressed"
msgstr "Mailboxes"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
#, fuzzy
msgid "Mailbox deleted"
msgstr "Fecha de creación"
@@ -2739,23 +2815,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Las contraseñas no coinciden"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2875,7 +2955,7 @@ msgstr "Configuración"
msgid "Two-factor auth"
msgstr "Autenticación"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Siguiente"
@@ -3039,28 +3119,32 @@ msgstr "Versión instalada"
msgid "Message history"
msgstr "Uso"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
#, fuzzy
msgid "Calendar deleted"
msgstr "Fecha de creación"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Contactos"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
#, fuzzy
msgid "Add a category"
msgstr "Acciones"
@@ -3100,7 +3184,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
#, fuzzy
msgid "Message deleted"
msgstr "Uso"
@@ -3113,39 +3197,44 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
#, fuzzy
msgid "Enable links"
msgstr "Activado"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
#, fuzzy
msgid "Disable links"
msgstr "Deshabilitado"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
#, fuzzy
msgid "Display source"
msgstr "Nombre a mostrar"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Uso"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Uso"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
@@ -3154,6 +3243,9 @@ msgstr ""
msgid "Webmail"
msgstr "Correo-e"
+#~ msgid "Phone"
+#~ msgstr "Teléfono"
+
#, fuzzy
#~ msgid "inactive"
#~ msgstr "Acciones"
diff --git a/frontend/src/locale/fi/app.po b/frontend/src/locale/fi/app.po
index 18898a187..c0ae90023 100644
--- a/frontend/src/locale/fi/app.po
+++ b/frontend/src/locale/fi/app.po
@@ -59,8 +59,8 @@ msgstr "API-tunniste luotu"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr "Varoitus"
@@ -109,7 +109,7 @@ msgstr "Käytössä"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -129,7 +129,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "Lähde"
@@ -232,7 +232,7 @@ msgstr "Käyttäjätunnus"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -264,10 +264,10 @@ msgstr "Uusi tili"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Toiminnot"
@@ -287,7 +287,7 @@ msgstr "Haluatko todella poistaa aliaksen %{ alias }?"
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Ei"
@@ -298,7 +298,7 @@ msgstr "Ei"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Kyllä"
@@ -459,6 +459,7 @@ msgstr "Yleiset asetukset"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr "Etunimi"
@@ -466,6 +467,7 @@ msgstr "Etunimi"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Sukunimi"
@@ -560,9 +562,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Sulje"
@@ -629,7 +633,7 @@ msgstr "Kaksivaiheinent tunnistus"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Hae"
@@ -679,13 +683,14 @@ msgstr "Viesti"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr "Poista"
@@ -917,7 +922,7 @@ msgstr "Ei luotu"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -1014,7 +1019,7 @@ msgstr "Valitse verkkotunnus"
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Lisää"
@@ -1304,10 +1309,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr "Muokkaa"
@@ -1504,7 +1509,7 @@ msgid "Create standard aliases for the domain."
msgstr "Luo verkkotunnuksen tavanomaiset aliakset."
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Uusi tili"
@@ -1543,7 +1548,7 @@ msgstr "Tili luotu"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1955,7 +1960,7 @@ msgstr "Automaattinen asetusten määrittäminen"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
#, fuzzy
msgid "Secured"
msgstr "Turvallisuus"
@@ -1968,17 +1973,17 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
#, fuzzy
msgid "Provider"
msgstr "Etunimi"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
#, fuzzy
msgid "Old account"
msgstr "Muokkaa tiliä"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
#, fuzzy
msgid "Migration deleted"
msgstr "Luontipäivä"
@@ -1998,14 +2003,14 @@ msgid "Associated domain"
msgstr "Hallinnoidut verkkotunnukset"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
#, fuzzy
msgid "Associated domains"
msgstr "Hallinnoidut verkkotunnukset"
@@ -2030,7 +2035,7 @@ msgstr "Hallinnoidut verkkotunnukset"
msgid "No associated domains"
msgstr "Hallinnoidut verkkotunnukset"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
#, fuzzy
msgid "Provider updated"
msgstr "Profiili päivitetty"
@@ -2070,8 +2075,8 @@ msgstr "Jonon ID"
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "Vastaanottaja"
@@ -2122,7 +2127,7 @@ msgid "Edit calendar"
msgstr "Muokkaa aliasta"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
#, fuzzy
msgid "New calendar"
msgstr "Uusi alias"
@@ -2146,7 +2151,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2160,21 +2165,22 @@ msgid "Edit event"
msgstr "Muokkaa tiliä"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
#, fuzzy
msgid "New event"
msgstr "Uusi tili"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
#, fuzzy
msgid "Event updated"
msgstr "Tili päivitetty"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Tili päivitetty"
@@ -2194,7 +2200,7 @@ msgid "Select an ICS file"
msgstr "Valitse tiedosto"
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
#, fuzzy
msgid "Send"
msgstr "Valitse tili"
@@ -2232,13 +2238,12 @@ msgid "Category deleted"
msgstr "Verkkotunnuksen alias poistettu"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
#, fuzzy
msgid "Display name"
msgstr "Etunimi"
@@ -2296,24 +2301,35 @@ msgstr "Muokkaa tiliä"
msgid "New contact"
msgstr "Uusi tili"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-#, fuzzy
-msgid "E-mail"
-msgstr "Sähköposti"
-
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Sähköpostiosoite"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Puhelinnumero"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Järjestelmänvalvoja poistettu"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2410,7 +2426,7 @@ msgstr ""
msgid "Notifications"
msgstr "Tunniste"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Kirjaudu ulos"
@@ -2486,7 +2502,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr "Älä käsittele päällekkäisiä objekteja virheinä"
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Tuonti"
@@ -2525,14 +2541,20 @@ msgid "Relative time ranges"
msgstr "Suhteelliset aikavälialueet"
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Päivä"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Viikko"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Kuukausi"
@@ -2549,7 +2571,7 @@ msgid "no"
msgstr "ei"
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2557,28 +2579,41 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
#, fuzzy
msgid "Provide one or more addresses"
msgstr "Lähettäjän osoitteet"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "Sähköposti"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
#, fuzzy
msgid "Email sent"
msgstr "Sähköposti"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
#, fuzzy
msgid "Add to contacts"
@@ -2593,60 +2628,101 @@ msgstr "Muokkaa tiliä"
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
#, fuzzy
msgid "Empty mailbox"
msgstr "Postilaatikolla"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+#, fuzzy
+msgid "Sending failure"
+msgstr "Lähetysraja"
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Tili luotu"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
#, fuzzy
msgid "Message(s) deleted"
msgstr "Viestien historia"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
#, fuzzy
msgid "Message(s) flagged"
msgstr "Viestien historia"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "Tuo verkkotunnuksia"
msgstr[1] "Tuo verkkotunnuksia"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Valitse tiedosto"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
#, fuzzy
msgid "Parent mailbox"
@@ -2672,7 +2748,7 @@ msgstr "Postilaatikot"
msgid "Mailbox created"
msgstr "Verkkotunnus luotu"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2689,12 +2765,12 @@ msgstr "Verkkotunnus päivitetty"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Asetukset"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2742,7 +2818,7 @@ msgid "Migrations"
msgstr "Rajoitukset"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
#, fuzzy
msgid "Information"
msgstr "Tiedot"
@@ -2751,37 +2827,37 @@ msgstr "Tiedot"
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
#, fuzzy
msgid "Create a new mailbox"
msgstr "Postilaatikolla"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
#, fuzzy
msgid "Edit this mailbox"
msgstr "Postilaatikolla"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
#, fuzzy
msgid "Delete this mailbox"
msgstr "Postilaatikolla"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
#, fuzzy
msgid "Compress this mailbox"
msgstr "Postilaatikolla"
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
#, fuzzy
msgid "Mailbox compressed"
msgstr "Postilaatikot"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
#, fuzzy
msgid "Delete this mailbox?"
msgstr "Postilaatikolla"
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
#, fuzzy
msgid "Mailbox deleted"
msgstr "Luontipäivä"
@@ -2798,24 +2874,28 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
#, fuzzy
msgid "Field is required"
msgstr "Tämä kenttä on pakollinen"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Salasanat eivät täsmää"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
#, fuzzy
msgid "Invalid port number"
msgstr "Virheellinen salasana"
@@ -2939,7 +3019,7 @@ msgstr "Päivitä asetukset"
msgid "Two-factor auth"
msgstr "Kaksivaiheinent tunnistus"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Välitä"
@@ -3101,29 +3181,33 @@ msgstr "Asennettu versio"
msgid "Message history"
msgstr "Viestien historia"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
#, fuzzy
msgid "Do you really want to delete this calendar?"
msgstr "Haluatko todella poistaa aliaksen %{ alias }?"
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
#, fuzzy
msgid "Calendar deleted"
msgstr "Verkkotunnuksen alias poistettu"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
#, fuzzy
msgid "Add a category"
msgstr "Toiminnot"
@@ -3163,7 +3247,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
#, fuzzy
msgid "Message deleted"
msgstr "Viestien historia"
@@ -3176,39 +3260,44 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
#, fuzzy
msgid "Enable links"
msgstr "Käytössä"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
#, fuzzy
msgid "Disable links"
msgstr "Pois käytöstä"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
#, fuzzy
msgid "Display source"
msgstr "Etunimi"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Viestien historia"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Viestien historia"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
@@ -3217,6 +3306,10 @@ msgstr ""
msgid "Webmail"
msgstr "Sähköposti"
+#, fuzzy
+#~ msgid "E-mail"
+#~ msgstr "Sähköposti"
+
#, fuzzy
#~ msgid "inactive"
#~ msgstr "Toiminnot"
diff --git a/frontend/src/locale/fr/app.po b/frontend/src/locale/fr/app.po
index 781a5ef62..91f404683 100644
--- a/frontend/src/locale/fr/app.po
+++ b/frontend/src/locale/fr/app.po
@@ -1,19 +1,20 @@
-#
+#
# Translators:
# Adrien spitfireap, 2025
# Antoine Nguyen , 2025
-#
+#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2024-08-01 12:26+0000\n"
"Last-Translator: Antoine Nguyen , 2025\n"
"Language-Team: French (https://app.transifex.com/tonio/teams/13749/fr/)\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
+"1000000 == 0 ? 1 : 2;\n"
#: src/components/account/APISetupForm.vue:4
msgid "Your API token has not been generated yet."
@@ -59,8 +60,8 @@ msgstr "Jeton API créé"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr "Avertissement"
@@ -109,7 +110,7 @@ msgstr "Activé"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr "Sujet"
@@ -120,19 +121,19 @@ msgstr "Contenu"
#: src/components/account/AutoReplyForm.vue:24
msgid ""
"The content of your answer. You can use the following variables, which will "
-"be automatically replaced by the appropriate value: %(name)s, %(fromdate)s, "
-"%(untildate)s"
+"be automatically replaced by the appropriate value: %(name)s, %(fromdate)s, %"
+"(untildate)s"
msgstr ""
"Le contenu de votre réponse. Vous pouvez utiliser les variables suivantes, "
-"qui seront automatiquement remplacées par les valeurs appropriées : "
-"%(name)s, %(fromdate)s, %(untildate)s"
+"qui seront automatiquement remplacées par les valeurs appropriées : %"
+"(name)s, %(fromdate)s, %(untildate)s"
#: src/components/account/AutoReplyForm.vue:36
#: src/components/admin/logs/MessageList.vue:50
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "De"
@@ -237,7 +238,7 @@ msgstr "nom"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -267,10 +268,10 @@ msgstr "Nombre d'utilisations"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Actions"
@@ -289,7 +290,7 @@ msgstr "Voulez vous vraiment supprimer ce périphérique Webauthn ?"
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Non"
@@ -300,7 +301,7 @@ msgstr "Non"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Oui"
@@ -448,6 +449,7 @@ msgstr "Paramètres généraux "
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr "Prénom"
@@ -455,6 +457,7 @@ msgstr "Prénom"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Nom de famille"
@@ -548,9 +551,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Fermer"
@@ -564,11 +569,12 @@ msgstr "Cliquer ici pour copier la clé"
#: src/components/account/TotpAuthForm.vue:34
msgid ""
-"Install a soft token authenticator like FreeOTP or Google Authenticator from"
-" your application repository and use that app to scan this QR code."
+"Install a soft token authenticator like FreeOTP or Google Authenticator from "
+"your application repository and use that app to scan this QR code."
msgstr ""
"Installez un logiciel d'authentification de jeton comme FreeOTP ou google\n"
-" Authentification depuis votre magasin d'applications et utilisez\n"
+" Authentification depuis votre magasin d'applications et "
+"utilisez\n"
" cette application pour scanner ce QR code."
#: src/components/account/TotpAuthForm.vue:39
@@ -617,7 +623,7 @@ msgstr "Enregistrer l'authentificateur"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Chercher"
@@ -665,13 +671,14 @@ msgstr "Message"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr "Supprimer"
@@ -767,8 +774,8 @@ msgid ""
"If you configured it recently, please wait for the first report to be "
"received and processed."
msgstr ""
-"Si vous l'avez récemment configuré, veuillez attendre que le premier rapport"
-" soit reçu et traité. "
+"Si vous l'avez récemment configuré, veuillez attendre que le premier rapport "
+"soit reçu et traité. "
#: src/components/admin/dmarc/DmarcAligmentChart.vue:127
#: src/components/admin/dmarc/DmarcAligmentChart.vue:143
@@ -801,8 +808,7 @@ msgstr "Synthèse DNSBL pour"
#: src/components/admin/domains/DNSBLSummary.vue:10
msgid ""
-"IP address %{ address } is currently listed by the following DNSBL "
-"providers:"
+"IP address %{ address } is currently listed by the following DNSBL providers:"
msgstr ""
"L'adresse IP %{ address } est actuellement listée par les fournisseurs de "
"DNSBL suivants :"
@@ -892,7 +898,7 @@ msgstr "Non générée"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -922,12 +928,11 @@ msgid ""
"DKIM key does not seem to be generated yet or has failed. Do you want to "
"requeue the job?"
msgstr ""
-"La génération de la clé DKIM ne semble pas avoir eu lieu ou a échoué. Voulez"
-" vous replanifier cette action ?"
+"La génération de la clé DKIM ne semble pas avoir eu lieu ou a échoué. Voulez "
+"vous replanifier cette action ?"
#: src/components/admin/domains/DNSDetail.vue:259
-msgid ""
-"DKIM keys already exist for this domain. Do you want to overwrite them?"
+msgid "DKIM keys already exist for this domain. Do you want to overwrite them?"
msgstr "Des clés DKIM existent déjà pour ce domaine. Voulez-vous les écraser?"
#: src/components/admin/domains/DNSStatusChip.vue:18
@@ -988,7 +993,7 @@ msgstr "Choisissez un domaine"
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Ajouter"
@@ -1270,10 +1275,10 @@ msgstr "Supprimer le domaine"
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr "Modifier"
@@ -1459,7 +1464,7 @@ msgid "Create standard aliases for the domain."
msgstr "Créer des aliases standard pour le domaine"
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Nouveau compte"
@@ -1496,7 +1501,7 @@ msgstr "Compte créé"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1658,11 +1663,11 @@ msgstr "Commencer à saisir un nom ici..."
#: src/components/admin/identities/form_steps/AccountAliasForm.vue:8
#: src/components/admin/identities/form_steps/AliasRecipientForm.vue:8
msgid ""
-"Alias(es) of this mailbox. To create a catchall alias, just enter the domain"
-" name (@domain.tld)."
+"Alias(es) of this mailbox. To create a catchall alias, just enter the domain "
+"name (@domain.tld)."
msgstr ""
-"Alias(s) de cette boîte aux lettres. Pour créer un alias fourre-tout, entrer"
-" uniquement le nom du domaine (@domain.tld)."
+"Alias(s) de cette boîte aux lettres. Pour créer un alias fourre-tout, entrer "
+"uniquement le nom du domaine (@domain.tld)."
#: src/components/admin/identities/form_steps/AccountAliasForm.vue:50
msgid "Alias already added"
@@ -1687,9 +1692,9 @@ msgstr "Ex: 10MB. Laisser vide pour aucune limite"
#: src/components/admin/identities/form_steps/AccountMailboxForm.vue:15
msgid ""
-"Quota for this mailbox, can be expressed in KB, MB (default) or GB. Define a"
-" custom value or use domain's default one. Leave empty to define an "
-"unlimited value (not allowed for domain administrators)."
+"Quota for this mailbox, can be expressed in KB, MB (default) or GB. Define a "
+"custom value or use domain's default one. Leave empty to define an unlimited "
+"value (not allowed for domain administrators)."
msgstr ""
"Quota pour cette boite. Peut être exprimé en Ko, Mo (défaut) ou Go. Définir "
"une valeur spécifique ou utiliser la valeur par défaut du domaine. Laisser "
@@ -1744,8 +1749,8 @@ msgid ""
"A user with no privileges but with a mailbox. He will be allowed to use all "
"end-user features: webmail, calendar, contacts, filters."
msgstr ""
-"Un utilisateur sans privilèges mais ayant une boîte mail. Il sera autorisé à"
-" utiliser toutes les fonctionnalités de l'utilisateur final : webmail, "
+"Un utilisateur sans privilèges mais ayant une boîte mail. Il sera autorisé à "
+"utiliser toutes les fonctionnalités de l'utilisateur final : webmail, "
"calendrier, contacts, filtres."
#: src/components/admin/identities/form_steps/AccountRoleForm.vue:91
@@ -1771,8 +1776,8 @@ msgid ""
"administrator, plus the possibility to create domains and to assign "
"resources."
msgstr ""
-"Un utilisateur intermédiaire qui a les mêmes privilèges qu'un administrateur"
-" de domaine, et la possibilité de créer des domaines et d'affecter des "
+"Un utilisateur intermédiaire qui a les mêmes privilèges qu'un administrateur "
+"de domaine, et la possibilité de créer des domaines et d'affecter des "
"ressources."
#: src/components/admin/identities/form_steps/AccountRoleForm.vue:109
@@ -1784,8 +1789,8 @@ msgid ""
"A user with all privileges, can do anything. By default, such a user does "
"not have a mailbox so he can't access end-user features."
msgstr ""
-"Un utilisateur ayant tous les privilège, peut tout faire. Par défaut, il n'a"
-" pas de boîte mail et ne peut donc pas accéder aux fonctionnalités d'un "
+"Un utilisateur ayant tous les privilège, peut tout faire. Par défaut, il n'a "
+"pas de boîte mail et ne peut donc pas accéder aux fonctionnalités d'un "
"utilisateur final."
#: src/components/admin/identities/form_steps/AliasGeneralForm.vue:10
@@ -1887,29 +1892,28 @@ msgstr "Port IMAP"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr "Sécurisé"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:30
msgid "Is the IMAP connection secured using SSL/TLS or StartTLS"
msgstr ""
-"La connexion IMAP est-elle sécurisée via l'utilisation de SSL/TLS ou "
-"StartTLS"
+"La connexion IMAP est-elle sécurisée via l'utilisation de SSL/TLS ou StartTLS"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:36
msgid "Check connection:"
msgstr "Vérifier la connexion :"
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr "Fournisseur"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr "Ancien compte"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr "Migration supprimée"
@@ -1926,14 +1930,14 @@ msgid "Associated domain"
msgstr "Domaine associé"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr "Port"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr "Domaines associés"
@@ -1953,7 +1957,7 @@ msgstr "Nombre de domaines associés :"
msgid "No associated domains"
msgstr "Aucun domaine associé"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr "Fournisseur mis à jour"
@@ -1991,8 +1995,8 @@ msgstr "ID de file"
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "A"
@@ -2045,7 +2049,7 @@ msgid "Edit calendar"
msgstr "Modifier le calendrier"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr "Nouveau calendrier"
@@ -2066,7 +2070,7 @@ msgid "Title"
msgstr "Titre"
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr "Calendrier"
@@ -2079,19 +2083,20 @@ msgid "Edit event"
msgstr "Modifier l'évènement"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr "Nouvel évènement"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr "Evènement ajouté"
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr "Evènement mis à jour"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr "Evènement supprimé"
@@ -2109,7 +2114,7 @@ msgid "Select an ICS file"
msgstr "Sélectionner un fichier ICS"
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr "Envoyer"
@@ -2126,8 +2131,8 @@ msgstr "Information du carnet d'adresse"
#: src/components/contacts/AddressBookInfo.vue:9
msgid ""
-"To access this address book from the outside (such as Mozilla Thunderbird or"
-" your smartphone), use the following URL:"
+"To access this address book from the outside (such as Mozilla Thunderbird or "
+"your smartphone), use the following URL:"
msgstr ""
"Pour accéder à ce carnet d'adresse depuis l'extérieur (comme Mozilla "
"Thunderbird ou votre smartphone), utilisez l'URL suivante :"
@@ -2145,13 +2150,12 @@ msgid "Category deleted"
msgstr "Catégorie supprimée"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Catégories"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr "Nom affiché"
@@ -2203,23 +2207,36 @@ msgstr "Modifier le contact"
msgid "New contact"
msgstr "Nouveau contact"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr "Afficher les informations du carnet d'adresse"
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr "Synchroniser les contacts avec le carnet d'adresse"
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
-msgstr "Courriel"
+#: src/components/contacts/ContactList.vue:48
+#, fuzzy
+msgid "Synchronize"
+msgstr "Synchronisation démarée"
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Téléphone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr "Afficher les informations du carnet d'adresse"
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Adresse email"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Numéro de téléphone"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Administrateur supprimé"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr "Synchronisation démarée"
@@ -2307,7 +2324,7 @@ msgstr "La sélection est en cours de traitement..."
msgid "Notifications"
msgstr "Notifications"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Déconnexion"
@@ -2362,8 +2379,8 @@ msgid ""
"The first element of each line is mandatory and must be equal to one of the "
"previous values."
msgstr ""
-"Le premier élément de chaque ligne est obligatoire et doit être égal à l'une"
-" des valeurs précédentes."
+"Le premier élément de chaque ligne est obligatoire et doit être égal à l'une "
+"des valeurs précédentes."
#: src/components/tools/ImportForm.vue:20
msgid "You can use a different character as separator."
@@ -2386,7 +2403,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr "Ne pas traiter les objets dupliqués comme des erreurs"
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Importer"
@@ -2423,14 +2440,20 @@ msgid "Relative time ranges"
msgstr "Intervalles des temps relatifs"
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Jour"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Semaine"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Mois"
@@ -2447,7 +2470,7 @@ msgid "no"
msgstr "non"
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr "Pièce jointes"
@@ -2455,26 +2478,39 @@ msgstr "Pièce jointes"
msgid "Attach"
msgstr "Joindre"
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
msgid "Provide one or more addresses"
msgstr "Fournir une ou plusieurs adresses"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr "Cc"
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr "Cci"
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "Message envoyé"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr "Message envoyé"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr "Ajouter aux contacts"
@@ -2487,57 +2523,98 @@ msgstr "Mettre à jour le contact"
msgid "Contact added to address book"
msgstr "Contact ajouté au carnet d'adresse"
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr "Marqué comme lu"
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr "Marquer comme non lu"
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr "Marquer comme suivi"
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr "Marqué comme non suivi"
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr "Vider la boite aux lettres"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr "le"
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr "Aucun message dans cette boite aux lettres"
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+#, fuzzy
+msgid "Sending failure"
+msgstr "Envoi interdit"
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Compte mis à jour"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr "Message(s) supprimé(s)"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr "Message(s) marqués comme pourriel"
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr "Message(s) marqué(s) comme légitime(s)"
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr "Message(s) marqué(s)"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "%{count} message"
msgstr[1] "%{count} messages"
msgstr[2] "%{count} messages"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Sélectionner un fichier"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr "Boite aux lettres parent"
@@ -2558,7 +2635,7 @@ msgstr "Boite aux lettres renommée"
msgid "Mailbox created"
msgstr "Boite aux lettres créée"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr "Déplacement de la sélection..."
@@ -2574,12 +2651,12 @@ msgstr "Base du domaine"
msgid "User's database"
msgstr "Base de l'utilisateur"
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Paramètres"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr "Filtres"
@@ -2624,7 +2701,7 @@ msgid "Migrations"
msgstr "Migrations"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Information"
@@ -2632,31 +2709,31 @@ msgstr "Information"
msgid "Compose"
msgstr "Ecrire"
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr "Créer une nouvelle boîte aux lettres"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr "Modifier cette boite aux lettres"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr "Supprimer cette boite aux lettres"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr "Compresser cette boîte aux lettres"
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr "Boite aux lettres compressées"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr "Supprimer cette boite aux lettres ?"
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr "Boite aux lettres supprimée"
@@ -2672,23 +2749,28 @@ msgstr "Le fichier CSV semble être mal formaté"
msgid "Not a valid email"
msgstr "Ce n'est pas un email correct"
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+#, fuzzy
+msgid "Not a valid time"
+msgstr "Ce n'est pas un email correct"
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr "Ce champ est requis"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr "La taille minimale est %{ length }"
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr "Valeur numérique requise, ou pas de valeur"
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Les mots de passe diffèrent"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr "Numéro de port incorrect"
@@ -2797,7 +2879,7 @@ msgstr "Paramètres du compte"
msgid "Two-factor auth"
msgstr "Authentification à deux facteurs"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Transfert"
@@ -2867,8 +2949,8 @@ msgstr "Chiffrer les mots de passe"
#: src/views/admin/identities/IdentitiesView.vue:95
msgid "Check this option if passwords contained in your file are not crypted"
msgstr ""
-"Cochez cette option si les mots de passe contenus dans votre fichier ne sont"
-" pas chiffrés"
+"Cochez cette option si les mots de passe contenus dans votre fichier ne sont "
+"pas chiffrés"
#: src/views/admin/imap_migration/ProviderEditView.vue:3
msgid "Edit provider"
@@ -2884,9 +2966,9 @@ msgstr "Messages importants"
#: src/views/admin/InformationView.vue:22
msgid ""
-"The password scheme you are using has been deprecated and will be removed in"
-" the next minor version. The procedure to upgrade to a stronger scheme is as"
-" follows:"
+"The password scheme you are using has been deprecated and will be removed in "
+"the next minor version. The procedure to upgrade to a stronger scheme is as "
+"follows:"
msgstr ""
"La méthode de chiffrement de mot de passe que vous utilisez a été rendue "
"obsolète et sera retirée dans la prochaine version mineure. La procédure de "
@@ -2905,8 +2987,8 @@ msgstr ""
msgid ""
"Make sure Update password scheme at login option is enabled"
msgstr ""
-"Assurez vous que l'option Mettre à jour la méthode de chiffrement du"
-" mot de passe à la connexion est activée"
+"Assurez vous que l'option Mettre à jour la méthode de chiffrement du "
+"mot de passe à la connexion est activée"
#: src/views/admin/InformationView.vue:51
msgid "Save your changes"
@@ -2941,9 +3023,9 @@ msgid ""
"Please note that you will see this message until ALL user "
"passwords have been converted using the new scheme."
msgstr ""
-"Veuillez noter que vous verrez ce message jusqu'à ce que "
-"TOUS les mots de passe de vos utilisateurs aient été "
-"convertis en utilisant la nouvelle méthode."
+"Veuillez noter que vous verrez ce message jusqu'à ce que TOUS"
+"strong> les mots de passe de vos utilisateurs aient été convertis en "
+"utilisant la nouvelle méthode."
#: src/views/admin/InformationView.vue:92
msgid "Installed components"
@@ -2969,27 +3051,31 @@ msgstr "Dernière version"
msgid "Message history"
msgstr "Historique des messages"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr "Mes calendriers"
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr "Règles d'accès"
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr "Voulez-vous vraiment supprimer ce calendrier ?"
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr "Calendrier supprimé"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Contacts"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr "Ajouter une catégorie"
@@ -3025,8 +3111,7 @@ msgstr "Voir l'intégralité des entêtes"
msgid "Hide full headers"
msgstr "Cacher l'intégralité des entêtes"
-#: src/views/quarantine/MessageView.vue:201
-#: src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr "Marquer comme supprimé"
@@ -3038,38 +3123,49 @@ msgstr "Quarantaine"
msgid "release requests"
msgstr "requêtes de libération"
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr "Répondre"
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr "Répondre à tous"
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr "Activer les liens"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr "Desactiver les liens"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr "Afficher la source"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Marquer comme supprimé"
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr "Source du message"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr "Message marqué comme pourriel"
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr "Message marqué comme légitime"
#: src/views/webmail/MailboxView.vue:4
msgid "Webmail"
msgstr "Webmail"
+
+#~ msgid "E-mail"
+#~ msgstr "Courriel"
+
+#~ msgid "Phone"
+#~ msgstr "Téléphone"
diff --git a/frontend/src/locale/it/app.po b/frontend/src/locale/it/app.po
index f73fe6d54..2d70a811f 100644
--- a/frontend/src/locale/it/app.po
+++ b/frontend/src/locale/it/app.po
@@ -63,8 +63,8 @@ msgstr "Account creato"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -114,7 +114,7 @@ msgstr "Abilitato"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -134,7 +134,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -234,7 +234,7 @@ msgstr "Nome utente"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -265,10 +265,10 @@ msgstr "Nuovo account"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Azioni"
@@ -287,7 +287,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -298,7 +298,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -459,6 +459,7 @@ msgstr "Generale"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
#, fuzzy
msgid "First name"
msgstr "Nome"
@@ -467,6 +468,7 @@ msgstr "Nome"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Cognome"
@@ -558,9 +560,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Chiudi"
@@ -621,7 +625,7 @@ msgstr "Autenticazione"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Cerca"
@@ -669,13 +673,14 @@ msgstr "Utilizzo"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -902,7 +907,7 @@ msgstr "Non generata"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -994,7 +999,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Aggiungi"
@@ -1278,10 +1283,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1475,7 +1480,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Nuovo account"
@@ -1515,7 +1520,7 @@ msgstr "Account creato"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1914,7 +1919,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1926,17 +1931,17 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
#, fuzzy
msgid "Provider"
msgstr "Dominio creato"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
#, fuzzy
msgid "Old account"
msgstr "Nuovo account"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
#, fuzzy
msgid "Migration deleted"
msgstr "Data di creazione"
@@ -1956,14 +1961,14 @@ msgid "Associated domain"
msgstr "Domini amministrati"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
#, fuzzy
msgid "Associated domains"
msgstr "Domini amministrati"
@@ -1988,7 +1993,7 @@ msgstr "Domini amministrati"
msgid "No associated domains"
msgstr "Domini amministrati"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
#, fuzzy
msgid "Provider updated"
msgstr "Profilo aggiornato"
@@ -2028,8 +2033,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -2080,7 +2085,7 @@ msgid "Edit calendar"
msgstr "Nuovo alias"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
#, fuzzy
msgid "New calendar"
msgstr "Nuovo alias"
@@ -2104,7 +2109,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2118,21 +2123,22 @@ msgid "Edit event"
msgstr "Nuovo account"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
#, fuzzy
msgid "New event"
msgstr "Nuovo account"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
#, fuzzy
msgid "Event updated"
msgstr "Account aggiornato"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Account aggiornato"
@@ -2151,7 +2157,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
#, fuzzy
msgid "Send"
msgstr "Nuovo account"
@@ -2190,13 +2196,12 @@ msgid "Category deleted"
msgstr "Data di creazione"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Categorie"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
#, fuzzy
msgid "Display name"
msgstr "Nome visualizzato"
@@ -2253,23 +2258,35 @@ msgstr "Modifica contatto"
msgid "New contact"
msgstr "Nuovo contatto"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Telefono"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Indirizzo email"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Numero di telefono"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Contatti"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2364,7 +2381,7 @@ msgstr ""
msgid "Notifications"
msgstr "Data dell'ultima modifica"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Esci"
@@ -2438,7 +2455,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Importa"
@@ -2478,14 +2495,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Giorno"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Settimana"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Mese"
@@ -2502,7 +2525,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2510,28 +2533,41 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
#, fuzzy
msgid "Provide one or more addresses"
msgstr "Indirizzi mittenti"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "Email"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
#, fuzzy
msgid "Email sent"
msgstr "Email"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
#, fuzzy
msgid "Add to contacts"
@@ -2546,60 +2582,100 @@ msgstr "Modifica contatto"
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
#, fuzzy
msgid "Empty mailbox"
msgstr "Con una casella di posta"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Account creato"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
#, fuzzy
msgid "Message(s) deleted"
msgstr "Utilizzo"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
#, fuzzy
msgid "Message(s) flagged"
msgstr "Utilizzo"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "Importa domini"
msgstr[1] "Importa domini"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Data di creazione"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
#, fuzzy
msgid "Parent mailbox"
@@ -2625,7 +2701,7 @@ msgstr "Caselle di posta"
msgid "Mailbox created"
msgstr "Dominio creato"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2642,12 +2718,12 @@ msgstr "Usa il valore predefinito"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Impostazioni"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2694,7 +2770,7 @@ msgid "Migrations"
msgstr "Conferma"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Informazioni"
@@ -2702,35 +2778,35 @@ msgstr "Informazioni"
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
#, fuzzy
msgid "Create a new mailbox"
msgstr "Con una casella di posta"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
#, fuzzy
msgid "Edit this mailbox"
msgstr "Con una casella di posta"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
#, fuzzy
msgid "Delete this mailbox"
msgstr "Con una casella di posta"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
#, fuzzy
msgid "Mailbox compressed"
msgstr "Caselle di posta"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
#, fuzzy
msgid "Mailbox deleted"
msgstr "Data di creazione"
@@ -2747,24 +2823,28 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
#, fuzzy
msgid "Field is required"
msgstr "Questo campo è obbligatorio"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Le password non corrispondono"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2884,7 +2964,7 @@ msgstr "Impostazioni"
msgid "Two-factor auth"
msgstr "Autenticazione"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Inoltra"
@@ -3047,28 +3127,32 @@ msgstr "Versione installata"
msgid "Message history"
msgstr "Utilizzo"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
#, fuzzy
msgid "Calendar deleted"
msgstr "Data di creazione"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Contatti"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
#, fuzzy
msgid "Add a category"
msgstr "Azioni"
@@ -3108,7 +3192,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
#, fuzzy
msgid "Message deleted"
msgstr "Utilizzo"
@@ -3121,39 +3205,44 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
#, fuzzy
msgid "Enable links"
msgstr "Abilitato"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
#, fuzzy
msgid "Disable links"
msgstr "Disabilitato"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
#, fuzzy
msgid "Display source"
msgstr "Nome visualizzato"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Utilizzo"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Utilizzo"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
@@ -3162,6 +3251,9 @@ msgstr ""
msgid "Webmail"
msgstr "Email"
+#~ msgid "Phone"
+#~ msgstr "Telefono"
+
#, fuzzy
#~ msgid "inactive"
#~ msgstr "Azioni"
diff --git a/frontend/src/locale/ja/app.po b/frontend/src/locale/ja/app.po
index 501218245..27dd7fc7a 100644
--- a/frontend/src/locale/ja/app.po
+++ b/frontend/src/locale/ja/app.po
@@ -61,8 +61,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -111,7 +111,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -131,7 +131,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -229,7 +229,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -259,10 +259,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -281,7 +281,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -292,7 +292,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -438,6 +438,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -445,6 +446,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -533,9 +535,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -593,7 +597,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -641,13 +645,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -863,7 +868,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -954,7 +959,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1234,10 +1239,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1416,7 +1421,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1453,7 +1458,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1823,7 +1828,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1835,15 +1840,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1860,14 +1865,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1887,7 +1892,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1923,8 +1928,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1972,7 +1977,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1993,7 +1998,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2006,19 +2011,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2035,7 +2041,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2067,13 +2073,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2125,23 +2130,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2229,7 +2243,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2303,7 +2317,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2340,14 +2354,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2364,7 +2384,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2372,26 +2392,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2404,55 +2436,93 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2473,7 +2543,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2489,12 +2559,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2539,7 +2609,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2547,31 +2617,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2587,23 +2657,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2712,7 +2786,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2866,27 +2940,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2922,7 +3000,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2934,35 +3012,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/messages.pot b/frontend/src/locale/messages.pot
index c4bd6af9b..f4f7464f7 100644
--- a/frontend/src/locale/messages.pot
+++ b/frontend/src/locale/messages.pot
@@ -46,8 +46,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -96,7 +96,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -113,7 +113,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -207,7 +207,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -237,10 +237,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -259,7 +259,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -270,7 +270,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -416,6 +416,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -423,6 +424,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -507,9 +509,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -559,7 +563,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -607,13 +611,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -826,7 +831,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -914,7 +919,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1192,10 +1197,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1369,7 +1374,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1406,7 +1411,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1761,7 +1766,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1773,15 +1778,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1798,14 +1803,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1825,7 +1830,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1862,8 +1867,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1907,7 +1912,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1928,7 +1933,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -1941,19 +1946,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -1970,7 +1976,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2001,13 +2007,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2059,23 +2064,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2163,7 +2177,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2233,7 +2247,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2270,14 +2284,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2296,7 +2316,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2304,26 +2324,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2336,56 +2368,92 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid "Scheduled messages will be sent at the specified date and time. (visible on the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2406,7 +2474,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2422,12 +2490,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2473,7 +2541,7 @@ msgstr ""
#: src/layouts/admin/AdminLayout.vue:136
#: src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2481,31 +2549,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2521,23 +2589,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2647,7 +2719,7 @@ msgid "Two-factor auth"
msgstr ""
#: src/views/account/SettingsView.vue:15
-#: src/views/webmail/EmailView.vue:23
+#: src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2790,28 +2862,32 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3
-#: src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4
+#: src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2849,7 +2925,7 @@ msgid "Hide full headers"
msgstr ""
#: src/views/quarantine/MessageView.vue:201
-#: src/views/webmail/EmailView.vue:254
+#: src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2861,35 +2937,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/nl/app.po b/frontend/src/locale/nl/app.po
index 2f02cb09e..a07f703fb 100644
--- a/frontend/src/locale/nl/app.po
+++ b/frontend/src/locale/nl/app.po
@@ -61,8 +61,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -111,7 +111,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -131,7 +131,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -229,7 +229,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -259,10 +259,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -281,7 +281,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -292,7 +292,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -438,6 +438,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -445,6 +446,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -533,9 +535,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -593,7 +597,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -641,13 +645,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -863,7 +868,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -954,7 +959,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1234,10 +1239,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1416,7 +1421,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1453,7 +1458,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1823,7 +1828,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1835,15 +1840,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1860,14 +1865,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1887,7 +1892,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1924,8 +1929,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1973,7 +1978,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1994,7 +1999,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2007,19 +2012,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2036,7 +2042,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2069,13 +2075,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2127,23 +2132,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2231,7 +2245,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2305,7 +2319,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2342,14 +2356,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2366,7 +2386,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2374,26 +2394,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2406,56 +2438,94 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2476,7 +2546,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2492,12 +2562,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2542,7 +2612,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2550,31 +2620,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2590,23 +2660,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2715,7 +2789,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2869,27 +2943,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2925,7 +3003,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2937,35 +3015,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/pl/app.po b/frontend/src/locale/pl/app.po
index 3093e0269..18014740c 100644
--- a/frontend/src/locale/pl/app.po
+++ b/frontend/src/locale/pl/app.po
@@ -62,8 +62,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -112,7 +112,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -132,7 +132,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -230,7 +230,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -260,10 +260,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -282,7 +282,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -293,7 +293,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -439,6 +439,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -446,6 +447,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -534,9 +536,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -594,7 +598,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -642,13 +646,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -864,7 +869,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -955,7 +960,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1235,10 +1240,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1417,7 +1422,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1454,7 +1459,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1824,7 +1829,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1836,15 +1841,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1861,14 +1866,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1888,7 +1893,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1926,8 +1931,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1975,7 +1980,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1996,7 +2001,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2009,19 +2014,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2038,7 +2044,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2072,13 +2078,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2130,23 +2135,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2234,7 +2248,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2308,7 +2322,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2345,14 +2359,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2369,7 +2389,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2377,26 +2397,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2409,57 +2441,95 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2480,7 +2550,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2496,12 +2566,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2546,7 +2616,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2554,31 +2624,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2594,23 +2664,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2719,7 +2793,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2873,27 +2947,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2929,7 +3007,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2941,35 +3019,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/pt_BR/app.po b/frontend/src/locale/pt_BR/app.po
index 9137ae36d..0d40f81bd 100644
--- a/frontend/src/locale/pt_BR/app.po
+++ b/frontend/src/locale/pt_BR/app.po
@@ -61,8 +61,8 @@ msgstr "Token de API criado"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr "Atenção"
@@ -111,7 +111,7 @@ msgstr "Habilitado"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr "Assunto"
@@ -134,7 +134,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "De"
@@ -237,7 +237,7 @@ msgstr "nome"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -267,10 +267,10 @@ msgstr "Usar contagem"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Ações"
@@ -290,7 +290,7 @@ msgstr "Você tem certeza que deseja remover este dispositivo WebAuthn?"
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Não"
@@ -301,7 +301,7 @@ msgstr "Não"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Sim"
@@ -447,6 +447,7 @@ msgstr "Configurações gerais"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr "Nome"
@@ -454,6 +455,7 @@ msgstr "Nome"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Sobrenome"
@@ -546,9 +548,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Fechar"
@@ -615,7 +619,7 @@ msgstr "Autenticador de registro"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Busca"
@@ -663,13 +667,14 @@ msgstr "Mensagem"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr "Remover"
@@ -893,7 +898,7 @@ msgstr "Não gerado"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -987,7 +992,7 @@ msgstr "Escolha um domínio"
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Adicionar"
@@ -1269,10 +1274,10 @@ msgstr "Domínio removido"
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr "Editar"
@@ -1469,7 +1474,7 @@ msgid "Create standard aliases for the domain."
msgstr "Criar apelidos padrão para este domínio."
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Nova conta"
@@ -1507,7 +1512,7 @@ msgstr "Conta criada"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1908,7 +1913,7 @@ msgstr "Porta IMAP"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr "Seguro"
@@ -1920,15 +1925,15 @@ msgstr "A conexão IMAP é protegida usando SSL/TLS ou StartTLS"
msgid "Check connection:"
msgstr "Verificar conexão:"
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr "Provedor"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr "Conta antiga"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr "Migração removida"
@@ -1945,14 +1950,14 @@ msgid "Associated domain"
msgstr "Domínio associado"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr "Porta"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr "Domínios associados"
@@ -1972,7 +1977,7 @@ msgstr "Número de domínios associados:"
msgid "No associated domains"
msgstr "Nenhum domínios associados"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr "Provedor atualizado"
@@ -2012,8 +2017,8 @@ msgstr "ID da fila"
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "Para"
@@ -2065,7 +2070,7 @@ msgid "Edit calendar"
msgstr "Editar calendário"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr "Novo calendário"
@@ -2086,7 +2091,7 @@ msgid "Title"
msgstr "Título"
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr "Calendário"
@@ -2099,19 +2104,20 @@ msgid "Edit event"
msgstr "Editar evento"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr "Novo evento"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr "Evento adicionado"
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr "Evento atualizado"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Evento atualizado"
@@ -2129,7 +2135,7 @@ msgid "Select an ICS file"
msgstr "Selecione um arquivo ICS"
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr "Enviar"
@@ -2165,13 +2171,12 @@ msgid "Category deleted"
msgstr "Categoria excluída"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Categorias"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr "Nome de exibição"
@@ -2223,23 +2228,36 @@ msgstr "Editar contato"
msgid "New contact"
msgstr "Novo contato"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr "Exibir informações do catálogo de endereços"
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr "Sincronize seus contatos com o catálogo de endereços"
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
-msgstr "E-mail"
+#: src/components/contacts/ContactList.vue:48
+#, fuzzy
+msgid "Synchronize"
+msgstr "Sincronização iniciada"
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Telefone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr "Exibir informações do catálogo de endereços"
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Endereço de e-mail"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Número de telefone"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Administrador removido"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr "Sincronização iniciada"
@@ -2337,7 +2355,7 @@ msgstr ""
msgid "Notifications"
msgstr "Identificação"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Sair"
@@ -2416,7 +2434,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr "Não tratar objetos duplicados como erro"
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Importar"
@@ -2455,14 +2473,20 @@ msgid "Relative time ranges"
msgstr "Intervalos de tempo relativos"
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Dia"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Semana"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Mês"
@@ -2479,7 +2503,7 @@ msgid "no"
msgstr "não"
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2487,28 +2511,41 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
#, fuzzy
msgid "Provide one or more addresses"
msgstr "Endereços do remetente"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "E-mail"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
#, fuzzy
msgid "Email sent"
msgstr "E-mail"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
#, fuzzy
msgid "Add to contacts"
@@ -2524,54 +2561,78 @@ msgstr "Editar contato"
msgid "Contact added to address book"
msgstr "Sincronize seus contatos com o catálogo de endereços"
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
#, fuzzy
msgid "Empty mailbox"
msgstr "Com caixa de correio"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+#, fuzzy
+msgid "Sending failure"
+msgstr "Limite de envio"
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Conta criada"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
#, fuzzy
msgid "Message(s) deleted"
msgstr "Filtros de mensagem"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
#, fuzzy
msgid "Message(s) flagged"
msgstr "Filtros de mensagem"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
@@ -2579,6 +2640,23 @@ msgstr[0] "Mensagens importantes"
msgstr[1] "Mensagens importantes"
msgstr[2] "Mensagens importantes"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Selecionar arquivo"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
#, fuzzy
msgid "Parent mailbox"
@@ -2604,7 +2682,7 @@ msgstr "Caixas de e-mail"
msgid "Mailbox created"
msgstr "Domínio criado"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2621,12 +2699,12 @@ msgstr "Domínio atualizado"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Configurações"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr "Filtros"
@@ -2671,7 +2749,7 @@ msgid "Migrations"
msgstr "MIgrações"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Informação"
@@ -2679,37 +2757,37 @@ msgstr "Informação"
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
#, fuzzy
msgid "Create a new mailbox"
msgstr "Criar um novo conjunto de filtros"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
#, fuzzy
msgid "Edit this mailbox"
msgstr "Com caixa de correio"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
#, fuzzy
msgid "Delete this mailbox"
msgstr "Com caixa de correio"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
#, fuzzy
msgid "Compress this mailbox"
msgstr "Com caixa de correio"
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
#, fuzzy
msgid "Mailbox compressed"
msgstr "Caixas de e-mail"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
#, fuzzy
msgid "Delete this mailbox?"
msgstr "Com caixa de correio"
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
#, fuzzy
msgid "Mailbox deleted"
msgstr "Migração removida"
@@ -2726,23 +2804,28 @@ msgstr "CSV parece estar mal formatado"
msgid "Not a valid email"
msgstr "Não é um e-mail válido"
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+#, fuzzy
+msgid "Not a valid time"
+msgstr "Não é um e-mail válido"
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr "Campo obrigatório"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr "O comprimento mínimo é %{ length }"
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr "Deve ser um valor numérico ou vazio"
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Senhas não conferem"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr "Número de porta inválido"
@@ -2854,7 +2937,7 @@ msgstr "Configurações de conta"
msgid "Two-factor auth"
msgstr "Autenticação de dois fatores"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Encaminhar"
@@ -3024,27 +3107,31 @@ msgstr "Última versão"
msgid "Message history"
msgstr "Histórico de mensagens"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr "Meus calendários"
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr "Regras de acesso"
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr "Tem certeza que deseja excluir esse calendário?"
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr "Calendário excluído"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Contatos"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr "Adicionar uma categoria"
@@ -3083,7 +3170,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
#, fuzzy
msgid "Message deleted"
msgstr "Filtros de mensagem"
@@ -3096,39 +3183,44 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
#, fuzzy
msgid "Enable links"
msgstr "Habilitar"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
#, fuzzy
msgid "Disable links"
msgstr "Desabilitar"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
#, fuzzy
msgid "Display source"
msgstr "Nome de exibição"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Filtros de mensagem"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Histórico de mensagens"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
@@ -3137,6 +3229,12 @@ msgstr ""
msgid "Webmail"
msgstr "E-mail"
+#~ msgid "E-mail"
+#~ msgstr "E-mail"
+
+#~ msgid "Phone"
+#~ msgstr "Telefone"
+
#~ msgid "active"
#~ msgstr "ativo"
diff --git a/frontend/src/locale/ru/app.po b/frontend/src/locale/ru/app.po
index 6d4fc9a91..6a91a5bd8 100644
--- a/frontend/src/locale/ru/app.po
+++ b/frontend/src/locale/ru/app.po
@@ -65,8 +65,8 @@ msgstr "Токен API создан"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr "Внимание"
@@ -115,7 +115,7 @@ msgstr "Включено"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr "Тема"
@@ -138,7 +138,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "От"
@@ -239,7 +239,7 @@ msgstr "название"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -269,10 +269,10 @@ msgstr "Количество использований"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Действия"
@@ -291,7 +291,7 @@ msgstr "Вы действительно хотите удалить это ус
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Нет"
@@ -302,7 +302,7 @@ msgstr "Нет"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Да"
@@ -448,6 +448,7 @@ msgstr "Основные настройки"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr "Имя"
@@ -455,6 +456,7 @@ msgstr "Имя"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Фамилия"
@@ -546,9 +548,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Закрыть"
@@ -614,7 +618,7 @@ msgstr "Зарегистрировать устройство-аутентифи
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Поиск"
@@ -662,13 +666,14 @@ msgstr "Письмо"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr "Удалить"
@@ -886,7 +891,7 @@ msgstr "Не создан"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -981,7 +986,7 @@ msgstr "Выберите домен"
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Добавить"
@@ -1261,10 +1266,10 @@ msgstr "Домен удалён"
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr "Редактировать"
@@ -1447,7 +1452,7 @@ msgid "Create standard aliases for the domain."
msgstr "Создать стандартные псевдонимы для домена"
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Новая учётная запись"
@@ -1484,7 +1489,7 @@ msgstr "Учётная запись создана"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1872,7 +1877,7 @@ msgstr "IMAP Порт"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr "Защищено"
@@ -1884,15 +1889,15 @@ msgstr "IMAP-соединение защищено через SSL/TLS или STA
msgid "Check connection:"
msgstr "Проверка соединения:"
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr "Провайдер"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr "Старая учётная запись"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr "Миграция удалена"
@@ -1909,14 +1914,14 @@ msgid "Associated domain"
msgstr "Связанный домен"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr "Порт"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr "Связанные домены"
@@ -1936,7 +1941,7 @@ msgstr "Количество связанных доменов:"
msgid "No associated domains"
msgstr "Нет связанных доменов"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr "Провайдер обновлён"
@@ -1977,8 +1982,8 @@ msgstr "ID очереди"
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "Кому"
@@ -2030,7 +2035,7 @@ msgid "Edit calendar"
msgstr "Изменить календарь"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr "Новый календарь"
@@ -2051,7 +2056,7 @@ msgid "Title"
msgstr "Название"
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr "Календарь"
@@ -2064,19 +2069,20 @@ msgid "Edit event"
msgstr "Изменить событие"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr "Новое событие"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr "Событие добавлено"
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr "Событие обновлено"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr "Событие удалено"
@@ -2093,7 +2099,7 @@ msgid "Select an ICS file"
msgstr "Выберите файл .ics"
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr "Отправить"
@@ -2130,13 +2136,12 @@ msgid "Category deleted"
msgstr "Категория удалена"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Категории"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr "Отображаемое имя"
@@ -2188,23 +2193,36 @@ msgstr "Изменить контакт"
msgid "New contact"
msgstr "Новый контакт"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr "Показать информацию об адресной книге"
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr "Синхронизировать контакты с адресной книгой"
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
-msgstr "Электронная почта"
+#: src/components/contacts/ContactList.vue:48
+#, fuzzy
+msgid "Synchronize"
+msgstr "Синхронизация запущена"
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Телефон"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr "Показать информацию об адресной книге"
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "Адрес электронной почты"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Номер телефона"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Администратор удален"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr "Синхронизация запущена"
@@ -2292,7 +2310,7 @@ msgstr "Идёт обработка выбранного…"
msgid "Notifications"
msgstr "Уведомления"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Выйти"
@@ -2368,7 +2386,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr "Не считать дубликаты ошибками"
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Импорт"
@@ -2405,14 +2423,20 @@ msgid "Relative time ranges"
msgstr "Относительный период"
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "День"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Неделя"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Месяц"
@@ -2429,7 +2453,7 @@ msgid "no"
msgstr "нет"
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr "Вложения"
@@ -2437,26 +2461,39 @@ msgstr "Вложения"
msgid "Attach"
msgstr "Прикрепить"
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
msgid "Provide one or more addresses"
msgstr "Укажите один или несколько адресов"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr "Копия"
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr "Скрытая копия"
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "Письмо отправлено"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr "Письмо отправлено"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr "Добавить в контакты"
@@ -2469,51 +2506,75 @@ msgstr "Сохранить контакт"
msgid "Contact added to address book"
msgstr "Контакт добавлен в адресную книгу"
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr "Пометить как прочитанное"
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr "Пометить как непрочитанное"
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr "Пометить как важное"
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr "Снять пометку «Важное»"
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr "Очистить ящик"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr "включено"
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr "В этом ящике пока нет писем"
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+#, fuzzy
+msgid "Sending failure"
+msgstr "Отправка запрещена"
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Учётная запись обновлена"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr "Письмо(а) удалены"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr "Письмо(а) помечено как спам"
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr "Письмо(а) помечено как НЕ спам"
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr "Письмо(а) помечено как важные"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
@@ -2522,6 +2583,23 @@ msgstr[1] "Важные письма"
msgstr[2] "Важные письма"
msgstr[3] "Важные письма"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Выбрать файл"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr "Родительский ящик"
@@ -2542,7 +2620,7 @@ msgstr "Почтовый ящик переименован"
msgid "Mailbox created"
msgstr "Почтовый ящик создан"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2558,12 +2636,12 @@ msgstr "База данных домена"
msgid "User's database"
msgstr "База данных пользователя"
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Настройки"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr "Фильтры"
@@ -2608,7 +2686,7 @@ msgid "Migrations"
msgstr "Миграции"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Информация"
@@ -2616,31 +2694,31 @@ msgstr "Информация"
msgid "Compose"
msgstr "Написать"
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr "Создать новый почтовый ящик"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr "Изменить этот ящик"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr "Удалить этот ящик"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr "Сжать этот ящик"
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr "Почтовый ящик сжат"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr "Удалить этот почтовый ящик?"
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr "Почтовый ящик удалён"
@@ -2656,23 +2734,28 @@ msgstr "CSV-файл имеет неверный формат"
msgid "Not a valid email"
msgstr "Неверный адрес электронной почты"
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+#, fuzzy
+msgid "Not a valid time"
+msgstr "Неверный адрес электронной почты"
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr "Поле обязательно для заполнения"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr "Минимальная длина %{ length }"
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr "Должно быть числом или пустым"
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Пароли не совпадают"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr "Неверный номер порта"
@@ -2785,7 +2868,7 @@ msgstr "Настройки учётной записи"
msgid "Two-factor auth"
msgstr "Двухфакторная аутентификация"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Переслать"
@@ -2949,27 +3032,31 @@ msgstr "Последняя версия"
msgid "Message history"
msgstr "История письма"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr "Мои календари"
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr "Правила доступа"
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr "Вы действительно хотите удалить этот календарь?"
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr "Календарь удален"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Контакты"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr "Добавить категорию"
@@ -3005,7 +3092,7 @@ msgstr "Показать все заголовки"
msgid "Hide full headers"
msgstr "Скрыть все заголовки"
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr "Письмо удалено"
@@ -3017,36 +3104,41 @@ msgstr "Карантин"
msgid "release requests"
msgstr "запросы на выпуск"
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr "Ответить"
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr "Ответить всем"
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr "Включить ссылки"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr "Отключить ссылки"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr "Показать источник"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Письмо удалено"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "История письма"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr "Письмо помечено как спам"
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr "Письмо помечено как НЕ спам"
@@ -3054,6 +3146,12 @@ msgstr "Письмо помечено как НЕ спам"
msgid "Webmail"
msgstr "Веб-почта"
+#~ msgid "E-mail"
+#~ msgstr "Электронная почта"
+
+#~ msgid "Phone"
+#~ msgstr "Телефон"
+
#~ msgid "active"
#~ msgstr "активно"
diff --git a/frontend/src/locale/sv/app.po b/frontend/src/locale/sv/app.po
index 7c159e2f1..ed44b3118 100644
--- a/frontend/src/locale/sv/app.po
+++ b/frontend/src/locale/sv/app.po
@@ -59,8 +59,8 @@ msgstr "API token skapat"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr "Varning"
@@ -109,7 +109,7 @@ msgstr "Aktiverad"
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr "Ämne"
@@ -131,7 +131,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "Från"
@@ -232,7 +232,7 @@ msgstr "namn"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -262,10 +262,10 @@ msgstr "Använd antal"
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr "Åtgärder"
@@ -285,7 +285,7 @@ msgstr "Vill du verkligen ta bort den här WebAuthn-enheten?"
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Nej"
@@ -296,7 +296,7 @@ msgstr "Nej"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Ja"
@@ -442,6 +442,7 @@ msgstr "Allmänna inställningar"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr "Förnamn"
@@ -449,6 +450,7 @@ msgstr "Förnamn"
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr "Efternamn"
@@ -541,9 +543,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Stäng"
@@ -609,7 +613,7 @@ msgstr "Registrera autentiseringsverktyg"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr "Sök"
@@ -657,13 +661,14 @@ msgstr "Meddelande"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr "Radera"
@@ -886,7 +891,7 @@ msgstr "Ej genererad"
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -981,7 +986,7 @@ msgstr "Välj en domän"
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr "Lägg till"
@@ -1263,10 +1268,10 @@ msgstr "Domän raderad"
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr "Redigera"
@@ -1463,7 +1468,7 @@ msgid "Create standard aliases for the domain."
msgstr "Skapa standardalias för domänen."
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr "Nytt konto"
@@ -1501,7 +1506,7 @@ msgstr "Konto skapat"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1899,7 +1904,7 @@ msgstr "IMAP port"
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr "Säkrad"
@@ -1911,15 +1916,15 @@ msgstr "Är IMAP-anslutningen säker med SSL/TLS eller StartTLS"
msgid "Check connection:"
msgstr "Kontrollera anslutning:"
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr "Leverantör"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr "Gammalt konto"
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr "Migrering raderad"
@@ -1936,14 +1941,14 @@ msgid "Associated domain"
msgstr "Associerad domän"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr "Port"
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr "Associerade domäner"
@@ -1963,7 +1968,7 @@ msgstr "Antal associerade domäner:"
msgid "No associated domains"
msgstr "Inga associerade domäner"
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr "Leverantör uppdaterad"
@@ -2002,8 +2007,8 @@ msgstr "Kö ID"
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "Till"
@@ -2057,7 +2062,7 @@ msgid "Edit calendar"
msgstr "Redigera kalender"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr "Ny kalender"
@@ -2078,7 +2083,7 @@ msgid "Title"
msgstr "Titel"
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr "Kalender"
@@ -2091,19 +2096,20 @@ msgid "Edit event"
msgstr "Redigera händelse"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr "Ny händelse"
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr "Event added"
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr "Händelse uppdaterad"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Händelse uppdaterad"
@@ -2121,7 +2127,7 @@ msgid "Select an ICS file"
msgstr "Välj en ICS-fil"
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr "Skicka"
@@ -2156,13 +2162,12 @@ msgid "Category deleted"
msgstr "Kategori raderad"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr "Kategorier"
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr "Display name"
@@ -2214,23 +2219,36 @@ msgstr "Redigera kontakt"
msgid "New contact"
msgstr "Ny kontakt"
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr "Visa adressboksinformation"
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr "Synkronisera kontakter med adressboken"
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
-msgstr "E-post"
+#: src/components/contacts/ContactList.vue:48
+#, fuzzy
+msgid "Synchronize"
+msgstr "Synkronisering startade"
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
-msgstr "Telefon"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
+msgstr "Visa adressboksinformation"
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+#, fuzzy
+msgid "Email addresses"
+msgstr "E-postadress"
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Telefonnummer"
+
+#: src/components/contacts/ContactList.vue:280
+#, fuzzy
+msgid "Contact removed"
+msgstr "Administratör raderad"
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr "Synkronisering startade"
@@ -2331,7 +2349,7 @@ msgstr ""
msgid "Notifications"
msgstr "Identifikation"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Logga ut"
@@ -2409,7 +2427,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr "Behandla inte duplicerade objekt som fel"
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr "Importera"
@@ -2448,14 +2466,20 @@ msgid "Relative time ranges"
msgstr "Relativa tidsintervall"
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr "Dag"
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr "Vecka"
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr "Månad"
@@ -2472,7 +2496,7 @@ msgid "no"
msgstr "nej"
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr "Bilagor"
@@ -2480,26 +2504,39 @@ msgstr "Bilagor"
msgid "Attach"
msgstr "Bifoga"
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:73
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
msgid "Provide one or more addresses"
msgstr "Ange en eller flera adresser"
-#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr "Cc"
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr "Bcc"
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+#, fuzzy
+msgid "Email scheduled"
+msgstr "E-post skickat"
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr "E-post skickat"
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr "Lägg till i kontakter"
@@ -2512,57 +2549,98 @@ msgstr "Uppdatera kontakt"
msgid "Contact added to address book"
msgstr "Kontakt har lagts till i adressboken"
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr "Markera som läst"
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr "Markera som oläst"
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr "Markera enligt följande"
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr "Markera som ej följt"
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr "Tom brevlåda"
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr "på"
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr "Inget meddelande ännu i denna brevlåda"
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+#, fuzzy
+msgid "Sending failure"
+msgstr "Sändningsgräns"
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Konto skapat"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr "Meddelande(n) raderade"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr "Meddelande(n) markerade som skräp"
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr "Meddelande(n) markerade som inte skräp"
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr "Meddelande(n) flaggade"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "Viktiga meddelanden"
msgstr[1] "Viktiga meddelanden"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Välj fil"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr "Förälders brevlåda"
@@ -2583,7 +2661,7 @@ msgstr "Brevlåda omdöpt"
msgid "Mailbox created"
msgstr "Brevlåda skapad"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2600,12 +2678,12 @@ msgstr "Domän uppdaterad"
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Inställningar"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr "Filter"
@@ -2650,7 +2728,7 @@ msgid "Migrations"
msgstr "Migreringar"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Information"
@@ -2658,31 +2736,31 @@ msgstr "Information"
msgid "Compose"
msgstr "Författa"
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr "Skapa en ny brevlåda"
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr "Redigera den här brevlådan"
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr "Ta bort den här brevlådan"
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr "Komprimera denna brevlåda"
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr "Brevlåda komprimerad"
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr "Ta bort den här brevlådan?"
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr "Brevlåda raderad"
@@ -2698,23 +2776,28 @@ msgstr "CSV verkar vara dåligt formaterad"
msgid "Not a valid email"
msgstr "Inte ett giltigt mejl"
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+#, fuzzy
+msgid "Not a valid time"
+msgstr "Inte ett giltigt mejl"
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr "Fält är obligatoriskt"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr "Minsta längd är %{ length }"
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr "Måste vara ett numeriskt värde eller tomt"
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Lösenord matchar ej"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr "Ogiltigt portnummer"
@@ -2826,7 +2909,7 @@ msgstr "Kontoinställningar"
msgid "Two-factor auth"
msgstr "Tvåfaktorsautentisering"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr "Vidarebefordra"
@@ -2995,27 +3078,31 @@ msgstr "Senaste version"
msgid "Message history"
msgstr "Meddelande historik"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr "Mina kalendrar"
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr "Åtkomstregler"
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr "Vill du verkligen ta bort den här kalendern?"
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr "Kalender raderad"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr "Kontakter"
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr "Lägg till en kategori"
@@ -3055,7 +3142,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr "Meddelandet raderat"
@@ -3067,36 +3154,41 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr "Svara"
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr "Svara alla"
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr "Aktivera länkar"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr "Inaktivera länkar"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr "Visa källa"
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "Meddelandet raderat"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "Meddelande historik"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr "Meddelande markerat som skräp"
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr "Meddelandet markerat som inte skräp"
@@ -3104,6 +3196,12 @@ msgstr "Meddelandet markerat som inte skräp"
msgid "Webmail"
msgstr "Webmail"
+#~ msgid "E-mail"
+#~ msgstr "E-post"
+
+#~ msgid "Phone"
+#~ msgstr "Telefon"
+
#~ msgid "active"
#~ msgstr "aktiv"
diff --git a/frontend/src/locale/tr/app.po b/frontend/src/locale/tr/app.po
index b56f8b509..11ac4247e 100644
--- a/frontend/src/locale/tr/app.po
+++ b/frontend/src/locale/tr/app.po
@@ -63,8 +63,8 @@ msgstr "Profil güncellendi"
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -113,7 +113,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -133,7 +133,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr "Kimden"
@@ -236,7 +236,7 @@ msgstr "Kullanıcı adı"
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -266,10 +266,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -288,7 +288,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr "Hayır"
@@ -299,7 +299,7 @@ msgstr "Hayır"
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr "Evet"
@@ -455,6 +455,7 @@ msgstr "Genel"
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -462,6 +463,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -553,9 +555,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr "Kapat"
@@ -624,7 +628,7 @@ msgstr "Kimlik Doğrulama"
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -673,13 +677,14 @@ msgstr "İleti"
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -900,7 +905,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -992,7 +997,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1273,10 +1278,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1463,7 +1468,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1501,7 +1506,7 @@ msgstr "Profil güncellendi"
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1887,7 +1892,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
#, fuzzy
msgid "Secured"
msgstr "Güvenlik"
@@ -1900,16 +1905,16 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
#, fuzzy
msgid "Provider"
msgstr "Yeni kurtarma kodları"
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
#, fuzzy
msgid "Migration deleted"
msgstr "Onayla"
@@ -1928,14 +1933,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1957,7 +1962,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
#, fuzzy
msgid "Provider updated"
msgstr "Profil güncellendi"
@@ -1995,8 +2000,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr "Kime"
@@ -2046,7 +2051,7 @@ msgid "Edit calendar"
msgstr "Yeni kurtarma kodları"
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
#, fuzzy
msgid "New calendar"
msgstr "Yeni kurtarma kodları"
@@ -2070,7 +2075,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2084,20 +2089,21 @@ msgid "Edit event"
msgstr "Yeni kurtarma kodları"
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
#, fuzzy
msgid "Event updated"
msgstr "Profil güncellendi"
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
#, fuzzy
msgid "Event deleted"
msgstr "Profil güncellendi"
@@ -2116,7 +2122,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2151,13 +2157,12 @@ msgid "Category deleted"
msgstr "Onayla"
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2211,23 +2216,33 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+#, fuzzy
+msgid "Phone numbers"
+msgstr "Telefon numarası"
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2319,7 +2334,7 @@ msgstr ""
msgid "Notifications"
msgstr "Onayla"
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr "Çıkış Yapın"
@@ -2393,7 +2408,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2432,14 +2447,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2456,7 +2477,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2464,26 +2485,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2497,59 +2530,99 @@ msgstr "Ayarlar"
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+#, fuzzy
+msgid "Scheduling updated"
+msgstr "Profil güncellendi"
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
#, fuzzy
msgid "Message(s) deleted"
msgstr "İleti"
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
#, fuzzy
msgid "Message(s) flagged"
msgstr "İleti"
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
#, fuzzy
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] "İleti"
msgstr[1] "İleti"
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+#, fuzzy
+msgid "Select time"
+msgstr "Onayla"
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2572,7 +2645,7 @@ msgstr ""
msgid "Mailbox created"
msgstr "Profil güncellendi"
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2588,12 +2661,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr "Ayarlar"
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2639,7 +2712,7 @@ msgid "Migrations"
msgstr "Onayla"
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr "Bilgi"
@@ -2647,31 +2720,31 @@ msgstr "Bilgi"
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
#, fuzzy
msgid "Mailbox deleted"
msgstr "Onayla"
@@ -2688,24 +2761,28 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
#, fuzzy
msgid "Field is required"
msgstr "Bu alan gerekli"
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr "Parolalar uyuşmuyor"
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2825,7 +2902,7 @@ msgstr "Ayarlar"
msgid "Two-factor auth"
msgstr "Kimlik Doğrulama"
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2986,28 +3063,32 @@ msgstr "Kurulu sürüm"
msgid "Message history"
msgstr "İleti"
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
#, fuzzy
msgid "Calendar deleted"
msgstr "Profil güncellendi"
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -3046,7 +3127,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
#, fuzzy
msgid "Message deleted"
msgstr "İleti"
@@ -3059,38 +3140,43 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
#, fuzzy
msgid "Enable links"
msgstr "2FA'yı etkinleştir"
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
#, fuzzy
msgid "Disable links"
msgstr "2FA'yı devre dışı bırak"
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+#, fuzzy
+msgid "Message scheduled at:"
+msgstr "İleti"
+
+#: src/views/webmail/EmailView.vue:151
#, fuzzy
msgid "Message source"
msgstr "İleti"
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/frontend/src/locale/zh/app.po b/frontend/src/locale/zh/app.po
index afc9e6bc5..09bbf020f 100644
--- a/frontend/src/locale/zh/app.po
+++ b/frontend/src/locale/zh/app.po
@@ -60,8 +60,8 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:482
#: src/components/admin/identities/IdentityList.vue:522
#: src/components/tools/CreationForm.vue:135
-#: src/layouts/webmail/WebmailLayout.vue:190
-#: src/views/calendars/CalendarView.vue:247
+#: src/layouts/webmail/WebmailLayout.vue:201
+#: src/views/calendars/CalendarView.vue:535
msgid "Warning"
msgstr ""
@@ -110,7 +110,7 @@ msgstr ""
#: src/components/account/AutoReplyForm.vue:12
#: src/components/quarantine/QuarantineList.vue:49
#: src/components/quarantine/QuarantineList.vue:235
-#: src/components/webmail/ComposeEmailForm.vue:145
+#: src/components/webmail/ComposeEmailForm.vue:158
msgid "Subject"
msgstr ""
@@ -130,7 +130,7 @@ msgstr ""
#: src/components/calendars/EventForm.vue:24
#: src/components/quarantine/QuarantineList.vue:234
#: src/components/tools/TimeSerieChart.vue:19
-#: src/components/webmail/ComposeEmailForm.vue:35
+#: src/components/webmail/ComposeEmailForm.vue:48
msgid "From"
msgstr ""
@@ -228,7 +228,7 @@ msgstr ""
#: src/components/admin/domains/form_steps/DomainOptionsForm.vue:11
#: src/components/admin/identities/IdentityList.vue:265
#: src/components/admin/imap_migration/ProviderCreationForm.vue:53
-#: src/components/admin/imap_migration/ProvidersList.vue:110
+#: src/components/admin/imap_migration/ProvidersList.vue:114
#: src/components/calendars/CalendarForm.vue:15
#: src/components/contacts/CategoryForm.vue:10
#: src/components/webmail/MailboxForm.vue:7
@@ -258,10 +258,10 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:47
#: src/components/admin/identities/IdentityList.vue:345
#: src/components/admin/imap_migration/MigrationsList.vue:34
-#: src/components/admin/imap_migration/MigrationsList.vue:85
+#: src/components/admin/imap_migration/MigrationsList.vue:90
#: src/components/admin/imap_migration/ProvidersList.vue:36
-#: src/components/admin/imap_migration/ProvidersList.vue:116
-#: src/components/contacts/ContactList.vue:128
+#: src/components/admin/imap_migration/ProvidersList.vue:120
+#: src/components/contacts/ContactList.vue:222
msgid "Actions"
msgstr ""
@@ -280,7 +280,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:487
#: src/components/admin/identities/IdentityList.vue:527
#: src/components/tools/CreationForm.vue:142
-#: src/layouts/webmail/WebmailLayout.vue:195
+#: src/layouts/webmail/WebmailLayout.vue:206
msgid "No"
msgstr ""
@@ -291,7 +291,7 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:486
#: src/components/admin/identities/IdentityList.vue:526
#: src/components/tools/CreationForm.vue:141
-#: src/layouts/webmail/WebmailLayout.vue:194
+#: src/layouts/webmail/WebmailLayout.vue:205
msgid "Yes"
msgstr ""
@@ -437,6 +437,7 @@ msgstr ""
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:18
#: src/components/admin/identities/IdentityList.vue:267
#: src/components/contacts/ContactForm.vue:12
+#: src/components/contacts/ContactList.vue:219
msgid "First name"
msgstr ""
@@ -444,6 +445,7 @@ msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:104
#: src/components/admin/identities/form_steps/AccountGeneralForm.vue:25
#: src/components/contacts/ContactForm.vue:22
+#: src/components/contacts/ContactList.vue:220
msgid "Last name"
msgstr ""
@@ -532,9 +534,11 @@ msgstr ""
#: src/components/contacts/ContactForm.vue:148
#: src/components/tools/ImportForm.vue:51
#: src/components/webmail/AttachmentsDialog.vue:41
+#: src/components/webmail/EmailList.vue:226
+#: src/components/webmail/EmailSchedulingForm.vue:28
#: src/components/webmail/MailboxForm.vue:29
#: src/layouts/connected/ConnectedLayout.vue:19
-#: src/views/webmail/EmailView.vue:153
+#: src/views/webmail/EmailView.vue:158
msgid "Close"
msgstr ""
@@ -592,7 +596,7 @@ msgstr ""
#: src/components/admin/imap_migration/ProvidersList.vue:20
#: src/components/admin/logs/AuditTrailList.vue:17
#: src/components/admin/logs/MessageList.vue:17
-#: src/components/contacts/ContactList.vue:9
+#: src/components/contacts/ContactList.vue:22
msgid "Search"
msgstr ""
@@ -640,13 +644,14 @@ msgstr ""
#: src/components/admin/identities/IdentityList.vue:442
#: src/components/admin/identities/IdentityList.vue:454
#: src/components/admin/identities/IdentityList.vue:467
-#: src/components/admin/imap_migration/MigrationsList.vue:125
-#: src/components/admin/imap_migration/ProvidersList.vue:142
+#: src/components/admin/imap_migration/MigrationsList.vue:130
+#: src/components/admin/imap_migration/ProvidersList.vue:146
#: src/components/calendars/EventForm.vue:90
#: src/components/contacts/CategoryForm.vue:18
-#: src/components/contacts/ContactList.vue:143
+#: src/components/contacts/ContactList.vue:237
+#: src/components/webmail/EmailList.vue:286
#: src/views/account/FiltersView.vue:351
-#: src/views/calendars/CalendarView.vue:109
+#: src/views/calendars/CalendarView.vue:209
msgid "Delete"
msgstr ""
@@ -862,7 +867,7 @@ msgstr ""
#: src/components/admin/identities/AliasEditForm.vue:16
#: src/components/admin/identities/IdentityList.vue:234
#: src/components/admin/imap_migration/ProviderCreationForm.vue:54
-#: src/components/admin/imap_migration/ProvidersList.vue:111
+#: src/components/admin/imap_migration/ProvidersList.vue:115
#: src/components/contacts/ContactForm.vue:85
#: src/components/contacts/EmailField.vue:5
msgid "Address"
@@ -953,7 +958,7 @@ msgstr ""
#: src/components/admin/domains/DomainAliasForm.vue:75
#: src/components/contacts/CategoryForm.vue:60
#: src/components/contacts/ContactForm.vue:185
-#: src/components/contacts/ContactList.vue:18
+#: src/components/contacts/ContactList.vue:31
msgid "Add"
msgstr ""
@@ -1233,10 +1238,10 @@ msgstr ""
#: src/components/admin/domains/DomainList.vue:357
#: src/components/admin/identities/IdentityList.vue:437
#: src/components/admin/identities/IdentityList.vue:449
-#: src/components/admin/imap_migration/ProvidersList.vue:148
-#: src/components/contacts/ContactList.vue:138
+#: src/components/admin/imap_migration/ProvidersList.vue:152
+#: src/components/contacts/ContactList.vue:232
#: src/views/account/FiltersView.vue:346
-#: src/views/calendars/CalendarView.vue:99
+#: src/views/calendars/CalendarView.vue:199
msgid "Edit"
msgstr ""
@@ -1415,7 +1420,7 @@ msgid "Create standard aliases for the domain."
msgstr ""
#: src/components/admin/identities/AccountCreationForm.vue:4
-#: src/components/admin/imap_migration/MigrationsList.vue:83
+#: src/components/admin/imap_migration/MigrationsList.vue:88
msgid "New account"
msgstr ""
@@ -1452,7 +1457,7 @@ msgstr ""
#: src/components/admin/identities/AccountEditForm.vue:31
#: src/components/calendars/CalendarAccessRulesForm.vue:42
-#: src/components/shared/TopMenu.vue:132
+#: src/components/shared/TopMenu.vue:130
#: src/views/admin/identities/AccountView.vue:4
#: src/views/admin/identities/IdentitiesView.vue:23
msgid "Account"
@@ -1822,7 +1827,7 @@ msgstr ""
#: src/components/admin/imap_migration/form_steps/ProviderGeneralForm.vue:27
#: src/components/admin/imap_migration/ProviderCreationForm.vue:57
-#: src/components/admin/imap_migration/ProvidersList.vue:113
+#: src/components/admin/imap_migration/ProvidersList.vue:117
msgid "Secured"
msgstr ""
@@ -1834,15 +1839,15 @@ msgstr ""
msgid "Check connection:"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:81
+#: src/components/admin/imap_migration/MigrationsList.vue:86
msgid "Provider"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:82
+#: src/components/admin/imap_migration/MigrationsList.vue:87
msgid "Old account"
msgstr ""
-#: src/components/admin/imap_migration/MigrationsList.vue:100
+#: src/components/admin/imap_migration/MigrationsList.vue:105
msgid "Migration deleted"
msgstr ""
@@ -1859,14 +1864,14 @@ msgid "Associated domain"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:55
-#: src/components/admin/imap_migration/ProvidersList.vue:112
+#: src/components/admin/imap_migration/ProvidersList.vue:116
msgid "Port"
msgstr ""
#: src/components/admin/imap_migration/ProviderCreationForm.vue:64
#: src/components/admin/imap_migration/ProviderCreationForm.vue:72
#: src/components/admin/imap_migration/ProviderForm.vue:30
-#: src/components/admin/imap_migration/ProvidersList.vue:114
+#: src/components/admin/imap_migration/ProvidersList.vue:118
msgid "Associated domains"
msgstr ""
@@ -1886,7 +1891,7 @@ msgstr ""
msgid "No associated domains"
msgstr ""
-#: src/components/admin/imap_migration/ProviderForm.vue:140
+#: src/components/admin/imap_migration/ProviderForm.vue:143
msgid "Provider updated"
msgstr ""
@@ -1923,8 +1928,8 @@ msgstr ""
#: src/components/quarantine/QuarantineList.vue:52
#: src/components/quarantine/QuarantineList.vue:233
#: src/components/tools/TimeSerieChart.vue:20
-#: src/components/webmail/ComposeEmailForm.vue:52
-#: src/views/webmail/EmailView.vue:109
+#: src/components/webmail/ComposeEmailForm.vue:65
+#: src/views/webmail/EmailView.vue:103
msgid "To"
msgstr ""
@@ -1972,7 +1977,7 @@ msgid "Edit calendar"
msgstr ""
#: src/components/calendars/CalendarForm.vue:8
-#: src/views/calendars/CalendarView.vue:81
+#: src/views/calendars/CalendarView.vue:181
msgid "New calendar"
msgstr ""
@@ -1993,7 +1998,7 @@ msgid "Title"
msgstr ""
#: src/components/calendars/EventForm.vue:49
-#: src/views/calendars/CalendarView.vue:3
+#: src/views/calendars/CalendarView.vue:4
msgid "Calendar"
msgstr ""
@@ -2006,19 +2011,20 @@ msgid "Edit event"
msgstr ""
#: src/components/calendars/EventForm.vue:133
+#: src/views/calendars/CalendarView.vue:399
msgid "New event"
msgstr ""
-#: src/components/calendars/EventForm.vue:186
+#: src/components/calendars/EventForm.vue:208
msgid "Event added"
msgstr ""
-#: src/components/calendars/EventForm.vue:189
-#: src/views/calendars/CalendarView.vue:225
+#: src/components/calendars/EventForm.vue:211
+#: src/views/calendars/CalendarView.vue:340
msgid "Event updated"
msgstr ""
-#: src/components/calendars/EventForm.vue:202
+#: src/components/calendars/EventForm.vue:224
msgid "Event deleted"
msgstr ""
@@ -2035,7 +2041,7 @@ msgid "Select an ICS file"
msgstr ""
#: src/components/calendars/ImportEventsForm.vue:30
-#: src/components/webmail/ComposeEmailForm.vue:19
+#: src/components/webmail/ComposeEmailForm.vue:18
msgid "Send"
msgstr ""
@@ -2068,13 +2074,12 @@ msgid "Category deleted"
msgstr ""
#: src/components/contacts/ContactCategoriesForm.vue:5
-#: src/components/contacts/ContactList.vue:133
-#: src/views/contacts/AddressBook.vue:41
+#: src/components/contacts/ContactList.vue:227
+#: src/views/contacts/AddressBook.vue:45
msgid "Categories"
msgstr ""
#: src/components/contacts/ContactForm.vue:31
-#: src/components/contacts/ContactList.vue:125
msgid "Display name"
msgstr ""
@@ -2126,23 +2131,32 @@ msgstr ""
msgid "New contact"
msgstr ""
-#: src/components/contacts/ContactList.vue:23
-msgid "Display address book information"
-msgstr ""
-
-#: src/components/contacts/ContactList.vue:31
+#: src/components/contacts/ContactList.vue:42
msgid "Synchronize contacts with address book"
msgstr ""
-#: src/components/contacts/ContactList.vue:126
-msgid "E-mail"
+#: src/components/contacts/ContactList.vue:48
+msgid "Synchronize"
msgstr ""
-#: src/components/contacts/ContactList.vue:127
-msgid "Phone"
+#: src/components/contacts/ContactList.vue:58
+msgid "Display address book information"
msgstr ""
-#: src/components/contacts/ContactList.vue:202
+#: src/components/contacts/ContactList.vue:120
+msgid "Email addresses"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:138
+msgid "Phone numbers"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:280
+msgid "Contact removed"
+msgstr ""
+
+#: src/components/contacts/ContactList.vue:325
+#: src/components/contacts/ContactList.vue:346
msgid "Synchronization started"
msgstr ""
@@ -2230,7 +2244,7 @@ msgstr ""
msgid "Notifications"
msgstr ""
-#: src/components/shared/TopMenu.vue:139
+#: src/components/shared/TopMenu.vue:137
msgid "Logout"
msgstr ""
@@ -2304,7 +2318,7 @@ msgid "Don't treat duplicated objects as errors"
msgstr ""
#: src/components/tools/ImportForm.vue:54
-#: src/views/calendars/CalendarView.vue:114
+#: src/views/calendars/CalendarView.vue:214
msgid "Import"
msgstr ""
@@ -2341,14 +2355,20 @@ msgid "Relative time ranges"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:110
+#: src/views/calendars/CalendarView.vue:46
+#: src/views/calendars/CalendarView.vue:172
msgid "Day"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:111
+#: src/views/calendars/CalendarView.vue:49
+#: src/views/calendars/CalendarView.vue:173
msgid "Week"
msgstr ""
#: src/components/tools/TimeSerieChart.vue:112
+#: src/views/calendars/CalendarView.vue:52
+#: src/views/calendars/CalendarView.vue:174
msgid "Month"
msgstr ""
@@ -2365,7 +2385,7 @@ msgid "no"
msgstr ""
#: src/components/webmail/AttachmentsDialog.vue:3
-#: src/components/webmail/ComposeEmailForm.vue:27
+#: src/components/webmail/ComposeEmailForm.vue:40
msgid "Attachments"
msgstr ""
@@ -2373,26 +2393,38 @@ msgstr ""
msgid "Attach"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:60
-#: src/components/webmail/ComposeEmailForm.vue:105
-#: src/components/webmail/ComposeEmailForm.vue:132
-msgid "Provide one or more addresses"
+#: src/components/webmail/ComposeEmailForm.vue:28
+msgid "Schedule sending"
msgstr ""
#: src/components/webmail/ComposeEmailForm.vue:73
-#: src/components/webmail/ComposeEmailForm.vue:91
+#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:145
+msgid "Provide one or more addresses"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:86
+#: src/components/webmail/ComposeEmailForm.vue:104
msgid "Cc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:81
-#: src/components/webmail/ComposeEmailForm.vue:118
+#: src/components/webmail/ComposeEmailForm.vue:94
+#: src/components/webmail/ComposeEmailForm.vue:131
msgid "Bcc"
msgstr ""
-#: src/components/webmail/ComposeEmailForm.vue:278
+#: src/components/webmail/ComposeEmailForm.vue:300
+msgid "Email scheduled"
+msgstr ""
+
+#: src/components/webmail/ComposeEmailForm.vue:301
msgid "Email sent"
msgstr ""
+#: src/components/webmail/ComposeEmailForm.vue:354
+msgid "You must provide one recipient at least"
+msgstr ""
+
#: src/components/webmail/ContactCard.vue:15
msgid "Add to contacts"
msgstr ""
@@ -2405,56 +2437,94 @@ msgstr ""
msgid "Contact added to address book"
msgstr ""
-#: src/components/webmail/EmailList.vue:63
+#: src/components/webmail/EmailList.vue:66
msgid "Mark as read"
msgstr ""
-#: src/components/webmail/EmailList.vue:68
+#: src/components/webmail/EmailList.vue:71
msgid "Mark as unread"
msgstr ""
-#: src/components/webmail/EmailList.vue:73
+#: src/components/webmail/EmailList.vue:76
msgid "Mark as followed"
msgstr ""
-#: src/components/webmail/EmailList.vue:78
+#: src/components/webmail/EmailList.vue:81
msgid "Mark as unfollowed"
msgstr ""
-#: src/components/webmail/EmailList.vue:84
+#: src/components/webmail/EmailList.vue:87
msgid "Empty mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:94
+#: src/components/webmail/EmailList.vue:97
msgid "on"
msgstr ""
-#: src/components/webmail/EmailList.vue:169
+#: src/components/webmail/EmailList.vue:127
+msgid ""
+"Scheduled messages will be sent at the specified date and time. (visible on "
+"the right)"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:206
msgid "No message yet in this mailbox"
msgstr ""
-#: src/components/webmail/EmailList.vue:253
+#: src/components/webmail/EmailList.vue:221
+msgid "Sending failure"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:281
+msgid "Reschedule"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:328
+msgid "Scheduling updated"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:339
+msgid "Scheduled canceled and message move to trash folder"
+msgstr ""
+
+#: src/components/webmail/EmailList.vue:393
msgid "Message(s) deleted"
msgstr ""
-#: src/components/webmail/EmailList.vue:268
+#: src/components/webmail/EmailList.vue:408
msgid "Message(s) marked as junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:282
+#: src/components/webmail/EmailList.vue:422
msgid "Message(s) marked as not junk"
msgstr ""
-#: src/components/webmail/EmailList.vue:297
+#: src/components/webmail/EmailList.vue:437
msgid "Message(s) flagged"
msgstr ""
-#: src/components/webmail/EmailList.vue:324
+#: src/components/webmail/EmailList.vue:464
msgid "%{count} message"
msgid_plural "%{count} messages"
msgstr[0] ""
msgstr[1] ""
+#: src/components/webmail/EmailSchedulingForm.vue:2
+msgid "Schedule your sending"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:15
+msgid "Select time"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:30
+msgid "Schedule"
+msgstr ""
+
+#: src/components/webmail/EmailSchedulingForm.vue:68
+msgid "Provided time must be one minute from now at least"
+msgstr ""
+
#: src/components/webmail/MailboxForm.vue:13
msgid "Parent mailbox"
msgstr ""
@@ -2475,7 +2545,7 @@ msgstr ""
msgid "Mailbox created"
msgstr ""
-#: src/components/webmail/MailboxList.vue:165
+#: src/components/webmail/MailboxList.vue:172
msgid "Moving selection..."
msgstr ""
@@ -2491,12 +2561,12 @@ msgstr ""
msgid "User's database"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:27
+#: src/layouts/account/AccountLayout.vue:28
#: src/layouts/admin/AdminLayout.vue:123
msgid "Settings"
msgstr ""
-#: src/layouts/account/AccountLayout.vue:33
+#: src/layouts/account/AccountLayout.vue:34
msgid "Filters"
msgstr ""
@@ -2541,7 +2611,7 @@ msgid "Migrations"
msgstr ""
#: src/layouts/admin/AdminLayout.vue:136 src/views/admin/InformationView.vue:4
-#: src/views/calendars/CalendarView.vue:94
+#: src/views/calendars/CalendarView.vue:194
msgid "Information"
msgstr ""
@@ -2549,31 +2619,31 @@ msgstr ""
msgid "Compose"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:45
+#: src/layouts/webmail/WebmailLayout.vue:54
msgid "Create a new mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:50
+#: src/layouts/webmail/WebmailLayout.vue:59
msgid "Edit this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:56
+#: src/layouts/webmail/WebmailLayout.vue:65
msgid "Delete this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:62
+#: src/layouts/webmail/WebmailLayout.vue:71
msgid "Compress this mailbox"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:185
+#: src/layouts/webmail/WebmailLayout.vue:196
msgid "Mailbox compressed"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:191
+#: src/layouts/webmail/WebmailLayout.vue:202
msgid "Delete this mailbox?"
msgstr ""
-#: src/layouts/webmail/WebmailLayout.vue:202
+#: src/layouts/webmail/WebmailLayout.vue:213
msgid "Mailbox deleted"
msgstr ""
@@ -2589,23 +2659,27 @@ msgstr ""
msgid "Not a valid email"
msgstr ""
-#: src/plugins/rules.js:31
+#: src/plugins/rules.js:27
+msgid "Not a valid time"
+msgstr ""
+
+#: src/plugins/rules.js:38
msgid "Field is required"
msgstr ""
-#: src/plugins/rules.js:36
+#: src/plugins/rules.js:43
msgid "Minimum length is %{ length }"
msgstr ""
-#: src/plugins/rules.js:41
+#: src/plugins/rules.js:48
msgid "Must be a numeric value or empty"
msgstr ""
-#: src/plugins/rules.js:43
+#: src/plugins/rules.js:50
msgid "Passwords mismatch"
msgstr ""
-#: src/plugins/rules.js:45
+#: src/plugins/rules.js:52
msgid "Invalid port number"
msgstr ""
@@ -2714,7 +2788,7 @@ msgstr ""
msgid "Two-factor auth"
msgstr ""
-#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:23
+#: src/views/account/SettingsView.vue:15 src/views/webmail/EmailView.vue:18
msgid "Forward"
msgstr ""
@@ -2868,27 +2942,31 @@ msgstr ""
msgid "Message history"
msgstr ""
-#: src/views/calendars/CalendarView.vue:85
+#: src/views/calendars/CalendarView.vue:14
+msgid "Today"
+msgstr ""
+
+#: src/views/calendars/CalendarView.vue:185
msgid "My calendars"
msgstr ""
-#: src/views/calendars/CalendarView.vue:104
+#: src/views/calendars/CalendarView.vue:204
msgid "Access rules"
msgstr ""
-#: src/views/calendars/CalendarView.vue:248
+#: src/views/calendars/CalendarView.vue:536
msgid "Do you really want to delete this calendar?"
msgstr ""
-#: src/views/calendars/CalendarView.vue:259
+#: src/views/calendars/CalendarView.vue:546
msgid "Calendar deleted"
msgstr ""
-#: src/views/contacts/AddressBook.vue:3 src/views/contacts/AddressBook.vue:37
+#: src/views/contacts/AddressBook.vue:4 src/views/contacts/AddressBook.vue:41
msgid "Contacts"
msgstr ""
-#: src/views/contacts/AddressBook.vue:54
+#: src/views/contacts/AddressBook.vue:58
msgid "Add a category"
msgstr ""
@@ -2924,7 +3002,7 @@ msgstr ""
msgid "Hide full headers"
msgstr ""
-#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:254
+#: src/views/quarantine/MessageView.vue:201 src/views/webmail/EmailView.vue:267
msgid "Message deleted"
msgstr ""
@@ -2936,35 +3014,39 @@ msgstr ""
msgid "release requests"
msgstr ""
-#: src/views/webmail/EmailView.vue:12
+#: src/views/webmail/EmailView.vue:8
msgid "Reply"
msgstr ""
-#: src/views/webmail/EmailView.vue:19
+#: src/views/webmail/EmailView.vue:15
msgid "Reply all"
msgstr ""
-#: src/views/webmail/EmailView.vue:69
+#: src/views/webmail/EmailView.vue:63
msgid "Enable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:74
+#: src/views/webmail/EmailView.vue:68
msgid "Disable links"
msgstr ""
-#: src/views/webmail/EmailView.vue:78
+#: src/views/webmail/EmailView.vue:72
msgid "Display source"
msgstr ""
-#: src/views/webmail/EmailView.vue:146
+#: src/views/webmail/EmailView.vue:145
+msgid "Message scheduled at:"
+msgstr ""
+
+#: src/views/webmail/EmailView.vue:151
msgid "Message source"
msgstr ""
-#: src/views/webmail/EmailView.vue:268
+#: src/views/webmail/EmailView.vue:281
msgid "Message marked as junk"
msgstr ""
-#: src/views/webmail/EmailView.vue:282
+#: src/views/webmail/EmailView.vue:295
msgid "Message marked as not junk"
msgstr ""
diff --git a/modoboa/locale/br/LC_MESSAGES/django.po b/modoboa/locale/br/LC_MESSAGES/django.po
index 5ac825f75..bb420a67a 100644
--- a/modoboa/locale/br/LC_MESSAGES/django.po
+++ b/modoboa/locale/br/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-06 11:16+0000\n"
"Last-Translator: Antoine Nguyen \n"
"Language-Team: Breton (http://www.transifex.com/tonio/modoboa/language/br/)\n"
@@ -51,14 +51,14 @@ msgid "Cannot be greater than domain quota"
msgstr "N'hall ket bezañ brasoc'h evit kota an domani"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Aotreadur nac'het"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Rekis eo leuniañ ar vaezienn"
@@ -67,7 +67,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "Listenn domanioù meret (eilgwerzherien ha merourien zomani hepken)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Neket aotreet evit ar rol-mañ."
@@ -75,13 +75,12 @@ msgstr "Neket aotreet evit ar rol-mañ."
msgid "Must be equal to mailbox full_address"
msgstr "Rankout a ra bezañ par ouzh boest-postell chomlec'h_klok"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Ar vaezienn-mañ a zo rekiset."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "N'eus ket eus an domani lec'hel {}"
@@ -124,41 +123,41 @@ msgstr "N'hallit ket termeniñ ur c'hota divevenn"
msgid "User '%s' already exists"
msgstr "An implijer \"%s\" a zo anezhañ endeo"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Rankout a ra bezañ un anterin pozitivel"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "n'heller ket kavout openssl, bezit asur emañ staliet."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Neket bet kavet an domani."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Termeniñ da vihanañ ur rouedad / chomlec'h aotreet"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "Ur voest-posteloù a zo rekiset"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -275,19 +274,29 @@ msgstr "Enaouiñ ar gwiriañ DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Gwiriañ a ra kement domani ouzh ar bourvezerien DNSBL pennañ"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Servijer DNS personnel"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Implijit ur servijer DNS e-plas ur c'hefluniadur servijer lec'hel"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Kavlec'h stokiñ an alc'hwezioù DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -297,19 +306,19 @@ msgstr ""
"e vez perc'hennet ar c'havlec'h-mañ gant an implijer gwrizienn ha n'hall ket "
"bezañ lennet gant an dud diavaez."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Ment dre-ziouer un alc'hwez DKIM"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Ment dre-ziouer en oktedoù an alc'hwezioù DKIM ganet."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Kota domani dre-ziouer"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -317,28 +326,28 @@ msgstr ""
"Kota dre-ziouer (e Mo) arloet d'an domanioù krouet hep talvoudegezh spisaet. "
"Un dalvoudegezh 0 a dalvez n'eus kota ebet."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "Kota domani dre-ziouer"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Boest-posteloù"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Merañ ar voest-posteloù war restr-sistem"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -346,11 +355,11 @@ msgstr ""
"Adenvel pe zilemel boest-posteloù war ar restr-sistem pa vezont adanvet pe "
"dilamet diwar Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Kota boest-posteloù dre-ziouer"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created domains with no "
@@ -362,75 +371,75 @@ msgstr ""
"Kota dre-ziouer (e Mo) arloet d'ar voest-posteloù krouet hep talvoudegezh "
"spisaet. Un dalvoudegezh 0 a dalvez n'eus kota ebet."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default mailbox quota"
msgid "Default mailbox sending limit"
msgstr "Kota boest-posteloù dre-ziouer"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Em-dilamadur kont"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Pa vez dilamet ur voest-posteloù, dilamit ur gont kevelet."
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Em-grouidigezh domani/boest-postel"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "Krouit un domani hag ur voest-posteloù pa vez em-grouet ur gont."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Krouiñ un alias pa vez adanvet ur voest-posteloù"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Krouiñ un alias en ur implijout ar chomlec'h pa vez adanvet ar voest-"
"posteloù."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Melestradurezh"
@@ -452,6 +461,39 @@ msgstr ""
msgid "Closed"
msgstr "Serriñ"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain {} has no MX record"
+msgid "Domain has no MX record"
+msgstr "An domani {} n'eus enrolladenn MX ebet gantañ"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "An domani {} n'eus enrolladenn MX ebet gantañ"
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "MX records of {}"
+msgid "Invalid MX record: {}"
+msgstr "Enrolladennoù MX eus {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "An enrolladenn MX evit an domani {0} a zo direizh {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] kudenn(où) MX evit an domani {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] Kudenn(où) DNSBL gant an domani {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "alias an domani"
@@ -474,8 +516,8 @@ msgstr "N'hoc'h ket aotreet da emporzhiañ domanioù"
msgid "You are not allowed to import domain aliases."
msgstr "N'hoc'h ket aotreet da emporzhiañ aliasoù domani."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, fuzzy, python-format
#| msgid "No DNS records found for %s"
msgid "No DNS record found for %s"
@@ -487,11 +529,11 @@ msgstr "Enrolladenn DNS ebet kavet evit %s"
msgid "No %(type)s record for %(name)s"
msgstr "Enrolladenn MX ebet evit %s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "N'eus bet kavet anv servijer ebet hag az afe en-dro"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -548,39 +590,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Enaouiñ ar c'hehentiñ dre API foran Modoboa "
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain {} has no MX record"
-msgid "Domain has no MX record"
-msgstr "An domani {} n'eus enrolladenn MX ebet gantañ"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "An domani {} n'eus enrolladenn MX ebet gantañ"
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "MX records of {}"
-msgid "Invalid MX record: {}"
-msgstr "Enrolladennoù MX eus {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "An enrolladenn MX evit an domani {0} a zo direizh {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] kudenn(où) MX evit an domani {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] Kudenn(où) DNSBL gant an domani {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Neket bet kavet an domani."
@@ -783,17 +792,17 @@ msgstr ""
"Modoboa a zo bet diguzhet gantañ ne oa tamm enrolladenn MX reizh gant an "
"domani %(domain)s:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Enrolladenn MX ebet evit %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Stumm chomlec'h IP direizh evit %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -998,13 +1007,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display details"
msgid "Display"
msgstr "Diskouez ar munudoù"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1288,7 +1297,7 @@ msgstr "Merour an domani"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Aotren an implijer-mañ da vont e boestoù-post an implijerien"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "A-bep seurt"
@@ -1306,11 +1315,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "Neket termenet lec'hiadur ho servijer, reizhit an dra-se mar plij."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1397,7 +1406,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1411,24 +1420,20 @@ msgstr ""
msgid "Local"
msgstr "Lec'hel"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Profil implijer"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Sintaks direizh"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Niveroù ront direizh"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1459,37 +1464,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Postel"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "O vezañ anavezet"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Doare anavezadur"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Drekleur implijet evit bezañ anavezet"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Ger-tremen dre ziouer ar brastres"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Brastres implijet evit enrinegañ gerioù-tremen ar postelerezh"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Troiadoù"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1497,149 +1502,149 @@ msgstr ""
"Niver a droiadoù d'ober ganto (implijet gant sha256crypt ha sha512crypt "
"hepken). Bez' e rank bezañ etre 1000 ha 999999999, e-barzh."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Hizivait ger-tremen an implijer d'ar mare kevreaén evit implijout ar "
"brastres ger-tremen dre-ziouer"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Ger-tremen dre-ziouer"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Ger-tremen dre-ziouer evit ar gontoù em-grouet."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Hirder dre-zegouezh ger-tremen"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Hirder ar gerioù-tremen em-c'hanet."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Hirder ar gerioù-tremen em-c'hanet."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Chomlec'h ar servijer"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "Chomlec'h IP pe anv DNS ar servijer LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Porzh ar servijer"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Niverenn borzh TCP implijet gant ar servijer LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Ober gant ur gevreadenn suraet"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
"Implijit ur gevreadenn SSL/STARTTLS evit gellet tizhout ar servijer LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Kavlec'h oberiant"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Lavarout a ra hag-eñ e vez ar servijer LDAP ur C'havlec'h Oberiant"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Strolladoù merañ"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1647,47 +1652,47 @@ msgstr ""
"Izili ar strolladoù LDAP Posix a vo krouet evel bezañ merourien domani. "
"Implijit an arouezoù ';' evit gellet skejañ ar strolladoù."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Doare ar strollad"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "An doare strollad LDAP da implijout gant ho kavlec'h."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Diazez klask ar strolladoù"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Anv dibar an diaz klask implijet evit kavout strolladoù"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Perzhioù ar ger-tremen"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Ar perzhioù implijet evit stokiñ ar gerioù-tremen implijer"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Doare dilesañ"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Dibabit an doare anavezadur da vezañ implijet"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Liammañ DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1695,29 +1700,29 @@ msgstr ""
"An anv dibar da vezañ implijet evit en em liammañ ouzh ar servijer LDAP. "
"Lezel goullo evit un liamm dizanv."
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Liammañ ur ger-tremen"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Ar ger-tremen d'ober gantañ evit kevreañ ouzh ar servijer LDAP (gant "
"'kevreadenn DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Diazez enklask an implijerien"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Anv dibar an diaz enklask implijet evit kavout implijerien"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Sil klask"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1725,11 +1730,11 @@ msgstr ""
"Ur chadenn sil diret (d.sk. '(objedKlas = person)'). Evit bezañ reizh, e "
"rank bezañ enklozet etre krommelloù."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Patrom implijer DN"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1738,236 +1743,236 @@ msgstr ""
"Ar skouer implijet evit sevel DN un implijer. Rankout a rafe enderc'hel ur "
"spas miret (d.l.e %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Taolenn-stur"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom RSS feed"
msgid "Custom welcome message"
msgstr "Froud RSS personel"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Froud RSS personel"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Diskouez froudoù RSS personnel d'an eilgwerzherien ha merourien an domani"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Diskouez froudoù RSS personnel d'an eilgwerzherien ha merourien an domani"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Diskouez froudoù RSS personnel d'an eilgwerzherien ha merourien an domani"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Kuzhat an arc'hweladurioù objed"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Kuzhat an arc'hweladurioù objed d'an eilgwerzherien ha merourien an domani"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Eil chomlec'h postel"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Kemennadennoù"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Chomlec'h ar c'haser"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Chomlec'h postel implijet da gas kemmennoù."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "API foran"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Enaouiñ ar c'hehentiñ"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Em-wiriañ ma vez ur stumm nevez hegerz"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Klask stummoù nevez"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Kas statistikoù"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Kas ar statistikoù da API foran Modoboa (kontourioù hag an astennoù "
"impliljet)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Treuzoù ar c'hontoù dioberiant"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Treuzoù ar c'hontoù dioberiant"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1975,46 +1980,38 @@ msgstr ""
"Ur gont gant un deiziad kevreañ koshoc'h evit an treuzoù-se (e devezhioù) a "
"vo kontet evel bezañ dioberiant"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Padelezh etre ar c'hemennoù gwiriañ pennañ"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Padelezh etre div gwiriadenn gemennoù pennañ (en eilennoù)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Oad enrollañ maksimom ar marilhoù"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Oad brasañ e devezhioù un enrollodenn renabl"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Elfennoù dre bajenn"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Niver a elfennoù diskouezet dre bajenn"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Adhenchañ pennañ dre-ziouer"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "An adheñchañ dre-ziouer implijet pa n'eus arload ebet spisaet"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2368,7 +2365,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Hini ebet"
@@ -3337,7 +3334,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Sujed"
@@ -3598,24 +3595,24 @@ msgstr ""
msgid "SMTP settings"
msgstr "Arventennoù LDAP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Ober gant ur gevreadenn suraet"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr ""
"Implijit ur gevreadenn SSL/STARTTLS evit gellet tizhout ar servijer LDAP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3630,113 +3627,119 @@ msgstr "Doare dilesañ"
msgid "Server needs authentication"
msgstr "Doare dilesañ"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "DNS settings"
+msgid "Scheduling settings"
+msgstr "Arventennoù DNS"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "An adheñchañ dre-ziouer implijet pa n'eus arload ebet spisaet"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
#, fuzzy
#| msgid "Create aliases"
msgid "Folders"
msgstr "Krouiñ aliasoù"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
#, fuzzy
#| msgid "Create aliases"
msgid "Trash folder"
msgstr "Krouiñ aliasoù"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
#, fuzzy
#| msgid "Create aliases"
msgid "Sent folder"
msgstr "Krouiñ aliasoù"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts folder"
msgstr "Krouiñ aliasoù"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Create aliases"
msgid "Junk folder"
msgstr "Krouiñ aliasoù"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "Message"
msgid "Composing messages"
msgstr "Kemennadenn"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Adhenchañ pennañ dre-ziouer"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "An adheñchañ dre-ziouer implijet pa n'eus arload ebet spisaet"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3751,47 +3754,72 @@ msgstr "Chomlec'h ar servijer"
msgid "Failed to remove attachment: "
msgstr "N'heller ket adsevel lec'hiadur ar voest-posteloù (%s)"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Deiziad"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "Message"
msgid "Original message"
msgstr "Kemennadenn"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts"
msgstr "Krouiñ aliasoù"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Profil implijer"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Adhenchañ pennañ dre-ziouer"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr "An adheñchañ dre-ziouer implijet pa n'eus arload ebet spisaet"
diff --git a/modoboa/locale/cs/LC_MESSAGES/django.po b/modoboa/locale/cs/LC_MESSAGES/django.po
index e58475127..727067fea 100644
--- a/modoboa/locale/cs/LC_MESSAGES/django.po
+++ b/modoboa/locale/cs/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-11 18:45+0000\n"
"Last-Translator: Tydýt _, 2023\n"
"Language-Team: Czech (https://www.transifex.com/tonio/teams/13749/cs/)\n"
@@ -45,14 +45,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -61,7 +61,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -69,13 +69,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -116,39 +115,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -240,141 +239,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -394,6 +403,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -416,8 +454,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -427,11 +465,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -483,35 +521,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -688,17 +697,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -867,11 +876,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1116,7 +1125,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1134,11 +1143,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1217,7 +1226,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1229,24 +1238,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1271,525 +1276,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2122,7 +2119,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3002,7 +2999,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3228,19 +3225,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3252,95 +3249,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3354,43 +3355,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr "Nepodařilo se vytvořit LDAT účet: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/cs_CZ/LC_MESSAGES/django.po b/modoboa/locale/cs_CZ/LC_MESSAGES/django.po
index 0833fb493..34fbd807f 100644
--- a/modoboa/locale/cs_CZ/LC_MESSAGES/django.po
+++ b/modoboa/locale/cs_CZ/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-06 11:16+0000\n"
"Last-Translator: Antoine Nguyen \n"
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/tonio/"
@@ -49,14 +49,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Nemůže být vyšší než kvóta domény"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Přístup zamítnut."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Toto pole je vyžadováno"
@@ -65,7 +65,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "Zobrazit spravované domény (jenom distributori a správci domén)"
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Není povoleno pro tuto roli."
@@ -73,13 +73,12 @@ msgstr "Není povoleno pro tuto roli."
msgid "Must be equal to mailbox full_address"
msgstr "Musí být rovno hodnote schránky celá_adresa"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Toto pole je vyžadováno."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Lokální doména {} neexistuje"
@@ -122,41 +121,41 @@ msgstr "Neomezená kvóta nelze definovat."
msgid "User '%s' already exists"
msgstr "Uživatel '%s' již existuje"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Musí se jednat o kladné číslo"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl nenalezeno, prosím ujistěte se, že je nainstalováno."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Složka nenalezena."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Definujte alespoň jednu autorizovanou síť / adresu"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "Schránka je vyžadována"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -272,19 +271,29 @@ msgstr "Povolit DNSBL kontroly"
msgid "Check every domain against major DNSBL providers"
msgstr "Ověřit každou doménu vůči hlavním DNSBL providerům"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Vlastní DNS server"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Místo konfigurace lokálního serveru použijte vlastní server DNS"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Složka pro uložení DKIM klíčů"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -294,19 +303,19 @@ msgstr ""
"se, že vytvořená složka patří uživateli root a není možné z ní číst okolním "
"světem."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Výchozí délka DKIM klíče"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Výchozí délka v bitech pro nově vygenerované DKIM klíče."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Výchozí kvóta domény"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -314,28 +323,28 @@ msgstr ""
"Výchozí kvóta (v MB), které se použije u nově vytvořených domén bez uvedené "
"hodnoty kvóty. Hodnota 0 znamená, že se kvóta nepoužívá."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "Výchozí kvóta domény"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Schránky"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Spravovat schránky v souborovém systému"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -343,11 +352,11 @@ msgstr ""
"Přejmenovat nebo odstranit schránky v souborovém systému, pokud jsou "
"přejmenovány nebo odstraněny v Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Výchozí kvóta schránky"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created domains with no "
@@ -360,75 +369,75 @@ msgstr ""
"které nemají specifikovanou vlastní hodnotu. Hodnota 0 znamená neomezenou "
"kvótu."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default mailbox quota"
msgid "Default mailbox sending limit"
msgstr "Výchozí kvóta schránky"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Automatické odstranění účtu"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Když je schránka odstraněná, odstranit také přiřazený účet uživatele"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Automatické vytvoření domény/schránky"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "Při založení účtu automaticky vytvořit doménu a schránku."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Vytvořit alias, pokud je mailová schránka přejmenována"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Vytvořit alias použitím původní adresy, pokud je mailová schránka "
"přejmenována."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Správa"
@@ -450,6 +459,39 @@ msgstr ""
msgid "Closed"
msgstr "Zavřít"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain {} has no MX record"
+msgid "Domain has no MX record"
+msgstr "Doména {} nemá MX záznam"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Doména {} nemá MX záznam"
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "MX records of {}"
+msgid "Invalid MX record: {}"
+msgstr "MX záznamy pro {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "MX záznam pro doménu {0} je neplatný: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX problém(y) pro doménu {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL problém(y) pro doménu {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "doménový alias"
@@ -472,8 +514,8 @@ msgstr "Nemáte oprávnění pro import domén"
msgid "You are not allowed to import domain aliases."
msgstr "Nemáte oprávnění pri import doménových aliasů"
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, fuzzy, python-format
#| msgid "No DNS records found for %s"
msgid "No DNS record found for %s"
@@ -485,11 +527,11 @@ msgstr "Nenalezeny žádné DNS záznamy pro %s"
msgid "No %(type)s record for %(name)s"
msgstr "Žádný MX záznam pro %s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Nenalezeny žádné funkční DNS servery"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "Vypršel časový limit DNS požadavku, nelze získat %s v tuto chvíli"
@@ -543,39 +585,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Povolit komunikaci s veřejným Modoboa API rozhraním"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain {} has no MX record"
-msgid "Domain has no MX record"
-msgstr "Doména {} nemá MX záznam"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Doména {} nemá MX záznam"
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "MX records of {}"
-msgid "Invalid MX record: {}"
-msgstr "MX záznamy pro {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "MX záznam pro doménu {0} je neplatný: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX problém(y) pro doménu {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL problém(y) pro doménu {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Doména nebyla nalezena."
@@ -772,17 +781,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr "Modoboa zjistilo, že doména %(domain)s nemá platný MX záznam:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Žádný MX záznam pro %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Neplatný formát IP adresy pro %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -986,13 +995,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display details"
msgid "Display"
msgstr "Zobrazení"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1286,7 +1295,7 @@ msgstr "Správce domény"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Povolit správci přístup do uživatelských poštovních schránek"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Různé"
@@ -1304,11 +1313,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1393,7 +1402,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1407,24 +1416,20 @@ msgstr ""
msgid "Local"
msgstr "Lokální"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Uživatelský profil"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Neplatná syntaxe"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Neplatný počet cyklů"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1455,37 +1460,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Ověření"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Typ ověření"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Rozhraní pro ověřování přístupu"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Výchozí schéma hesel"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Použité schéma pro šifrování hesel schránek"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Počet cyklů"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1493,147 +1498,147 @@ msgstr ""
"Počet cyklů (použije se pouze u sha256crypt a sha512crypt). Hodnota musí být "
"mezi 1000 a 999999999 včetně."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr "Zadejte nové heslo pro užití nového typu hesla"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Výchozí heslo"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Výchozí heslo pro automaticky vytvořené účty."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Délka náhodného hesla"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Počet znaků náhodně vygenerovaných hesel."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Počet znaků náhodně vygenerovaných hesel."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Adresa serveru"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "IP adresa DNS jména LDAP serveru"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Port serveru"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Port TCP, který používá LDAP server"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Použít zabezpečené připojení"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Použít SSL/STARTTLS připojení pro přístup k LDAP serveru"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
"Volba určující, jestli je nebo není LDAP server serverem Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Správcovské skupiny"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1641,47 +1646,47 @@ msgstr ""
"Členové těchto LDAP Posix skupin budou automaticky vytvořeni jako správci "
"domény. Pro oddělení skupin použijte ';'."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Typ skupiny"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Typ LDAP skupiny "
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Základna struktury skupin"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Rozlišovací jméno základny struktury používané pro hledání skupin"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atribut hesla"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Atribut používaný pro ukládání hesel uživatelů"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Metoda ověření"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Zvolte si metodu ověření, která se použije"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Spojení pomocí DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1689,29 +1694,29 @@ msgstr ""
"Rozlišovací jméno, které se použije při spojování s LDAP serverem. "
"Ponechejte prázdné pro anonymní spojení."
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Heslo spojení"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Heslo, které se použije při spojování s LDAP serverem (při výběru DN "
"spojení)."
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Základna struktury uživatelů"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Rozlišovací jméno základny struktury používané pro hledání uživatelů"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Vyhledávací filtr"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1719,11 +1724,11 @@ msgstr ""
"Volitelný filtr (např. '(objectClass=osoba)'). Aby byl filtr platný, je "
"nezbytné jen uzavřít do závorek."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Šablona uživatelského DN"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1732,234 +1737,234 @@ msgstr ""
"Šablona použitá pro tvorbu uživatelského rozlišovacího jména (DN). Měla by "
"obsahovat jeden zástupný řetězec (tj. %(user)s)."
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Plocha"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Vlastní zpráva"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid "A custom message that will appear at the end of documents"
msgid "A welcome message that will be displayed instead the default one"
msgstr "Vlastní zpráva, která se zobrazí na konci dokumentu."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Vlastní RSS zdroj"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr "Zobrazit vlastní RSS zdroj distributorům a správcům domény"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr "Zobrazit vlastní RSS zdroj distributorům a správcům domény"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr "Zobrazit vlastní RSS zdroj distributorům a správcům domény"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Skrýt widget funkcí"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Skrýt widget funkcí pro distributory a správce domény"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Sekundární email"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Oznámení"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Adresy odesílatele"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Emailová adresa používaná k zasílání upozornění"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Veřejné API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Povolit komunikaci"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Automaticky kontrolovat dostupnost nové verze"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Zkontrolovat verzi"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Příjemce"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Odoslat statistiky"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Zasílat statistické údaje na veřejné Modoboa API rozhraní (počítadla a "
"použité rozšíření)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Počet dnů pro neaktivní účet"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Počet dnů pro neaktivní účet"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1967,48 +1972,38 @@ msgstr ""
"Účet s datem posledního přihlášení starším než práh (ve dnech) bude "
"považován za neaktivní"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Interval aktualizací upozornění"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Interval mezi aktualizacemi upozornění na stránce (v sekundách)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maximální stáří záznamu"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Maximální stáří záznamu ve dnech"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Položek na stránce"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Počet zobrazených položek na stránce"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Výchozí přesměrování aplikace"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Výchozí přesměrování, které se použije, pokud není žádná aplikace "
-"specifikována"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2351,7 +2346,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Nic"
@@ -3344,7 +3339,7 @@ msgstr "je"
msgid "is not"
msgstr "není"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Předmět"
@@ -3605,25 +3600,25 @@ msgstr ""
msgid "SMTP settings"
msgstr "Nastavení SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Adresa vašeho SMTP serveru"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Režim zabezpečeného připojení"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use a secured connection to access IMAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Použít zabezpečené připojení pro přístup k SMTP serveru"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3640,109 +3635,115 @@ msgstr "Ověření vyžadováno"
msgid "Server needs authentication"
msgstr "Server vyžaduje ověření"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Connection settings"
+msgid "Scheduling settings"
+msgstr "Nastavení ManageSieve"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Výchozí režim zobrazení zprávy"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "Výchozí režim, který se použije pro zobrazení zprávy"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Povolit zobrazení HTML odkazů"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Povolit/Zakázat zobrazení HTML odkazů"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Nastavuje maximální počet zobrazených zpráv na stránce"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Automatické obnovení stránky"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Šířka kontejneru složky"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "Šířka kontejneru seznamu složek"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Složky"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Složka koše"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "Složka pro smazané zprávy"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Složka odeslané pošty"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Složka pro kopie odeslaných zpráv"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Složka konceptů"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Složka pro koncepty zpráv"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Sent folder"
msgid "Junk folder"
msgstr "Složka pro spam"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "Složka, kam by měly být přesunuty spamové zprávy"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Vytváření zpráv"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Výchozí editor"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "Výchozí editor textu, který se použije pro vytváření zpráv"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Text podpisu"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Emailový podpis uživatele"
@@ -3758,47 +3759,74 @@ msgstr "Adresa serveru"
msgid "Failed to remove attachment: "
msgstr "Nebylo možné odstranit přílohu:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Datum"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Všechny zprávy"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Nebylo možné zjistit hierarchický oddělovač"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Doručená pošta"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Drafts folder"
msgid "Drafts"
msgstr "Koncepty"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "Nevyžádaná pošta"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Odeslaná pošta"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Koš"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Příloha je příliš velká (omezení: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Uživatelský profil"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Výchozí přesměrování aplikace"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Výchozí přesměrování, které se použije, pokud není žádná aplikace "
+#~ "specifikována"
diff --git a/modoboa/locale/de/LC_MESSAGES/django.po b/modoboa/locale/de/LC_MESSAGES/django.po
index b137e0542..14e9618ea 100644
--- a/modoboa/locale/de/LC_MESSAGES/django.po
+++ b/modoboa/locale/de/LC_MESSAGES/django.po
@@ -52,7 +52,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: Gerhard Adler , 2025\n"
"Language-Team: German (http://app.transifex.com/tonio/modoboa/language/de/)\n"
@@ -90,14 +90,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Kann nicht größer als Domain Kontingent sein"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Zugriff verweigert."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
@@ -107,7 +107,7 @@ msgid ""
msgstr ""
"Liste der verwalteten Domains (nur für Reseller und Domain Administratoren)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Nicht erlaubt für diese Rolle."
@@ -115,13 +115,12 @@ msgstr "Nicht erlaubt für diese Rolle."
msgid "Must be equal to mailbox full_address"
msgstr "Muss mit mailbox full_address übereinstimmen"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Dieses Feld ist erforderlich"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Lokale Domain {} existiert nicht."
@@ -162,41 +161,41 @@ msgstr "Ein unlimitiertes Kontingent ist nicht möglich."
msgid "User '%s' already exists"
msgstr "Benutzer %s existiert bereits"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Muss eine positive Ganzzahl sein"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl nicht gefunden, bitte sicherstellen, dass es installiert ist"
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Verzeichnis nicht gefunden."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "Dieses Feld erlaubt nur gültige IP-Adressen (oder Netzwerke)"
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr "Bitte IMAP Migration deaktivieren bevor Sie diese Option deaktivieren."
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Mindestens ein authorisiertes Netzwerk/IP-Adresse muss definiert sein"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
"Der linke Teil einer E-Mail-Adresse darf nicht mehr als 64 Zeichen lang "
"sein. "
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "Zum Erstellen von Aliassen ist ein Postfach erforderlich."
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr "Unbekannter Status"
@@ -292,19 +291,29 @@ msgstr "Aktiviere DNSBL-Prüfungen"
msgid "Check every domain against major DNSBL providers"
msgstr "Prüfe jede Domain gegen die wichtigsten DNSBL-Anbieter"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Benutzerdefinierter DNS Server"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "eigener DNS-Server umgeht die lokale Namensauflösung"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Verzeichnis für DKIM-Keys"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -313,19 +322,19 @@ msgstr ""
"Absoluter Pfad des Verzeichnisses zur Aufbewahrung von DKIM-Keys. Das "
"Verzeichnis sollte nur dem root-User zugänglich sein."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "voreingestellte DKIM Schlüssellänge"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Voreingestellte Länge in Bits neu zu generierender DKIM-Keys."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Standard-Domainquota"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -333,11 +342,11 @@ msgstr ""
"Standardquota (in MB) für neu erstelle Domains ohne explizite Wertangabe. "
"Der Wert 0 bedeutet „Keine Quota“"
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Standard Domänen-Sendelimit"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -345,16 +354,16 @@ msgstr ""
"Anzahl der Nachrichten, die neu erstellte Domänen pro Tag senden dürfen. "
"Leer lassen für kein Limit."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "E-Mail-Postfächer"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Postfächer im Dateisystem verwalten"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -362,11 +371,11 @@ msgstr ""
"Postfächer auch im Dateisystem umbenennen oder entfernen wenn sie in Modoboa "
"umbenannt oder entfernt werden"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Standard Postfach Kontingent"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
@@ -375,11 +384,11 @@ msgstr ""
"Angabe eines Wertes angewendet wird. Ein Wert von 0 bedeutet keine "
"Begrenzung."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Standard-Postfach-Versandlimit"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -387,64 +396,64 @@ msgstr ""
"Anzahl der Nachrichten, die neu erstellte Postfächer pro Tag senden dürfen. "
"Leer lassen für keine Begrenzung."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Automatische Konto-Entfernung"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Beim Löschen des Postfachs auch das Konto entfernen."
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Automatische Domain- /Postfach-Erstellung"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Erstelle eine Domain und ein Postfach, wenn ein Konto automatisch erstellt "
"wurde."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Erzeuge Alias, wenn Mailbox umbenannt wird."
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Erzeuge Alias mit der bisherigen Adresse, wenn ein Postfach umbenannt wurde."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "Alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Verwaltung"
@@ -464,6 +473,35 @@ msgstr "Geöffnete"
msgid "Closed"
msgstr "Geschlossen"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} gelistet durch DNSBL-Anbieter {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Die Domain hat kein MX-Eintrag"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Domain {} hat keinen MX-Eintrag"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Falscher MX-Eintrag: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "MX-Eingrag für Domain {0} ist ungültig: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX Problem(e) für Domain {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL Problem(e) für Domain {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "Domain-Alias"
@@ -487,8 +525,8 @@ msgid "You are not allowed to import domain aliases."
msgstr ""
"Sie verfügen nicht über ausreichend Rechte, um Domain Aliase zu importieren."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Kein DNS Eintrag für %s gefunden"
@@ -498,11 +536,11 @@ msgstr "Kein DNS Eintrag für %s gefunden"
msgid "No %(type)s record for %(name)s"
msgstr "Kein %(type)s Eintrag für %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Keine funktionierenden Namensserver gefunden"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "DNS Error bei der Auflösung, konnte %s nicht auflösen"
@@ -556,35 +594,6 @@ msgstr "Der private DKIM-Schlüssel konnte nicht erzeugt werden"
msgid "Failed to generate DKIM public key"
msgstr "Der öffentliche DKIM-Schlüssel konnte nicht erzeugt werden"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} gelistet durch DNSBL-Anbieter {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Die Domain hat kein MX-Eintrag"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Domain {} hat keinen MX-Eintrag"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Falscher MX-Eintrag: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "MX-Eingrag für Domain {0} ist ungültig: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX Problem(e) für Domain {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL Problem(e) für Domain {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domain nicht gefunden."
@@ -776,17 +785,17 @@ msgstr ""
"Modoboa hat erkannt, dass für die Domain %(domain)s kein valider MX Eintrag "
"vorliegt:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Kein MX Eintrag für %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Ferhlerhaftes IP-Adressformat für %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr "Kein AAAA-Eintrag für %s"
@@ -998,11 +1007,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "Darstellung"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr "Anzahl dargestellter Nachrichten pro Seite"
@@ -1281,7 +1290,7 @@ msgstr ""
"Domänenadministratoren erlauben, Benutzerkalender zu verwalten (Lesen und "
"Schreiben)"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Verschiedenes"
@@ -1301,12 +1310,12 @@ msgstr ""
msgid "Calendars"
msgstr "Kalender"
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
"Der Serverstandort ist nicht festgelegt. Bitte beheben Sie das Problem."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr "Hochgeladene Datei ist zu groß (max: {} Bytes)"
@@ -1389,7 +1398,7 @@ msgstr ""
"Fehlgeschlagener Versuch die TFA-Einstellungen von '%(addr)s' als Benutzer "
"'%(user)s' zu bearbeiten"
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr "Ungültiges Passwort"
@@ -1401,24 +1410,20 @@ msgstr "2-Faktor-Authentifizierung ist nicht aktiviert"
msgid "Local"
msgstr "Lokal"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Benutzername"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Ungültiger Syntax"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Ungültige Zahl für Runden"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Dieser Code ist Falsch"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
"Bitte benutze den folgenden Code um das Modoboa Passwort wiederherzustellen: "
@@ -1447,35 +1452,35 @@ msgid "Calendar"
msgstr "Kalender"
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Authentifizierung"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Authentifizierungstyp"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Backend für die Authentifizierung"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Standard-Passwortschema"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Verschlüsselungsschema der Postfach-Passwörter"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Runden"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1483,45 +1488,45 @@ msgstr ""
"Anzahl zu verwendender Runden (nur für sha256crypt und sha512crypt). Zahl "
"muss zwischen 1000 und 999999999 liegen."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Aktualisiere das Passwortschema beim Anmelden"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Aktualisieren Sie das Benutzerkennwort bei der Anmeldung, um das Standard-"
"Passwortschema zu verwenden."
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Standardpasswort"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Standardpasswort für automatisch erstellte Accounts."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Zufällige Passwortlänge"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Länge von zufällig generierten Passwörtern"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr "Sonderzeichen für zufällige Passwörter zulassen"
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr "Sonderzeichen in zufällig generierten Passwörtern aktivieren."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Aktualisiere Passwort-Service-URL"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1531,107 +1536,107 @@ msgstr ""
"Diese Einstellung trifft nur auf nicht lokale Benutzer zu, z.B: Benutzer die "
"nach erfolgreicher externer Authentifizierung angelegt wurden (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Ankündigung zur Passwort-Wiederherstellung"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
"Eine temporäre Nachricht, die auf der Passwort-Wiederherstellungsseite "
"angezeigt wird."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Aktiviere die Passwortwiederherstellung per SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Aktiviere die Passwortwiederherstellung per SMS für Benutzer mit einer "
"Telefonnummer."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS Anbieter"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Wähle einen Anbieter für das verschicken der Wiederherstellungs-SMS"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr "LDAP"
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Server-Adresse"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "IP-Adresse oder Hostname des LDAP-Servers"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Server-Port"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Der TCP Port des LDAP-Servers"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Aktiviere Ausfallsserver (Fallback)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Aktiviere einen zweiten LDAP-Server, welcher verwendet wird, wenn der erste "
"nicht erreichbar ist"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Ausfallsserver-Adresse"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "Die IP-Adresse oder den DNS-Namen des zweiten LDAP-Servers"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Ausfallsserver-Port"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Der TCP Port des sekundären LDAP-Servers"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Benutze eine sichere Verbindung"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "SSL/TLS-Verbindung für Zugriff auf LDAP-Server verwenden"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Auswählen wenn der LDAP-Server ein Active Directory ist."
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Administrator-Gruppen"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1639,75 +1644,75 @@ msgstr ""
"Mitglieder dieser LDAP Posix-Gruppe werden als Domain-Administratoren "
"angelegt werden. Nutzen Sie ';', um Gruppen zu separieren."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Gruppentyp"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
"Der LDAP Gruppentyp welcher mit diesem Verzeichnis benutzt werden soll."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Gruppen Search Base"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Der DN der Search Base mit der Gruppen gefunden werden"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Passwort-Attribut"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Das Attribut für Benutzerpasswörter"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP Authentifizierungseinstellungen"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Authentifizierungsmethode"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Wählen Sie die Authentifizierungsmethode"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Bind DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
"Der DN für einen Bind an den LDAP-Server. Nichts eingeben für anonymen Bind."
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Bind Passwort"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr "Das Passwort wenn mit dem Bind DN angemeldet wird."
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Benutzer Search Base"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Der DN der Search Base mit der Benutzerkonten gefunden werden"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Suchfilter"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1715,11 +1720,11 @@ msgstr ""
"Ein optionaler Filter, z.B. '(objectClass=person)'. Der Filter muss "
"entsprechend der LDAP-Konvention in Klammern gesetzt werden."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Vorlage für User DN"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1728,26 +1733,26 @@ msgstr ""
"Die Vorlage für einen User DN. Sie sollte einen Platzhalter, z.B. %(user)s "
"enthalten."
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP Synchronisations Einstellungen"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Export zu LDAP aktivieren"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Automatische Synchronisation zwischen lokaler Datenbank und LDAP Verzeichnis "
"aktivieren"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Remote LDAP Benutzer entfernen wenn lokaler Benutzer gelöscht wird"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1755,11 +1760,11 @@ msgstr ""
"Remote LDAP Benutzer löschen wenn lokaler Benutzer gelöscht wird, ansonsten "
"wird der Benutzer deaktiviert."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Vorlage für User DN"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1768,92 +1773,92 @@ msgstr ""
"Die Vorlage die verwendet wird um das User DN zu generieren. Es sollte "
"mindestens einen Platzhalter beinhalten (z.B. %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Import von LDAP aktivieren"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
"Automatische Kontensynchronisation vom LDAP Verzeichnis in die lokale "
"Datenbank aktivieren"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Benutzernamenattribut"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Das LDAP-Attribut, in dem der Benutzername gefunden werden kann."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Dovecot LDAP-Synchronisation aktivieren"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
"LDAP-Authentifizierungseinstellungen werden auf die Dovecot-Konfiguration "
"angewendet."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP-Konfigurationsdatei"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Speicherort der Dovecot-Konfigurationsdatei für LDAP-Einstellungen."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Dashboard"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr "Individuelle Willkommensnachricht"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
"Eine Willkommensnachricht, die anstelle der Standardnachricht angezeigt wird"
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Benutzerdefinierter RSS Feed"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Zeige benutzerdefinierten RSS-Feed für Wiederverkäufer und Domain-"
"Administratoren."
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr "Superadmin individuellen RSS Feed anzeigen"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr "Individuellen RSS Feed auch für Superadmins anzeigen"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Verberge Funktionen Werkzeug"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Verberge Funktionen Werkzeug für Wiederverkäufer und Domain-Administratoren."
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr "Theme"
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr "Primäre Themefarbe"
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
@@ -1861,23 +1866,23 @@ msgstr ""
"Primärfarbe des Themes (Hexadezimalcode), wird z.B. als Hintergrundfarbe des "
"linken Menüs verwendet"
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr "Primäre Themefarbe (helle Version)"
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr "Primärfarbe des Themes (Hexadezimalcode)"
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr "Primäre Themefarbe (dunklere Version)"
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr "Sekundäre Themefarbe"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
@@ -1885,75 +1890,75 @@ msgstr ""
"Sekundärfarbe des Themes (Hexadezimalcode), wird z.B. als Hintergrundfarbe "
"einiger Buttons verwendet"
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr "Etikettentheme Farbe"
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr "Themefarbe für Etiketten (Hexadezimalcode)"
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Absenderadresse"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "E-Mail Adresse für das Senden von Benachrichtigungen."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Öffentliche API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Verbindung aktivieren"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Prüft automatisch ob eine neuere Version verfügbar ist."
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Prüfe auf neue Versionen"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Sende eine Email wenn eine neue Version gefunden wurde"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
"Sende eine Email um die Administratoren über eine neue Version zu "
"benachrichtigen"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Empfänger"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Empfänger für die Benachrichtigungsemail für eine neue Version"
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Sende Statistiken"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Statistiken über die Modoboa public API senden (Zähler und Nutzungs "
"Erweiterungen)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr "Verfolgung inaktiver Konten aktivieren"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
@@ -1962,11 +1967,11 @@ msgstr ""
"festzulegen, ab dem ein Konto als inaktiv gilt, wenn sich der Benutzer nicht "
"angemeldet hat."
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Schwellwert für inaktive Konten"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1974,46 +1979,38 @@ msgstr ""
"Ein Konto mit einem Datum des letzten Logins, das größer als dieser "
"Schwellenwert ist (in Tagen), wird als inaktiv betrachtet."
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Benachrichtigungs-Prüfintervall"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervall zwischen zwei Benachrichtigungsprüfungen (in Sekunden)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maximales Alter für Log-Einträge"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Das maximale Alter eines Log-Eintrags (in Tagen)"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr "Aufbewahrungsdauer im Nachrichtenverlauf"
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr "Aufbewahrungszeit (in Tagen) einer Nachricht im Nachrichtenverlauf"
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Einträge pro Seite"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Anzahl dargestellter Einträge pro Seite"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Standardumleitung"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "Die Standardumleitung wenn kein Programm angegeben wurde"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2354,7 +2351,7 @@ msgid "Not resolved"
msgstr "Nicht aufgelöst"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Nichts"
@@ -3302,7 +3299,7 @@ msgstr "ist"
msgid "is not"
msgstr "ist nicht"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Betreff"
@@ -3546,19 +3543,19 @@ msgstr "Maximale Größe für Anhänge in Bytes (oder KB, MB, GB wenn angegeben)
msgid "SMTP settings"
msgstr "SMTP-Einstellungen"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr "Adresse Ihres SMTP-Servers"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "Gesicherter Verbindungsaufbau"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr "Gesicherte Verbindung für Zugriff auf SMTP-Server verwenden"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr "Port auf dem der SMTP-Server lauscht"
@@ -3570,97 +3567,103 @@ msgstr "Anmeldung erforderlich"
msgid "Server needs authentication"
msgstr "Server erfordert Authentifizierung"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Server settings"
+msgid "Scheduling settings"
+msgstr "Server Einstellungen"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Standard-Betrachtungsmodus für Nachrichten"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr "Der Standard-Modus zum Betrachten einer Nachricht"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Aktiviere Darstellung von HTML-Links"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Aktiviere/Deaktiviere Darstellung von HTML-Links"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
"Legt die maximale Anzahl von Nachrichten fest, die auf einer Seite "
"dargestellt werden"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Aktualisierungsintervall für Liste"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr "AutoAktualisier Rate der Auflistung (in Sekunden)"
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Breite des Postfachcontainers"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "Die Breite der Postfach-Liste"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Verzeichnisse"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Papierkorb"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Ordner, in dem gelöschte Nachrichten abgelegt werden"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Gesendete Nachrichten"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Ordner, in den Kopien gesendeter Nachrichten gehen"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Entwürfe"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Ordner für Entwürfe"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "Junk Ordner"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "Ordner, in den Junk-Nachrichten gehen sollten"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr "Nachrichten erstellen"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr "Standard-Editor"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr "Der Standard-Editor zum Erstellen einer Nachricht"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Signatur"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Benutzerdefinierte E-Mail-Signatur"
@@ -3672,43 +3675,68 @@ msgstr "Server-Antwort"
msgid "Failed to remove attachment: "
msgstr "Konnte Anhang nicht entfernen:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr "schrieb:"
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Datum"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr "Ursprüngliche Nachricht"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Hierarchietrennzeichen konnte nicht abgerufen werden"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Posteingang"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "Entwürfe"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "SPAM"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Gesendet"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Papierkorb"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Anhang ist zu groß (Limit: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Benutzername"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Standardumleitung"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr "Die Standardumleitung wenn kein Programm angegeben wurde"
diff --git a/modoboa/locale/de_DE/LC_MESSAGES/django.po b/modoboa/locale/de_DE/LC_MESSAGES/django.po
index 0339ba336..cea177b40 100644
--- a/modoboa/locale/de_DE/LC_MESSAGES/django.po
+++ b/modoboa/locale/de_DE/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: bdaniel93, 2023\n"
"Language-Team: German (Germany) (http://www.transifex.com/tonio/modoboa/"
@@ -46,16 +46,16 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
#, fuzzy
#| msgid "Permission denied"
msgid "Permission denied."
msgstr "Zugriff verweigert"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
@@ -66,7 +66,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "Funktionen-Widget für Reseller und Domain-Administratoren ausblenden"
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -74,15 +74,14 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
#, fuzzy
#| msgid "This field is required"
msgid "This field is required."
msgstr "Dieses Feld ist erforderlich"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -125,39 +124,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown tag {}"
msgid "Unknown status"
@@ -267,145 +266,155 @@ msgstr "API-Zugriff aktivieren"
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
#, fuzzy
#| msgid "Custom RSS feed"
msgid "Custom DNS server"
msgstr "Benutzerdefinierter RSS-Feed"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr ""
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr ""
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Automatic account removal"
msgstr "Schwellwert für inaktive Konten"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
#, fuzzy
#| msgid "Administrator groups"
msgid "Administration"
@@ -431,6 +440,39 @@ msgstr ""
msgid "Closed"
msgstr "Schließen"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Not an SPF record"
+msgid "Domain has no MX record"
+msgstr "Kein SPF-Eintrag"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "Invalid code"
+msgid "Invalid MX record: {}"
+msgstr "Ungültiger Code"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -453,8 +495,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -464,11 +506,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -523,39 +565,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Aktivieren Sie die Kommunikation mit der öffentlichen API von Modoboa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Not an SPF record"
-msgid "Domain has no MX record"
-msgstr "Kein SPF-Eintrag"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "Invalid code"
-msgid "Invalid MX record: {}"
-msgstr "Ungültiger Code"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -751,17 +760,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No mechanism found"
msgid "No AAAA record for %s"
@@ -965,11 +974,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1246,7 +1255,7 @@ msgstr "Domain-Administrator"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Gewähren Sie diesem Administrator Zugriff auf Benutzerpostfächer"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Verschiedenes"
@@ -1264,11 +1273,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1353,7 +1362,7 @@ msgstr "2FA ist bereits aktiviert"
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1367,24 +1376,20 @@ msgstr "2FA ist nicht aktiviert"
msgid "Local"
msgstr "Lokal"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Benutzerprofil"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Ungültige Syntax"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Ungültige Anzahl Runden"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Dieser Code ist ungültig"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
"Bitte verwenden Sie den folgenden Code, um Ihr Modoboa-Passwort "
@@ -1415,35 +1420,35 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Authentifizierung"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Authentifizierungstyp"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Das Backend für Authentifizierung"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Voreingestelltes Passwort-Schema"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Schema zur Verschlüsselung von Postfach-Passwörtern"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Runden"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1451,47 +1456,47 @@ msgstr ""
"Anzahl an Runden (nur von sha256crypt und sha512crypt genutzt). Muss "
"zwischen 1000 und 999999999 liegen, inklusive."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Passwort-Schema beim Login updaten"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Aktualisiere das Benutzerkennwort bei der Anmeldung, um das "
"Standardkennwortschema zu verwenden"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Standardpasswort"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Standardpasswort für automatisch kreierte Konten"
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Zufällige Passwortlänge"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Länge der zufällig generierten Passwörter."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Länge der zufällig generierten Passwörter."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "URL des Kennwortdienstes aktualisieren"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1501,109 +1506,109 @@ msgstr ""
"können. Betrifft nur nicht lokale Benutzer, die nach einer erfolgreichen "
"externen Authentifizierung (LDAP, SMTP) automatisch erstellt wurden."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Ankündigung zur Passwortwiederherstellung"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
"Eine temporäre Nachricht, die auf der Passwort-Wiederherstellungsseite "
"angezeigt wird."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Passwortwiederherstellung per SMS aktivieren"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Aktiviere die Kennwortwiederherstellung per SMS für Benutzer, die eine "
"Telefonnummer angegeben haben."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS-Anbieter"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
"Wählen Sie einen Anbieter für den Versand von SMS zur "
"Kennwortwiederherstellung"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Serveradresse"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "IP-Adresse oder Hostname des LDAP-Servers"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Server Port"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Der TCP Port des LDAP-Servers"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Aktiviere Ausfallserver (Fallback)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Aktiviere einen zweiten LDAP-Server, welcher verwendet wird, wenn der erste "
"nicht erreichbar ist"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Ausfallserver-Adresse"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "IP-Adresse oder Hostname des zweiten LDAP-Servers"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Ausfallserver-Port"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Der TCP Port des zweiten LDAP-Servers"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Verwende eine gesicherte Verbindung"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "SSL/TLS-Verbindung für Zugriff auf LDAP-Server verwenden"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Auswählen, wenn der LDAP-Server ein Active Directory ist."
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Administratorgruppen"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1611,49 +1616,49 @@ msgstr ""
"Mitglieder dieser LDAP-POSIX-Gruppen werden als Domänenadministratoren "
"erstellt. Nutze ';' um Gruppen zu trennen."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Gruppentyp"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Der LDAP-Gruppentyp, der mit Ihrem Verzeichnis verwendet werden soll."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Suchbasis für Gruppen"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
"Der Distinguished Name der Suchbasis, die zum Suchen von Gruppen verwendet "
"wird"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Kennwortattribut"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Das Attribut, das zum Speichern von Benutzerpasswörtern verwendet wird"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP-Authentifizierungseinstellungen"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Authentifizierungsmethode"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Wählen Sie die Authentifizierungsmethode"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Bind DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1661,31 +1666,31 @@ msgstr ""
"Der Distinguished Name, der beim Binden an den LDAP-Server verwendet werden "
"soll. Für eine anonyme Bindung leer lassen"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Bind Passwort"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Das Kennwort, das beim Binden an den LDAP-Server verwendet werden soll (mit "
"'Bind DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Suchbasis für Benutzer"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
"Der Distinguished Name der Suchbasis, die zum Suchen von Benutzern verwendet "
"wird"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Suchfilter"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1693,11 +1698,11 @@ msgstr ""
"Ein optionaler Filter (z.B. '(objectClass=person)'). Der Filter muss "
"entsprechend der LDAP-Konvention in Klammern gesetzt werden."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Benutzer-DN-Vorlage"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1706,26 +1711,26 @@ msgstr ""
"Die Vorlage, die verwendet wird, um den DN eines Benutzers zu erstellen. Es "
"sollte einen Platzhalter enthalten (z. B. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP-Synchronisationseinstellungen"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Export zu LDAP aktivieren"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Automatische Synchronisierung zwischen lokaler Datenbank und LDAP-"
"Verzeichnis aktivieren"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Remote-LDAP-Konto löschen, wenn lokales Konto gelöscht wird"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1733,11 +1738,11 @@ msgstr ""
"Remote-LDAP-Konto löschen, wenn lokales Konto gelöscht wird, ansonsten wird "
"es deaktiviert."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Konto-DN-Vorlage"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1746,54 +1751,54 @@ msgstr ""
"Die Vorlage, die verwendet wird, um den DN eines Kontos zu erstellen. Es "
"sollte einen Platzhalter enthalten (z. B. %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Import von LDAP aktivieren"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
"Kontosynchronisierung vom LDAP-Verzeichnis zur lokalen Datenbank aktivieren"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Benutzername-Attribut"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Das LDAP-Attribut, in dem der Benutzername gefunden werden kann."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Dovecot LDAP-Synchronisation aktivieren"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
"LDAP-Authentifizierungseinstellungen werden auf die Dovecot-Konfiguration "
"angewendet."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP-Konfigurationsdatei"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
"Speicherort der Konfigurationsdatei, die Dovecot-LDAP-Einstellungen enthält."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Dashboard"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "spam messages"
msgid "Custom welcome message"
msgstr "Spam E-Mails"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
@@ -1802,155 +1807,155 @@ msgstr ""
"Eine temporäre Nachricht, die auf der Passwort-Wiederherstellungsseite "
"angezeigt wird."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Benutzerdefinierter RSS-Feed"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Anzeige benutzerdefinierter RSS-Feeds für Reseller und Domain-Administratoren"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Anzeige benutzerdefinierter RSS-Feeds für Reseller und Domain-Administratoren"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Anzeige benutzerdefinierter RSS-Feeds für Reseller und Domain-Administratoren"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Funktionen-Widget ausblenden"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Funktionen-Widget für Reseller und Domain-Administratoren ausblenden"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Sekundäre E-Mail-Adresse"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Absenderadresse"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "E-Mail-Adresse, die zum Senden von Benachrichtigungen verwendet wird."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Öffentliche API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Verbindung aktivieren"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Prüft automatisch, ob eine neuere Version verfügbar ist"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Prüfe auf neue Versionen"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Sende eine E-Mail, wenn eine neue Version gefunden wurde"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
"Sendet eine E-Mail, um Administratoren über neue Versionen zu benachrichtigen"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Empfänger"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Empfänger von Benachrichtigungs-E-Mails über neue Version."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Sende Statistiken"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Sendet Statistiken an die öffentliche API von Modoboa (Zähler und verwendete "
"Erweiterungen)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Schwellwert für inaktive Konten"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Schwellwert für inaktive Konten"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1958,48 +1963,38 @@ msgstr ""
"Ein Konto mit einem letzten Login-Datum über diesem Schwellenwert (in Tagen) "
"wird als inaktiv betrachtet"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Prüfintervall für Benachrichtigungen"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervall zwischen zwei Benachrichtigungsprüfungen (in Sekunden)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maximales Alter eines Log-Eintrags"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Das maximale Alter eines Protokollsatzes in Tagen"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Einträge pro Seite"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Anzahl der angezeigten Einträge pro Seite"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Standardumleitung"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Die Standardumleitung, die verwendet wird, wenn keine Anwendung angegeben "
-"wurde"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2343,7 +2338,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3296,7 +3291,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Betreff"
@@ -3559,25 +3554,25 @@ msgstr ""
msgid "SMTP settings"
msgstr "LDAP-Einstellungen"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "IP address of your Modoboa server"
msgid "Address of your SMTP server"
msgstr "IP-Adresse Ihres Modoboa-Servers"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Verwende eine gesicherte Verbindung"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "SSL/TLS-Verbindung für Zugriff auf LDAP-Server verwenden"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "IP address of your Modoboa server"
msgid "Listening port of your SMTP server"
@@ -3595,11 +3590,17 @@ msgstr "Authentifizierungsmethode"
msgid "Server needs authentication"
msgstr "LDAP-Authentifizierungseinstellungen"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "LDAP-Einstellungen"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
@@ -3607,87 +3608,87 @@ msgstr ""
"Die Standardumleitung, die verwendet wird, wenn keine Anwendung angegeben "
"wurde"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "Abgewiesene Nachrichten"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "Abgewiesene Nachrichten"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Gesendete Nachrichten"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Standardumleitung"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
@@ -3695,11 +3696,11 @@ msgstr ""
"Die Standardumleitung, die verwendet wird, wenn keine Anwendung angegeben "
"wurde"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3715,45 +3716,72 @@ msgstr "Serveradresse"
msgid "Failed to remove attachment: "
msgstr "LDAP-Konto konnte nicht erstellt werden: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Datum"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Gesendete Nachrichten"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Benutzerprofil"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Standardumleitung"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Die Standardumleitung, die verwendet wird, wenn keine Anwendung angegeben "
+#~ "wurde"
diff --git a/modoboa/locale/el_GR/LC_MESSAGES/django.po b/modoboa/locale/el_GR/LC_MESSAGES/django.po
index 51a63daec..f16dace03 100644
--- a/modoboa/locale/el_GR/LC_MESSAGES/django.po
+++ b/modoboa/locale/el_GR/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2017-10-12 19:37+0000\n"
"Last-Translator: Kostas Moumouris \n"
"Language-Team: Greek (Greece) (http://www.transifex.com/tonio/modoboa/"
@@ -51,14 +51,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Δεν μπορεί να είναι μεγαλύτερο από το domain quota."
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Η άδεια απορρίφθηκε."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Αυτό το πεδίο είναι υποχρεωτικό"
@@ -69,7 +69,7 @@ msgstr ""
"Λίστα διαχειριζόμενων domains (αφορά μόνο μεταπωλητές και διαχειριστές "
"domain)"
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Δεν επιτρέπεται για αυτόν τον ρόλο."
@@ -77,13 +77,12 @@ msgstr "Δεν επιτρέπεται για αυτόν τον ρόλο."
msgid "Must be equal to mailbox full_address"
msgstr "Πρέπει να είναι ίσο με την full_address του γραμματοκιβωτίου"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Αυτό το πεδίο απαιτείτε."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Το τοπικός domain {} δεν υπάρχει"
@@ -130,43 +129,43 @@ msgstr "Δεν μπορείτε να ορίσετε ένα απεριόριστ
msgid "User '%s' already exists"
msgstr "Ο χρήστης '%s' υπάρχει ήδη"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Πρέπει να είναι θετικός ακέραιος"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
#, fuzzy
#| msgid "Domain not found."
msgid "Directory not found."
msgstr "To domain δεν βρέθηκε."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Ορίστε τουλάχιστον μια εξουσιοδοτημένη διεύθυνση / δίκτυο"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "Απαιτείται γραμματοκιβώτιο"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -282,38 +281,48 @@ msgstr "Ενεργοποίηση ελέγχου DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Έλεγχος κάθε domain κατά κύριους DNSBL πάροχους"
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Προκαθορισμένο domain quota"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -321,28 +330,28 @@ msgstr ""
"Προκαθορισμένο quota (σε MB) που εφαρμόζεται στα νέα domains χωρίς "
"προκαθορισμένες τιμές. Μια τιμή 0 σημαίνει ότι δεν έχει quota. "
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "Προκαθορισμένο domain quota"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Γραμματοκιβώτια"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Χειριστείτε γραμματοκιβώτια στο σύστημα αρχείων"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -350,11 +359,11 @@ msgstr ""
"Μετονομασία και διαγραφή γραμματοκιβωτίων στο σύστημα αρχείων, όταν "
"μετονομάζονται ή διαγράφονται από το Medaboa "
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Προκαθορισμένο quota γραμματοκιβωτίου "
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created domains with no "
@@ -366,78 +375,78 @@ msgstr ""
"Προκαθορισμένο quota γραμματοκιβωτίου (σε MB) που εφαρμόζεται στα νέα "
"domains χωρίς προκαθορισμένες τιμές. Μια τιμή 0 σημαίνει ότι δεν έχει quota. "
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default mailbox quota"
msgid "Default mailbox sending limit"
msgstr "Προκαθορισμένο quota γραμματοκιβωτίου "
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Αυτόματη αφαίρεση λογαριασμών"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
"Όταν αφαιρείται ένα γραμματοκιβώτιο, να αφαιρείται και ο σχετικός λογαριασμός"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Αυτόματη δημιουργία domain/γραμματοκιβωτίων"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Δημιουργία domain και γραμματοκιβωτίου κατά την αυτόματη δημιουργία "
"λογαριασμού"
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Δημιουργία ενός ψευδώνυμου κατά τη μετονομασία ενός γραμματοκιβωτίου"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Δημιουργήστε ένα ψευδώνυμο χρησιμοποιώντας την παλιά διεύθυνση όταν "
"μετονομάζεται ένα γραμματοκιβώτιο."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "Ψευδώνυμο"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Διαχείριση"
@@ -457,6 +466,39 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain {} has no MX record"
+msgid "Domain has no MX record"
+msgstr "Το Domain {} δεν έχει εγγραφή MX "
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Το Domain {} δεν έχει εγγραφή MX "
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "MX records of {}"
+msgid "Invalid MX record: {}"
+msgstr "Έγραφες MX από{}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "Η εγγραφή MX για το domain {0} δεν είναι έγκυρη: {1} "
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX ζήτημα(τα) για το domain {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL ζήτημα(τα) για το domain {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "Ψευδώνυμα (alias) domain "
@@ -479,8 +521,8 @@ msgstr "Δεν έχετε δικαίωμα εισαγωγής domain"
msgid "You are not allowed to import domain aliases."
msgstr "Δεν επιτρέπεται να εισαγάγετε ψευδώνυμα στο domain."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, fuzzy, python-format
#| msgid "No MX record found for this domain."
msgid "No DNS record found for %s"
@@ -492,11 +534,11 @@ msgstr "Δεν βρέθηκε εγράφη MX για αυτό το domain. "
msgid "No %(type)s record for %(name)s"
msgstr "Έγραφες MX από{}"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -551,39 +593,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Ενεργοποίηση επικοινωνίας με δημόσιο API του Modaboa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain {} has no MX record"
-msgid "Domain has no MX record"
-msgstr "Το Domain {} δεν έχει εγγραφή MX "
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Το Domain {} δεν έχει εγγραφή MX "
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "MX records of {}"
-msgid "Invalid MX record: {}"
-msgstr "Έγραφες MX από{}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "Η εγγραφή MX για το domain {0} δεν είναι έγκυρη: {1} "
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX ζήτημα(τα) για το domain {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL ζήτημα(τα) για το domain {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "To domain δεν βρέθηκε."
@@ -784,18 +793,18 @@ msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
"To Modoboa ανίχνευσε ότι το domain %(domain)s δεν έχει έγκυρη εγγραφή MX:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, fuzzy, python-format
#| msgid "MX records of {}"
msgid "No MX record for %s"
msgstr "Έγραφες MX από{}"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "MX records of {}"
msgid "No AAAA record for %s"
@@ -1009,13 +1018,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display details"
msgid "Display"
msgstr "Εμφάνιση"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1314,7 +1323,7 @@ msgstr ""
"Να επιτρέπεται σε αυτόν τον διαχειριστή η πρόσβαση στα γραμματοκιβώτια "
"χρηστών"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Διάφορα"
@@ -1332,11 +1341,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1425,7 +1434,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1439,24 +1448,20 @@ msgstr ""
msgid "Local"
msgstr "Τοπικός"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Προφίλ Χρήστη"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Μη έγκυρη σύνταξη"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Λάθος αριθμός επαναλήψεων "
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1487,39 +1492,39 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Πιστοποίηση"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Τύπος Πιστοποίησης"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Το backend που χρησιμοποιείται για πιστοποίηση"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Προεπιλεγμένος αλγόριθμος κωδικοποίησης"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
"Σχήμα που θα χρησιμοποιηθεί για την κρυπτογράφηση των κωδικών των "
"λογαριασμών αλληλογραφίας"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Επαναλήψεων"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1527,160 +1532,160 @@ msgstr ""
"Αριθμός επαναλήψεων (μόνο για sha256crypt και sha512crypt). Μπορεί να είναι "
"από 1000 έως και 999999999"
-#: core/app_settings.py:73
+#: core/app_settings.py:61
#, fuzzy
#| msgid "Default password scheme"
msgid "Update password scheme at login"
msgstr "Προεπιλεγμένος αλγόριθμος κωδικοποίησης"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Προκαθορισμένος κωδικός"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Προκαθορισμένος κωδικός για αυτόματη δημιουργία λογαριασμών"
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Μήκος τυχαίου κωδικού"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Μήκος των τυχαίων δημιουργημένων κωδικών"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Μήκος των τυχαίων δημιουργημένων κωδικών"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
#, fuzzy
#| msgid "Default password scheme"
msgid "Update password service URL"
msgstr "Προεπιλεγμένος αλγόριθμος κωδικοποίησης"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Διεύθυνση εξυπηρετητή"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "Η IP διεύθυνση ή το DNS όνομα του εξυπηρετητή LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Πόρτα εξυπηρετητή"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Η TCP πόρτα λειτουργίας του εξυπηρετητή LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
#, fuzzy
#| msgid "Server address"
msgid "Secondary server address"
msgstr "Διεύθυνση εξυπηρετητή"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
#, fuzzy
#| msgid "The IP address or the DNS name of the LDAP server"
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "Η IP διεύθυνση ή το DNS όνομα του εξυπηρετητή LDAP"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
#, fuzzy
#| msgid "Server port"
msgid "Secondary server port"
msgstr "Πόρτα εξυπηρετητή"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
#, fuzzy
#| msgid "The TCP port number used by the LDAP server"
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Η TCP πόρτα λειτουργίας του εξυπηρετητή LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Χρήση ασφαλής σύνδεσης"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
"Χρησιμοποιήστε μια σύνδεση SSL / STARTTLS για να συνδεθήκατε στον διακομιστή "
"LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Ο εξυπηρετητής LDAP είναι Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Groups Διαχειριστών"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1688,49 +1693,49 @@ msgstr ""
"Τα μέλη αυτών των LDAP Posix ομάδων χρηστών θα δημιουργηθούν ως διαχειριστές "
"domain. Χρησιμοποιείστε τον χαραχτήρα ';' για να ξεχωρίσετε τις ομάδες."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Τύπος ομάδας"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Τύπος ομάδας LDAP που χρησιμοποιείται με τον κατάλογο σας."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Base αναζήτησης ομάδων χρηστών"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Το Base DN αναζήτησης ομάδων χρηστών"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Το πεδίο του κωδικού"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Το πεδίο αποθήκευσης των κωδικών χρηστών"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
#, fuzzy
#| msgid "Authentication method"
msgid "LDAP authentication settings"
msgstr "Μέθοδος Πιστοποίησης"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Μέθοδος Πιστοποίησης"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Επιλογή μεθόδου πιστοποίησης"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Bind DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1738,28 +1743,28 @@ msgstr ""
"To distinguished name για το bind στον εξυπηρετητή LDAP. Αφήστε το κενό για "
"anonymous"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Bind κωδικός "
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Ο κωδικός για το bind στον εξυπηρετητή LDAP (αντιστοιχεί στο 'Bind DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Base αναζήτησης χρηστών"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Το Base DN αναζήτησης χρηστών"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Φίλτρο αναζήτησης"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1767,11 +1772,11 @@ msgstr ""
"Προαιρετικό φίλτρο (π.χ. '(objectClass=person)'). Για να είναι έγκυρο πρέπει "
"να περικλείεται σε παρενθέσεις."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Πρότυπο για DN χρηστών"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1780,38 +1785,38 @@ msgstr ""
"Το πρότυπο δημιουργίας DN χρηστών. Θα πρέπει να περιλαμβάνει έναν "
"placeholder (π.χ. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
#, fuzzy
#| msgid "LDAP settings"
msgid "LDAP synchronization settings"
msgstr "Ρυθμίσεις LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
#, fuzzy
#| msgid "User DN template"
msgid "Account DN template"
msgstr "Πρότυπο για DN χρηστών"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, fuzzy, python-format
#| msgid ""
#| "The template used to construct a user's DN. It should contain one "
@@ -1823,256 +1828,246 @@ msgstr ""
"Το πρότυπο δημιουργίας DN χρηστών. Θα πρέπει να περιλαμβάνει έναν "
"placeholder (π.χ. %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
#, fuzzy
#| msgid "Password attribute"
msgid "Username attribute"
msgstr "Το πεδίο του κωδικού"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
#, fuzzy
#| msgid "Enable communication"
msgid "Enable Dovecot LDAP sync"
msgstr "Ενεργοποίηση επικοινωνίας"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Ταμπλό Συντομεύσεων"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Προσαρμοσμένο μήνυμα"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid "A custom message that will appear at the end of documents"
msgid "A welcome message that will be displayed instead the default one"
msgstr "Ένα προσαρμοσμένο μήνυμα που θα εμφανιστεί στο τέλος των εγγράφων"
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Κατά παραγγελία RSS feed"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Προβολή κατά παραγγελία RSS feed για μεταπωλητές και διαχειριστές τομέα"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Προβολή κατά παραγγελία RSS feed για μεταπωλητές και διαχειριστές τομέα"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Προβολή κατά παραγγελία RSS feed για μεταπωλητές και διαχειριστές τομέα"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Κρύβω τις λειτουργίες από τα widget"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Κρύβω τις λειτουργίες από τα widget για τους μεταπωλητές και τους "
"διαχειριστές του τομέα"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Δευτερεύον email"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Υπενθύμιση "
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Διεύθυνση αποστολέα"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Email διεύθυνση που χρησιμοποιείται για την αποστολή υπενθυμίσεων "
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Δημόσιο API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Ενεργοποίηση επικοινωνίας"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Αυτόματος έλεγχος διαθέσιμων ενημερώσεων"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Έλεγχος ενημερώσεων"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Παραλήπτης"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Αποστολή στατιστικών"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Αποστολή στατιστικών στο public API του Motaboa (counters και used "
"extensions)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Όριο απενεργοποιημένων λογαριασμών "
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Όριο απενεργοποιημένων λογαριασμών "
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr "Όριο (σε ημέρες) για να απενεργοποιηθεί ένας Λογαριασμός."
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Μέγιστο διάστημα ελέγχου ειδοποιήσεων"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Διάστημα μεταξύ των δύο πρώτων ελέγχων ειδοποιήσεων (σε δευτερόλεπτα)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Μέγιστος χρόνος καταγραφής των log"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Μέγιστη διάρκεια σε ημέρες καταγραφής των log"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Εμφανίσεις ανά σελίδα"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Αριθμός εμφανίσεων ανά σελίδα"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Κύριες προκαθορισμένες αναδρομολογήσεις"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Προκαθορισμένες αναδρομολογήσεις που χρησιμοποιούνται όταν δεν υπάρχουν "
-"προκαθορισμένες εφαρμογές"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2424,7 +2419,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Κανένα"
@@ -3412,7 +3407,7 @@ msgstr "είναι"
msgid "is not"
msgstr "δεν είναι"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Τίτλος"
@@ -3676,25 +3671,25 @@ msgstr "Μέγιστο μέγεθος συνημμένου σε bytes (ή KB, MB
msgid "SMTP settings"
msgstr "Ρυθμίσεις SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Η διεύθυνση του εξυπηρετητή SMTP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Τύπος ασφαλής σύνδεσης"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use a secured connection to access IMAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Χρήση ασφαλής σύνδεσης με τον εξυπηρετητή SMTP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3711,11 +3706,17 @@ msgstr "Απαιτείται πιστοποίηση"
msgid "Server needs authentication"
msgstr "Ο εξυπηρετητής απαιτεί πιστοποίηση"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "DNS settings"
+msgid "Scheduling settings"
+msgstr "Ρυθμίσεις ManageSieve"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Προεπιλεγμένη λειτουργία εμφάνισης μηνυμάτων"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
@@ -3723,99 +3724,99 @@ msgstr ""
"Η προεπιλεγμένη λειτουργία που χρησιμοποιείται κατά την εμφάνιση ενός "
"μηνύματος"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Ενεργοποιήσει εμφάνισης συνδέσεων HTML"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Ενεργοποίηση/απενεργοποίηση προβολής HTML συνδέσεων"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Ορισμός μέγιστου αριθμού μηνυμάτων ανά σελίδα"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Ρυθμός ανανέωσης εμφάνισης"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Βάθος Φακέλου"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "The width of the folder list container"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Φάκελοι"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Φάκελος Διαγραμμένων"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "Ο φάκελος που αποθηκεύονται τα διεγραμμένα μηνύματα"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Φάκελος Απεσταλμένων"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Ο φάκελος που αποθηκεύονται τα απεσταλμένα μηνύματα"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Φάκελος Πρόχειρων"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Ο φάκελος που αποθηκεύονται τα πρόχειρα"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Sent folder"
msgid "Junk folder"
msgstr "Φάκελος ανεπιθύμητων"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "Φάκελος που θα πηγαίνουν τα ανεπιθύμητα "
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Δημιουργία μηνυμάτων"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Προεπιλεγμένος κειμενογράφος"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "Ο προεπιλεγμένος κειμενογράφος για την δημιουργία μηνυμάτων"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Κείμενο υπογραφής"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Προεπιλεγμένη υπογραφή χρήστη"
@@ -3831,47 +3832,74 @@ msgstr "Διεύθυνση εξυπηρετητή"
msgid "Failed to remove attachment: "
msgstr "Σφάλμα κατά την αφαίρεση του συνημμένου:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Ημερομηνία"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Όλα τα μηνύματα"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr " Αποτυχία κατά την ανάκτηση της οροθετημένης ιεραρχίας "
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Εισερχόμενα"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Drafts folder"
msgid "Drafts"
msgstr "Πρόχειρα"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "Ανεπιθύμητα"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Απεσταλμένα"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Σκουπιδοτενεκές"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Το συνημμένο είναι πολύ μεγάλο (όριο: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Προφίλ Χρήστη"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Κύριες προκαθορισμένες αναδρομολογήσεις"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Προκαθορισμένες αναδρομολογήσεις που χρησιμοποιούνται όταν δεν υπάρχουν "
+#~ "προκαθορισμένες εφαρμογές"
diff --git a/modoboa/locale/en/LC_MESSAGES/django.po b/modoboa/locale/en/LC_MESSAGES/django.po
index 7886b4e36..cdeee6848 100644
--- a/modoboa/locale/en/LC_MESSAGES/django.po
+++ b/modoboa/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -40,14 +40,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -56,7 +56,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -64,13 +64,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -111,39 +110,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -235,141 +234,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -389,6 +398,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -411,8 +449,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -422,11 +460,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -478,35 +516,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -683,17 +692,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -862,11 +871,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1109,7 +1118,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1127,11 +1136,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1210,7 +1219,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1222,24 +1231,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1264,525 +1269,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2103,7 +2100,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2981,7 +2978,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3207,19 +3204,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3231,95 +3228,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3331,43 +3332,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/es/LC_MESSAGES/django.po b/modoboa/locale/es/LC_MESSAGES/django.po
index 7548dbe94..fb7e93664 100644
--- a/modoboa/locale/es/LC_MESSAGES/django.po
+++ b/modoboa/locale/es/LC_MESSAGES/django.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-06 11:16+0000\n"
"Last-Translator: Antoine Nguyen \n"
"Language-Team: Spanish (http://www.transifex.com/tonio/modoboa/language/"
@@ -58,14 +58,14 @@ msgid "Cannot be greater than domain quota"
msgstr "No puede superar la cuota de dominio"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Permiso denegado."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Este campo es obligatorio"
@@ -76,7 +76,7 @@ msgstr ""
"Lista de dominios administrados (sólo distribuidores y administradores de "
"dominio)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "No estás autorizado para esta función."
@@ -84,13 +84,12 @@ msgstr "No estás autorizado para esta función."
msgid "Must be equal to mailbox full_address"
msgstr "Debe ser igual a la dirección completa del buzón"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "El dominio local {} no existe"
@@ -137,43 +136,43 @@ msgstr "No puede definir una cuota ilimitada."
msgid "User '%s' already exists"
msgstr "El usuario '%s' ya existe"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Debe ser un entero positivo"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
#, fuzzy
#| msgid "Domain not found."
msgid "Directory not found."
msgstr "Dominio no encontrado."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "Es obligatorio un buzón"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -287,38 +286,48 @@ msgstr "Habilitar comprobación DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Compruebe cada dominio con los principales proveedores de DNSBL"
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Cuota del dominio por defecto"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -326,28 +335,28 @@ msgstr ""
"Cuota por defecto (en MB) que se aplica a la creación de nuevos dominios que "
"no tuvieran un valor especificado. Un valor de 0 significa que no hay cuota."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "Cuota del dominio por defecto"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Mailboxes"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Manejar mailboxes en el sistema de fichero"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -355,11 +364,11 @@ msgstr ""
"Renombrar o eliminar mailboxes en el sistema de ficheros cuando sean "
"renombrados o eliminados dentro de Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Cuota de mailbox por defecto"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created domains with no "
@@ -371,73 +380,73 @@ msgstr ""
"La cuota de mailbox por defecto (en MB) se aplica a los dominios nuevos que "
"no especifican este valor. Un valor de 0 significa ningún limite."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default mailbox quota"
msgid "Default mailbox sending limit"
msgstr "Cuota de mailbox por defecto"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Elminar cuentas automáticamente"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Cuando un mailbox es eliminado, también lo es su cuenta asociada."
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Creación automática de dominio/buzón"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "Crear un dominio y un buzón cuando se cree automáticamente una cuenta."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administración"
@@ -458,6 +467,39 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain {} has no MX record"
+msgid "Domain has no MX record"
+msgstr "El dominio {} no tiene registro MX"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "El dominio {} no tiene registro MX"
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "MX records of {}"
+msgid "Invalid MX record: {}"
+msgstr "Registros MX de {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "El registro MX para el dominio {0} no es válido: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX problema(s) para el dominio {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL problema(s) para el dominio {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "alias del dominio"
@@ -480,8 +522,8 @@ msgstr "No está autorizado para importar dominios"
msgid "You are not allowed to import domain aliases."
msgstr "No está autorizado para importar alias de dominio."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, fuzzy, python-format
#| msgid "No MX record found for this domain."
msgid "No DNS record found for %s"
@@ -493,11 +535,11 @@ msgstr "No se encontró ningún registro MX para este dominio."
msgid "No %(type)s record for %(name)s"
msgstr "Registros MX de {}"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -552,39 +594,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Establecer comunicación con la API publica de Modoboa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain {} has no MX record"
-msgid "Domain has no MX record"
-msgstr "El dominio {} no tiene registro MX"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "El dominio {} no tiene registro MX"
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "MX records of {}"
-msgid "Invalid MX record: {}"
-msgstr "Registros MX de {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "El registro MX para el dominio {0} no es válido: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX problema(s) para el dominio {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL problema(s) para el dominio {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Dominio no encontrado."
@@ -783,18 +792,18 @@ msgstr ""
"Modoboa detectó que el(los) dominio(s) %(domain)s está(n) listado(s) por los "
"siguientes proveedores DNSBL:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, fuzzy, python-format
#| msgid "MX records of {}"
msgid "No MX record for %s"
msgstr "Registros MX de {}"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "MX records of {}"
msgid "No AAAA record for %s"
@@ -998,11 +1007,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "Mostrar"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1296,7 +1305,7 @@ msgstr "Administrador del dominio"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Permitir a este administrador acceso al buzon de los usuarios"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Otros"
@@ -1314,11 +1323,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "No se ha configurado la dirección del servidor, por favor corríjalo."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1405,7 +1414,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1419,24 +1428,20 @@ msgstr ""
msgid "Local"
msgstr "Local"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Perfil de usuario"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Sintaxis inválida"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Número de rondas inváldo"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1469,37 +1474,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Correo web"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Autenticación"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Tipo de autenticación"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "El sistema usado para autenticación"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Esquema de contraseña por defecto"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Esquema usado para cifrar las contraseñas del mailbox"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Rondas"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1507,148 +1512,148 @@ msgstr ""
"Número de rondas a usar (sólo utilizado por sha256crypr y sha512crypt). Debe "
"estar entre 1000 y 999999999, incluído."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Forzar actualización de contraseña al acceder para usar el esquema de "
"contraseñas"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Contraseña por defecto"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Contraseña por defecto para cuentas creadas automáticamente."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Longitud de contraseña aleatoria"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Longitud de las contraseñas generadas aleatoriamente."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Longitud de las contraseñas generadas aleatoriamente."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Dirección del servidor"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "La dirección IP del servidor de nombres (DNS) del servidor LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Puerto del servidor"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Número de puerto TCP usado por el servidor LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Usa una conexión segura"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Usa una conexión SSL/STARTTLS para acceder al servidor LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Directorio Activo"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Decir si el servidor de LDAP es uno del tipo Directorio Activo"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Administrador de grupos"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1656,47 +1661,47 @@ msgstr ""
"Los miembros de esos grupos Posix LDAP serán creados como administradores de "
"dominio. Use caracteres \";\" para separar los grupos."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Tipo de grupo"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "El tipo de LDAP para usar en el directorio"
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Base para la búsqueda de grupos"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "El distinguido nombre de la búsqueda base usada para encontrar grupos"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atributo de la contraseña"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "El atributo usado para guardar las contraseñas del usuario"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Método de autenticación"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Elegir el método de autenticación a usar"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Unir a DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1704,29 +1709,29 @@ msgstr ""
"El nombre distinguido a usar cuando nos unimos al servidor LDAP. Dejar vació "
"para una unión anónima"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Unir contraseña"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"La contraseña a usar cuando nos unimos al servidor LDAP (con 'Unir a DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Base para la búsqueda de usuarios"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
"El distinguido nombre de la búsqueda base usada para encontrar usuarios"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtro de búsqueda"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1734,11 +1739,11 @@ msgstr ""
"Una cadena de filtro opcional (p.e. '(objectClass=person)'). Para que sea "
"válido tiene que ser encerrado entre paréntesis."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Plantilla DN del usuario"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1747,98 +1752,98 @@ msgstr ""
"La plantilla usada para contriunr un DN de usuario. Debería contener una "
"cadena reemplazables (p.e. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Panel de Control"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "spam messages"
msgid "Custom welcome message"
msgstr "Mensajes Basura"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Agregación RSS personalizada"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Mostrar una fuente de agregación RSS personalizada a revendedores y "
"administradores de dominio"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
@@ -1846,7 +1851,7 @@ msgstr ""
"Mostrar una fuente de agregación RSS personalizada a revendedores y "
"administradores de dominio"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
@@ -1854,133 +1859,133 @@ msgstr ""
"Mostrar una fuente de agregación RSS personalizada a revendedores y "
"administradores de dominio"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Ocultar widget de características"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Ocultar el widget de características a revendedores y administradores de "
"dominio"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Email secundario"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notificaciones"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Dirección del remitente"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Dirección de email usada para mandar notificaciones"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "API pública"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Establecer comunicación"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Verificar automáticamente si hay una nueva versión disponible"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Comprobar nuevas versiones"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Destinatario"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Enviar estadísticas"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Enviar estadísticas a la API pública de Modoboa (contadores y extensiones "
"usadas)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Límite para cuentas inactivas"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Límite para cuentas inactivas"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1988,47 +1993,38 @@ msgstr ""
"Una cuenta inactiva con una fecha de inicio de sesión previa a este límite "
"(en días) se considerará como cuenta inactiva"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Intervalo de tiempo para notificaciones superiores"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervalo entre dos notificaciones superiores (en segundos)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Máximo tiempo de almacenamiento del log"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "El tiempo máximo de almacenamiento del log en días"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Items por página"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Número de elementos mostrado por página"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Redirección principal por defecto"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"La redirección que será usada cuando ninguna aplicación sea especificada."
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2365,7 +2361,7 @@ msgid "Not resolved"
msgstr "Sin definir"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Nada"
@@ -3349,7 +3345,7 @@ msgstr "es"
msgid "is not"
msgstr "no es"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Tema"
@@ -3610,25 +3606,25 @@ msgstr "Tamaño máximo del adjunto en bytes (or KB, MB, GB si se especifica)"
msgid "SMTP settings"
msgstr "Configuración de SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Dirección de su servidor SMTP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Modo de conexión seguro"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Usar una conexión segura para acceder al servidor SMTP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3645,115 +3641,121 @@ msgstr "Autenticación obligatoria"
msgid "Server needs authentication"
msgstr "El servidor requiere autenticación"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "Configuración de ManageSieve"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Modo por defecto para mostrar un mensaje"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "Modo por defecto usado cuando se muestra un mensaje"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Activar el mostrar enlaces de HTML"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Activar/Desactivar el mostrar enlaces HTML"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Fija el número máximo de mensajes mostrados en una página"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Tasa de refresco"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Propietario de los mailboxes"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
#, fuzzy
#| msgid "Create aliases"
msgid "Trash folder"
msgstr "Carpeta de basura"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "Carpeta dónde van los mensajes eliminados"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
#, fuzzy
#| msgid "Create aliases"
msgid "Sent folder"
msgstr "Carpeta de enviados"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Carpeta dónde van las copias de los correos enviados"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts folder"
msgstr "Carpeta de borradores"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Carpeta dónde van los borradores"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Create aliases"
msgid "Junk folder"
msgstr "Carpeta de enviados"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "Carpeta dónde van los mensajes eliminados"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Composición de mensajes"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Editor por defecto"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "Editor por defecto para usar cuando redacta un mensaje"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Texto de la firma"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Firma de correo definida por el usuario"
@@ -3769,47 +3771,73 @@ msgstr "Dirección del servidor"
msgid "Failed to remove attachment: "
msgstr "Fallo al eliminar el adjunto:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Fecha"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Todos los mensajes"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Fallo al recuperar el delimitador jerárquico"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts"
msgstr "Carpeta de borradores"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "EL adjunto es demasiado grande (límite: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Perfil de usuario"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Redirección principal por defecto"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "La redirección que será usada cuando ninguna aplicación sea especificada."
diff --git a/modoboa/locale/es_MX/LC_MESSAGES/django.po b/modoboa/locale/es_MX/LC_MESSAGES/django.po
index 871f47c94..5060b254b 100644
--- a/modoboa/locale/es_MX/LC_MESSAGES/django.po
+++ b/modoboa/locale/es_MX/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -41,14 +41,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -57,7 +57,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -65,13 +65,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -112,39 +111,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -236,141 +235,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -390,6 +399,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -412,8 +450,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -423,11 +461,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -479,35 +517,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -684,17 +693,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -863,11 +872,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1110,7 +1119,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1128,11 +1137,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1211,7 +1220,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1223,24 +1232,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1265,525 +1270,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2104,7 +2101,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2982,7 +2979,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3208,19 +3205,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3232,95 +3229,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3332,43 +3333,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/fi/LC_MESSAGES/django.po b/modoboa/locale/fi/LC_MESSAGES/django.po
index 5709d41f0..5bc0d3e38 100644
--- a/modoboa/locale/fi/LC_MESSAGES/django.po
+++ b/modoboa/locale/fi/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2023-02-17 22:03+0200\n"
"Last-Translator: Ossi Mäntylahti \n"
"Language-Team: \n"
@@ -47,14 +47,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Ei voi olla suurempi kuin verkkotunnuksen kiintiö"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Lupa evätty."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Tämä kenttä on pakollinen"
@@ -65,7 +65,7 @@ msgstr ""
"Luettelo hallinnoiduista verkkotunnuksista (vain jälleenmyyjät ja "
"verkkotunnusten ylläpitäjät)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Ei sallittu tässä roolissa."
@@ -73,13 +73,12 @@ msgstr "Ei sallittu tässä roolissa."
msgid "Must be equal to mailbox full_address"
msgstr "Täytyy olla yhtä suuri kuin postilaatikon koko osoite"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Tämä kenttä on pakollinen."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Paikallista verkkotunnusta {} ei ole olemassa"
@@ -122,41 +121,41 @@ msgstr "Et voi määritellä rajoittamatonta kiintiötä."
msgid "User '%s' already exists"
msgstr "Käyttäjä '%s' on jo olemassa"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Täytyy olla positiivinen kokonaisluku"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl ei löydy, varmista, että se on asennettu."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Hakemistoa ei löydy."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Määritä vähintään yksi valtuutettu verkko/osoite"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "Tarvitaan postilaatikko"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown tag {}"
msgid "Unknown status"
@@ -263,20 +262,30 @@ msgid "Check every domain against major DNSBL providers"
msgstr ""
"Tarkista jokainen verkkotunnus merkittävimmistä DNSBL-palveluntarjoajista"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Mukautettu DNS-palvelin"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr ""
"Käytä mukautettua DNS-palvelinta paikallisen palvelinkonfiguraation sijasta"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "DKIM-avainten tallennushakemisto"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -286,19 +295,19 @@ msgstr ""
"että tämä hakemisto kuuluu root-käyttäjälle eikä ole ulkomaailman "
"luettavissa."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "DKIM-avaimen oletuspituus"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Uusien luotujen DKIM-avainten oletuspituus bitteinä."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Verkkotunnuksen oletuskiintiö"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -306,11 +315,11 @@ msgstr ""
"Oletuskiintiö (megatavua), jota sovelletaan juuri luotuihin toimialueisiin, "
"joille ei ole määritetty arvoa. Arvo 0 tarkoittaa, että kiintiötä ei ole."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Oletusarvo verkkotunnuksen lähetysrajalle"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -318,16 +327,16 @@ msgstr ""
"Viestien määrä, jonka juuri luodut verkkotunnukset saavat lähettää päivässä. "
"Jätä tyhjäksi, jos et halua rajoitusta."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Postilaatikot"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Käsittele postilaatikoita tiedostojärjestelmässä"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -335,11 +344,11 @@ msgstr ""
"Nimeä uudelleen tai poista postilaatikot tiedostojärjestelmästä, kun ne "
"nimetään uudelleen tai poistetaan Modoboassa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Oletuspostilaatikkokiintiö"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created mailboxes with "
@@ -352,11 +361,11 @@ msgstr ""
"postilaatikoihin, joille ei ole määritetty arvoa. Arvo 0 tarkoittaa, ettei "
"kiintiötä ole."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Oletuspostilaatikon lähetysraja"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -364,63 +373,63 @@ msgstr ""
"Viestien määrä, jonka juuri luodut postilaatikot saavat lähettää päivässä. "
"Jätä tyhjäksi, jos et halua rajoitusta."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Tilin automaattinen poistaminen"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Kun postilaatikko poistetaan, poistetaan myös siihen liittyvä tili"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Automaattinen verkkotunnuksen/sähköpostilaatikon luominen"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "Luo verkkotunnus ja postilaatikko, kun tili luodaan automaattisesti."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Luo alias, kun postilaatikko nimetään uudelleen"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Luo alias, joka käyttää vanhaa osoitetta, kun postilaatikko nimetään "
"uudelleen."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Hallinnointinäkymä"
@@ -440,6 +449,35 @@ msgstr "Avattu"
msgid "Closed"
msgstr "Suljettu"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} DNSBL-palveluntarjoajan listaama {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Verkkotunnuksella ei ole MX-tietuetta"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Verkkotunnuksella {} ei ole MX-tietuetta"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Virheellinen MX-tietue: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "Verkkotunnuksen {0} MX-tietue on virheellinen: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX-ongelma(t) verkkotunnukselle {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL ongelma(t) verkkotunnukselle {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "verkkotunnuksen alias"
@@ -462,8 +500,8 @@ msgstr "Sinulla ei ole oikeutta tuoda verkkotunnuksia"
msgid "You are not allowed to import domain aliases."
msgstr "Sinulla ei ole oikeutta tuoda verkkotunnuksia."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "DNS-tietuetta ei löytynyt %s"
@@ -473,11 +511,11 @@ msgstr "DNS-tietuetta ei löytynyt %s"
msgid "No %(type)s record for %(name)s"
msgstr "Ei %(type)s-tietueelle %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Toimivia nimipalvelimia ei löytynyt"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "DNS-kyselyn aikakatkaisu, kysely %s ei onnistu tällä hetkellä"
@@ -531,35 +569,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Ota käyttöön viestintä Modoboan julkisen API:n kanssa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} DNSBL-palveluntarjoajan listaama {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Verkkotunnuksella ei ole MX-tietuetta"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Verkkotunnuksella {} ei ole MX-tietuetta"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Virheellinen MX-tietue: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "Verkkotunnuksen {0} MX-tietue on virheellinen: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX-ongelma(t) verkkotunnukselle {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL ongelma(t) verkkotunnukselle {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Verkkotunnusta ei löydy."
@@ -759,17 +768,17 @@ msgstr ""
"Modoboa havaitsi, että verkkotunnuksella %(domain)s ei ole voimassa olevaa "
"MX-tietuetta:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Ei MX-tietuetta %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Virheellinen IP-osoiteformaatti %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -979,11 +988,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1266,7 +1275,7 @@ msgstr "Luo verkkotunnuksen ylläpitäjä"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Salli tämän järjestelmänvalvojan pääsy käyttäjien postilaatikoihin"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Sekalaiset"
@@ -1284,11 +1293,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1375,7 +1384,7 @@ msgstr "Kaksivaiheinen tunnistus (2FA) on jo käytössä"
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1389,24 +1398,20 @@ msgstr "Kaksivaiheinen tunnistautuminen (2FA) ei ole käytössä"
msgid "Local"
msgstr "Paikallinen"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Käyttäjäprofiili"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Virheellinen syntaksi"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Virheellinen kierrosluku"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Tämä koodi on virheellinen"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Käytä seuraavaa koodia saadaksesi takaisin Modoboa-salasanasi: {}"
@@ -1439,37 +1444,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Sähköpostiosoite"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Tunnistautuminen"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Autentikointityyppi"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Tunnistautumiseen käytettävä taustajärjestelmä"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Oletussalasanojen järjestelmä"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Sähköpostilaatikon salasanojen salaamiseen käytetty järjestelmä"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Kierrokset"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1477,47 +1482,47 @@ msgstr ""
"Käytettävien kierrosten määrä (vain sha256crypt ja sha512crypt käyttävät). "
"Arvon on oltava välillä 1000 ja 99999999999."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Päivitä salasanajärjestelmä kirjautumisen yhteydessä"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Päivitä käyttäjän salasana sisäänkirjautumisen yhteydessä käyttämään "
"oletussalasanajärjestelmää"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Oletussalasana"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Automaattisesti luotujen tilien oletussalasana."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Satunnaisen salasanan pituus"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Satunnaisesti luotujen salasanojen pituus."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Satunnaisesti luotujen salasanojen pituus."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Päivitä salasanapalvelun URL-osoite"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1527,106 +1532,106 @@ msgstr ""
"Koskee vain muita kuin paikallisia käyttäjiä. Eli niitä, jotka luodaan "
"automaattisesti onnistuneen ulkoisen todennuksen jälkeen (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Ilmoitus salasanan palautuksesta"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr "Väliaikainen viesti, joka näytetään salasanan nollaussivulla."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Ota salasanan palautus käyttöön tekstiviestillä"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Ota käyttöön salasanan palautus tekstiviestillä käyttäjille, jotka ovat "
"täyttäneet puhelinnumeron."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS-palveluntarjoaja"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
"Valitse palveluntarjoaja, joka lähettää salasanan palautustekstiviestin"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Palvelimen osoite"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "LDAP-palvelimen IP-osoite tai DNS-nimi"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Palvelimen portti"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "LDAP-palvelimen käyttämän TCP-portin numero"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Toisen palvelimen käyttöönotto (varapalvelin)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Ota käyttöön toissijainen LDAP-palvelin, jota käytetään, jos ensisijainen "
"palvelin ei toimi"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Toisen palvelimen osoite"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "Toisen LDAP-palvelimen IP-osoite tai DNS-nimi"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Toisen palvelimen portti"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "LDAP:n toissijaisen palvelimen käyttämä TCP-portin numero"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Käytä suojattua yhteyttä"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Käytä SSL/STARTTLS-yhteyttä LDAP-palvelimen käyttämiseen"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Kerro, onko LDAP-palvelin Active Directory -palvelin"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Järjestelmänvalvojien ryhmät"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1634,47 +1639,47 @@ msgstr ""
"Näiden LDAP Posix -ryhmien jäsenet luodaan verkkotunnuksen "
"järjestelmänvalvojiksi. Käytä ';'-merkkejä ryhmien erottamiseen."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Ryhmän tyyppi"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "LDAP-ryhmän tyyppi, jota käytetään hakemiston kanssa."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Ryhmien hakupohja"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Ryhmien etsimiseen käytettävän hakupohjan erottuva nimi"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Salasana-attribuutti"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Määrite, jota käytetään käyttäjien salasanojen tallentamiseen"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP-todennusasetukset"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Tunnistusmenetelmä"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Valitse käytettävä todennusmenetelmä"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Sido DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1682,29 +1687,29 @@ msgstr ""
"Erotusnimi, jota käytetään LDAP-palvelimeen sitoutumisessa. Jätä tyhjäksi "
"anonyymiä sidontaa varten"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Sido salasana"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Salasana, jota käytetään LDAP-palvelimeen sitoutumisessa (komennolla 'Bind "
"DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Käyttäjien hakupohja"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Käyttäjien etsimiseen käytettävän hakupohjan erisnimi"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Etsi suodatin"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1712,11 +1717,11 @@ msgstr ""
"Valinnainen suodatinmerkkijono (esim. '(objectClass=person)'). Tämän on "
"oltava suluissa."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Käyttäjän DN-malli"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1725,26 +1730,26 @@ msgstr ""
"Käyttäjän DN:n rakentamiseen käytettävä malli. Sen tulisi sisältää yksi "
"paikanvaraaja (eli %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP-synkronointiasetukset"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Ota käyttöön vienti LDAP:iin"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Ota käyttöön automaattinen synkronointi paikallisen tietokannan ja LDAP-"
"hakemiston välillä"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Etäisen LDAP-tilin poistaminen, kun paikallinen tili poistetaan"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1752,11 +1757,11 @@ msgstr ""
"Poista etä-LDAP-tili, kun paikallinen tili poistetaan. Muuten se poistetaan "
"käytöstä."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Tilin DN-malli"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1765,207 +1770,207 @@ msgstr ""
"Malli, jota käytetään tilin DN:n muodostamiseen. Sen tulisi sisältää yksi "
"paikanvaraaja (eli %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Ota käyttöön tuonti LDAP:stä"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
"Tilien synkronoinnin käyttöönotto LDAP-hakemistosta paikalliseen tietokantaan"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Käyttäjätunnus-määrite"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Sen LDAP-attribuutin nimi, josta käyttäjänimi löytyy."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Ota Dovecot LDAP-synkronointi käyttöön"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr "LDAP-todennusasetuksia sovelletaan Dovecot-konfiguraatioon."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP -asetustiedosto"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Dovecotin LDAP-asetukset sisältävän määritystiedoston sijainti."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Työpöytä"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "spam messages"
msgid "Custom welcome message"
msgstr "roskapostiviestit"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
msgid "A welcome message that will be displayed instead the default one"
msgstr "Väliaikainen viesti, joka näytetään salasanan nollaussivulla."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Mukautettu RSS-syöte"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Näytä mukautettu RSS-syöte jälleenmyyjille ja verkkotunnuksen ylläpitäjille"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Näytä mukautettu RSS-syöte jälleenmyyjille ja verkkotunnuksen ylläpitäjille"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Näytä mukautettu RSS-syöte jälleenmyyjille ja verkkotunnuksen ylläpitäjille"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Piilota ominaisuudet-widget"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Piilota ominaisuudet-widget jälleenmyyjiltä ja verkkotunnuksen ylläpitäjiltä"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Toissijainen sähköpostiosoite"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Ilmoitukset"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Lähettäjän osoite"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Ilmoitusten lähettämiseen käytettävä sähköpostiosoite."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Julkinen API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Ota viestintä käyttöön"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Tarkistaa automaattisesti, onko uudempi versio saatavana"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Tarkista uudet versiot"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Lähetä sähköpostia, kun uusia versioita löytyy"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
"Lähetä sähköpostiviesti, joka ilmoittaa ylläpitäjille uusista versioista"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Vastaanottaja"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Uusia versioita koskevien ilmoitussähköpostiviestien vastaanottaja."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Lähetä tilastot"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Lähetä tilastoja Modoboan julkiseen API:han (laskurit ja käytetyt "
"laajennukset)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Inaktiivisen tilin kynnysarvo"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Inaktiivisen tilin kynnysarvo"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1973,48 +1978,38 @@ msgstr ""
"Tiliä, jonka viimeisin kirjautumispäivä on suurempi kuin tämä kynnysarvo "
"(päivinä), pidetään inaktiivisena"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Ylimpien ilmoitusten tarkistusväli"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Kahden ylimmän ilmoituksen tarkistuksen välinen aika (sekunteina)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Lokitiedoston enimmäisikä"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Lokitietueen enimmäisikä päivinä"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Kohteita per sivu"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Näytettävien kohteiden määrä sivua kohti"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Oletusarvoinen ylhäältä uudelleenohjaus"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Oletusarvoinen uudelleenohjaus, jota käytetään, kun sovellusta ei ole "
-"määritetty"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2356,7 +2351,7 @@ msgid "Not resolved"
msgstr "Ei määritelty"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3326,7 +3321,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Aihe"
@@ -3588,25 +3583,25 @@ msgstr ""
msgid "SMTP settings"
msgstr "LDAP-asetukset"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "IP address of your Modoboa server"
msgid "Address of your SMTP server"
msgstr "Modoboa-palvelimen IP-osoite"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Käytä suojattua yhteyttä"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Käytä SSL/STARTTLS-yhteyttä LDAP-palvelimen käyttämiseen"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "IP address of your Modoboa server"
msgid "Listening port of your SMTP server"
@@ -3623,11 +3618,17 @@ msgstr "Tunnistusmenetelmä"
msgid "Server needs authentication"
msgstr "LDAP-todennusasetukset"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "LDAP-asetukset"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
@@ -3635,97 +3636,97 @@ msgstr ""
"Oletusarvoinen uudelleenohjaus, jota käytetään, kun sovellusta ei ole "
"määritetty"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
#, fuzzy
#| msgid "Create aliases"
msgid "Folders"
msgstr "Luo aliaksia"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
#, fuzzy
#| msgid "Create aliases"
msgid "Trash folder"
msgstr "Luo aliaksia"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "hylätyt viestit"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
#, fuzzy
#| msgid "Create aliases"
msgid "Sent folder"
msgstr "Luo aliaksia"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts folder"
msgstr "Luo aliaksia"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Create aliases"
msgid "Junk folder"
msgstr "Luo aliaksia"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "hylätyt viestit"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "lähetetyt viestit"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Oletusarvoinen ylhäältä uudelleenohjaus"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
@@ -3733,11 +3734,11 @@ msgstr ""
"Oletusarvoinen uudelleenohjaus, jota käytetään, kun sovellusta ei ole "
"määritetty"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3753,47 +3754,74 @@ msgstr "Palvelimen osoite"
msgid "Failed to remove attachment: "
msgstr "LDAP-tilin luominen epäonnistui: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Päivämäärä"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "lähetetyt viestit"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts"
msgstr "Luo aliaksia"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Käyttäjäprofiili"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Oletusarvoinen ylhäältä uudelleenohjaus"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Oletusarvoinen uudelleenohjaus, jota käytetään, kun sovellusta ei ole "
+#~ "määritetty"
diff --git a/modoboa/locale/fr/LC_MESSAGES/django.po b/modoboa/locale/fr/LC_MESSAGES/django.po
index 2ce778c95..3646d7693 100644
--- a/modoboa/locale/fr/LC_MESSAGES/django.po
+++ b/modoboa/locale/fr/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
+#
# Translators:
# Antoine Nguyen , 2016-2017,2020,2023-2025
# Christophe CHAUVET , 2018
@@ -15,25 +15,30 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: Antoine Nguyen , 2016-2017,2020,2023-2025\n"
"Language-Team: French (http://app.transifex.com/tonio/modoboa/language/fr/)\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
+"1000000 == 0 ? 1 : 2;\n"
#: admin/api/v1/serializers.py:39
msgid ""
"Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. "
"A value of 0 means no quota."
-msgstr "Quota partagé entre les boîtes aux lettres. Peut être exprimé en Ko, Mo (défaut) ou Go. Une valeur à 0 signifie pas de quota."
+msgstr ""
+"Quota partagé entre les boîtes aux lettres. Peut être exprimé en Ko, Mo "
+"(défaut) ou Go. Une valeur à 0 signifie pas de quota."
#: admin/api/v1/serializers.py:46
msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
-msgstr "Quota par défaut en Mo appliqué aux boîtes aux lettres. Une valeur à 0 signifie pas de quota."
+msgstr ""
+"Quota par défaut en Mo appliqué aux boîtes aux lettres. Une valeur à 0 "
+"signifie pas de quota."
#: admin/api/v1/serializers.py:94
msgid "domain alias with this name already exists"
@@ -48,23 +53,25 @@ msgid "Cannot be greater than domain quota"
msgstr "Ne peut pas être supérieur au quota du domaine"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Permission refusée."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Ce champ est requis"
#: admin/api/v1/serializers.py:243
msgid ""
"List of administered domains (resellers and domain administrators only)."
-msgstr "Liste des domaines administrés (revendeurs et administrateurs de domaine seulement)."
+msgstr ""
+"Liste des domaines administrés (revendeurs et administrateurs de domaine "
+"seulement)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Non autorisé pour ce rôle."
@@ -72,13 +79,12 @@ msgstr "Non autorisé pour ce rôle."
msgid "Must be equal to mailbox full_address"
msgstr "Doit être égale au champ full_address dans mailbox"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Ce champ est requis."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Le domaine local {} n'existe pas"
@@ -119,39 +125,41 @@ msgstr "Vous ne pouvez pas définir de quota illimité"
msgid "User '%s' already exists"
msgstr "L'utilisateur '%s' existe déjà"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Doit être un entier positif"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
-msgstr "impossible de trouver openssl, veuillez vous assurer vous qu'il est installé."
+msgstr ""
+"impossible de trouver openssl, veuillez vous assurer vous qu'il est installé."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Répertoire introuvable."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "Ce champ n'autorise que des adresses IP correctes (ou des réseaux)"
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr "Veuillez désactiver la migration IMAP avant de désactiver cette option"
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Définissez au moins un réseau / une adresse autorisé"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
-msgstr "La partie gauche d'un courriel ne peut pas faire plus de 64 caractères."
+msgstr ""
+"La partie gauche d'un courriel ne peut pas faire plus de 64 caractères."
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "Une boîte aux lettres est requises pour créer des alias"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr "Statut inconnu"
@@ -181,9 +189,12 @@ msgstr "MX(s) valide(s)"
#: admin/app_settings.py:37
msgid ""
-"A list of IP or network address every MX record should match. A warning will"
-" be sent if a record does not respect it."
-msgstr "Une liste d'adresses IP ou réseau que chaque enregistrement MX doit respecter. Un avertissement sera envoyé dès qu'un enregistrement ne la respecte pas."
+"A list of IP or network address every MX record should match. A warning will "
+"be sent if a record does not respect it."
+msgstr ""
+"Une liste d'adresses IP ou réseau que chaque enregistrement MX doit "
+"respecter. Un avertissement sera envoyé dès qu'un enregistrement ne la "
+"respecte pas."
#: admin/app_settings.py:47
msgid "New domains must use authorized MX(s)"
@@ -193,7 +204,9 @@ msgstr "Les nouveaux domaines doivent utiliser un ou plusieurs MX autorisés"
msgid ""
"Prevent the creation of a new domain if its MX record does not use one of "
"the defined addresses."
-msgstr "Empêcher la création d'un domaine s'il n'a pas au moins un MX utilisant une adresse autorisée."
+msgstr ""
+"Empêcher la création d'un domaine s'il n'a pas au moins un MX utilisant une "
+"adresse autorisée."
#: admin/app_settings.py:59
msgid "Enable IPV6 checks"
@@ -217,7 +230,9 @@ msgstr "Activer les tests DKIM"
#: admin/app_settings.py:80
msgid "Check if every domain with DKIM signin enabled has a valid DNS record"
-msgstr "Vérifie que chaque domaine ayant la signature DKIM activée dispose d'un enregistrement DNS valide"
+msgstr ""
+"Vérifie que chaque domaine ayant la signature DKIM activée dispose d'un "
+"enregistrement DNS valide"
#: admin/app_settings.py:88
msgid "Enable DMARC checks"
@@ -233,7 +248,9 @@ msgstr "Activer les tests d'autoconfiguration"
#: admin/app_settings.py:99
msgid "Check if every domain has a valid records for autoconfiguration"
-msgstr "Vérifie que chaque domaine a les enregistrements nécessaires à l'autoconfiguration"
+msgstr ""
+"Vérifie que chaque domaine a les enregistrements nécessaires à "
+"l'autoconfiguration"
#: admin/app_settings.py:107
msgid "Enable DNSBL checks"
@@ -243,142 +260,177 @@ msgstr "Activer les vérifications DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Vérifie chaque domaine auprès des fournisseurs de DNSBL"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Serveur DNS personnalisé"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
-msgstr "Utiliser un serveur DNS personnalisé à la place de la configuration par défaut du serveur"
+msgstr ""
+"Utiliser un serveur DNS personnalisé à la place de la configuration par "
+"défaut du serveur"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Répertoire de stockage des clés DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
-msgstr "Chemin absolu du répertoire dans lequel seront stockées les clés DKIM. Assurez vous que ce répertoire appartient à l'utilisateur root et qu'il n'est pas lisible par le monde extérieur."
+msgstr ""
+"Chemin absolu du répertoire dans lequel seront stockées les clés DKIM. "
+"Assurez vous que ce répertoire appartient à l'utilisateur root et qu'il "
+"n'est pas lisible par le monde extérieur."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Taille par défaut d'une clé DKIM"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Taille par défaut en octets des clés DKIM nouvellement générées."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Quota de domaine par défaut"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
-msgstr "Quota par défaut (en Mo) appliqué aux domaines fraichement créés et ne spécifiant pas de valeur. 0 signifie qu'aucun quota ne sera appliqué."
+msgstr ""
+"Quota par défaut (en Mo) appliqué aux domaines fraichement créés et ne "
+"spécifiant pas de valeur. 0 signifie qu'aucun quota ne sera appliqué."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Limite d'envoi par défaut du domaine"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
-msgstr "Nombre maximal de messages que les nouveaux domaines seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
+msgstr ""
+"Nombre maximal de messages que les nouveaux domaines seront autorisés à "
+"envoyer par jour. Laisser vide pour n'indiquer aucune limite."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Boites"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Gérer les boites sur le système de fichiers"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
-msgstr "Renommer ou supprimer les boites sur le système de fichiers quand elles sont renommées ou supprimées dans Modoboa"
+msgstr ""
+"Renommer ou supprimer les boites sur le système de fichiers quand elles sont "
+"renommées ou supprimées dans Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Quota par défaut pour une boîte aux lettres"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
-msgstr "Quota par défaut (en Mo) appliqué aux nouveaux domaines quand aucune valeur n'est spécifiée. Une valeur de 0 signifie pas de quota."
+msgstr ""
+"Quota par défaut (en Mo) appliqué aux nouveaux domaines quand aucune valeur "
+"n'est spécifiée. Une valeur de 0 signifie pas de quota."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Limite d'envoi par défaut d'une boîte aux lettres"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
-msgstr "Nombre maximal de messages que les nouveaux comptes seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
+msgstr ""
+"Nombre maximal de messages que les nouveaux comptes seront autorisés à "
+"envoyer par jour. Laisser vide pour n'indiquer aucune limite."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Suppression automatique de compte"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
-msgstr "Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en même temps"
+msgstr ""
+"Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en "
+"même temps"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Création automatique de domaine/boite aux lettres"
-#: admin/app_settings.py:221
-msgid ""
-"Create a domain and a mailbox when an account is automatically created."
-msgstr "Créer un domaine et une boite aux lettres quand un compte est créé automatiquement."
+#: admin/app_settings.py:233
+msgid "Create a domain and a mailbox when an account is automatically created."
+msgstr ""
+"Créer un domaine et une boite aux lettres quand un compte est créé "
+"automatiquement."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Créer un alias quand une boite aux lettres est renommée"
-#: admin/app_settings.py:233
-msgid "Create an alias using the old address when a mailbox is renamed."
-msgstr "Créer un alias en utilisant l'ancienne adresse quand une boite aux lettres est renommée."
-
#: admin/app_settings.py:245
+msgid "Create an alias using the old address when a mailbox is renamed."
+msgstr ""
+"Créer un alias en utilisant l'ancienne adresse quand une boite aux lettres "
+"est renommée."
+
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr "Alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr "Les alias peuvent cibler n'importe quel domaine"
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
-msgstr "Autoriser les alias à cibler n'importe quel domaine, pas uniquement les domaines locaux."
+msgstr ""
+"Autoriser les alias à cibler n'importe quel domaine, pas uniquement les "
+"domaines locaux."
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr "Cibles interdites pour les alias"
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
-msgstr "Une liste de domaines que les alias ne peuvent pas cibler (séparés par une virgule)."
+msgstr ""
+"Une liste de domaines que les alias ne peuvent pas cibler (séparés par une "
+"virgule)."
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr "Cibles autorisées pour les alias"
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
-msgstr "Une liste de domaines que les alias peuvent cibler (séparés par une virgule)."
+msgstr ""
+"Une liste de domaines que les alias peuvent cibler (séparés par une virgule)."
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administration"
@@ -398,6 +450,35 @@ msgstr "Ouverte"
msgid "Closed"
msgstr "Fermée"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "Le MX {} est listé par le fournisseur de DNSBL {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Le domaine n'a pas d'enregistrement MX"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Le domaine {} n'a pas d'enregistrement MX"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Enregistrement MX incorrect : {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] problème(s) de MX pour le domaine {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "alias de domaine"
@@ -420,8 +501,8 @@ msgstr "Vous n'êtes pas autorisé à importer des domaines"
msgid "You are not allowed to import domain aliases."
msgstr "Vous n'êtes pas autorisé à importer des alias de domaine."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Aucun enregistrement DNS trouvé pour %s."
@@ -431,11 +512,11 @@ msgstr "Aucun enregistrement DNS trouvé pour %s."
msgid "No %(type)s record for %(name)s"
msgstr "Aucun enregistrement %(type)s trouvé pour %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Aucun serveur de noms fonctionnel trouvé"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "Timeout de résolution DNS, impossible de requêter %s pour l'instant"
@@ -461,7 +542,9 @@ msgstr "%d objets importés avec succès"
#: admin/management/commands/subcommands/_import.py:97
msgid "CSV file is not encoded in UTF-8, attempting to guess encoding"
-msgstr "Le fichier CSV n'est pas encodé en UTF-8, tentative de détermination de l'encodage"
+msgstr ""
+"Le fichier CSV n'est pas encodé en UTF-8, tentative de détermination de "
+"l'encodage"
#: admin/management/commands/subcommands/_import.py:112
#, python-format
@@ -471,13 +554,16 @@ msgstr "Lire le fichier CSV en utilisant l'encodage %(encoding)s"
#: admin/management/commands/subcommands/_import.py:123
#, python-format
msgid "Unable to decode CSV file using %(encoding)s encoding"
-msgstr "Impossible de décoder le fichier CSV en utilisant l'encodage %(encoding)s"
+msgstr ""
+"Impossible de décoder le fichier CSV en utilisant l'encodage %(encoding)s"
#: admin/management/commands/subcommands/_manage_dkim_keys.py:29
msgid ""
"DKIM path non-writable (either a permission issue or the directory does not "
"exist)"
-msgstr "Le chemin d'accès DKIM n'est pas modifiable (soit à cause d'un problème de permission, soit parce que le répertoire n'existe pas)"
+msgstr ""
+"Le chemin d'accès DKIM n'est pas modifiable (soit à cause d'un problème de "
+"permission, soit parce que le répertoire n'existe pas)"
#: admin/management/commands/subcommands/_manage_dkim_keys.py:52
msgid "Failed to generate DKIM private key"
@@ -487,35 +573,6 @@ msgstr "Echec lors de la génération de la clé privée DKIM"
msgid "Failed to generate DKIM public key"
msgstr "Echec lors de la génération de la clé publique DKIM"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "Le MX {} est listé par le fournisseur de DNSBL {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Le domaine n'a pas d'enregistrement MX"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Le domaine {} n'a pas d'enregistrement MX"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Enregistrement MX incorrect : {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] problème(s) de MX pour le domaine {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domaine introuvable."
@@ -600,7 +657,9 @@ msgstr "Activer la signature DKIM"
#: admin/models/domain.py:63
msgid ""
"If you activate this feature, a DKIM key will be generated for this domain."
-msgstr "Si vous activez cette fonctionnalité, une clé DKIM sera générée pour ce domain."
+msgstr ""
+"Si vous activez cette fonctionnalité, une clé DKIM sera générée pour ce "
+"domain."
#: admin/models/domain.py:70
msgid "Key length"
@@ -621,11 +680,15 @@ msgstr "{} : valeur incorrecte de quota pour ce domaine"
#: admin/models/domain.py:343
msgid "{}: invalid default mailbox quota value for domain"
-msgstr "{} : la valeur du quota par défaut des boîtes aux lettres est incorrecte pour ce domaine"
+msgstr ""
+"{} : la valeur du quota par défaut des boîtes aux lettres est incorrecte "
+"pour ce domaine"
#: admin/models/domain.py:350
msgid "{}: default mailbox quota cannot be greater than domain quota"
-msgstr "{} : le quota par défaut de la boîte aux lettres ne peut pas être supérieur au quota du domaine"
+msgstr ""
+"{} : le quota par défaut de la boîte aux lettres ne peut pas être supérieur "
+"au quota du domaine"
#: admin/models/domain_alias.py:36
msgid "The alias name"
@@ -678,31 +741,38 @@ msgstr "La boite {} existe déjà"
msgid ""
"Modoboa detected that domain %(domain)s is listed by the following DNSBL "
"providers:"
-msgstr "Modoboa a détecté que le domaine %(domain)s est listé par les fournisseurs de DNSBL suivants :"
+msgstr ""
+"Modoboa a détecté que le domaine %(domain)s est listé par les fournisseurs "
+"de DNSBL suivants :"
#: admin/templates/admin/notifications/domain_in_dnsbl.html:11
msgid ""
"The domain's reputation will be affected and there is a chance that emails "
"coming from it are considered as spam. You should contact those providers "
"and ask them to unlist detected IP address(es)."
-msgstr "La réputation de ce domaine sera affectée et il est probable que les emails venant de lui soient considérés comme du spam. Vous devriez contacter ces fournisseurs pour leur demander de délister la/les adresse(s) détectée(s)."
+msgstr ""
+"La réputation de ce domaine sera affectée et il est probable que les emails "
+"venant de lui soient considérés comme du spam. Vous devriez contacter ces "
+"fournisseurs pour leur demander de délister la/les adresse(s) détectée(s)."
#: admin/templates/admin/notifications/domain_invalid_mx.html:3
#, python-format
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
-msgstr "Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX valide :"
+msgstr ""
+"Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX "
+"valide :"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Aucun enregistrement MX trouvé pour %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Format d'adresse IP incorrect pour %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr "Aucun enregistrement AAAA trouvé pour %s"
@@ -717,7 +787,9 @@ msgstr "La phrase est sensible à la casse"
#: amavis/app_settings.py:19
msgid "Value should match amavisd.conf variable $localpart_is_case_sensitive"
-msgstr "La valeur doit correspondre à la variable $localpart_is_case_sensitive dans amavisd.conf"
+msgstr ""
+"La valeur doit correspondre à la variable $localpart_is_case_sensitive dans "
+"amavisd.conf"
#: amavis/app_settings.py:27
msgid "Recipient delimiter"
@@ -725,7 +797,9 @@ msgstr "Séparateur de destinataire"
#: amavis/app_settings.py:29
msgid "Value should match amavisd.conf variable $recipient_delimiter"
-msgstr "La valeur doit correspondre à la variable $recipient_delimiter de amavisd.conf"
+msgstr ""
+"La valeur doit correspondre à la variable $recipient_delimiter de "
+"amavisd.conf"
#: amavis/app_settings.py:41
msgid "Quarantine settings"
@@ -749,7 +823,9 @@ msgstr "Supprimer les messages libérés"
#: amavis/app_settings.py:68
msgid "Remove messages marked as released while cleaning up the database"
-msgstr "Supprimer les messages marqués comme relâchés pendant le nettoyage de la base de données"
+msgstr ""
+"Supprimer les messages marqués comme relâchés pendant le nettoyage de la "
+"base de données"
#: amavis/app_settings.py:76
msgid "Amavis connection mode"
@@ -817,7 +893,8 @@ msgstr "Activer l'apprentissage manuel"
#: amavis/app_settings.py:154
msgid "Allow super administrators to manually train Spamassassin"
-msgstr "Autorise les super administrateurs à entrainer manuellement Spamassassin"
+msgstr ""
+"Autorise les super administrateurs à entrainer manuellement Spamassassin"
#: amavis/app_settings.py:161
msgid "Is Spamassassin local?"
@@ -859,7 +936,9 @@ msgstr "Activer l'apprentissage manuel niveau domaine"
msgid ""
"Allow domain administrators to train Spamassassin (within dedicated per-"
"domain databases)"
-msgstr "Autorise les administrateurs de domaine à entrainer Spamassassin (au sein de bases dédiées par domaine)"
+msgstr ""
+"Autorise les administrateurs de domaine à entrainer Spamassassin (au sein de "
+"bases dédiées par domaine)"
#: amavis/app_settings.py:215
msgid "Enable per-user manual learning"
@@ -869,13 +948,15 @@ msgstr "Activer l'apprentissage manuel par utilisateur"
msgid ""
"Allow simple users to personally train Spamassassin (within a dedicated "
"database)"
-msgstr "Autorise les utilisateur à entrainer personnellement Spamassassin (au sein d'une base dédiée)"
+msgstr ""
+"Autorise les utilisateur à entrainer personnellement Spamassassin (au sein "
+"d'une base dédiée)"
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "Affichage"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr "Nombre de messages affichés par page"
@@ -891,17 +972,23 @@ msgstr "Amavis"
msgid ""
"AMAVIS_DEFAULT_DATABASE_ENCODING does not match the character encoding used "
"by the Amavis database."
-msgstr "AMAVIS_DEFAULT_DATABASE_ENCODING ne correspond pas à l'encodage de caractère utilisé par la base de données Amavis."
+msgstr ""
+"AMAVIS_DEFAULT_DATABASE_ENCODING ne correspond pas à l'encodage de caractère "
+"utilisé par la base de données Amavis."
#: amavis/checks/settings_checks.py:12
msgid ""
"Check your database character encoding and set/update "
"AMAVIS_DEFAULT_DATABASE_ENCODING."
-msgstr "Vérifiez l'encodage de caractère utilisé par votre base de données et renseignez / mettez à jour AMAVIS_DEFAULT_DATABASE_ENCODING."
+msgstr ""
+"Vérifiez l'encodage de caractère utilisé par votre base de données et "
+"renseignez / mettez à jour AMAVIS_DEFAULT_DATABASE_ENCODING."
#: amavis/checks/settings_checks.py:19
msgid "Modoboa Amavis has not been tested using the selected database engine."
-msgstr "Modoboa Amavis n'a pas été testé avec le moteur de base de données selectionné."
+msgstr ""
+"Modoboa Amavis n'a pas été testé avec le moteur de base de données "
+"selectionné."
#: amavis/checks/settings_checks.py:20
msgid "Try using PostgreSQL, MySQL or MariaDB."
@@ -950,7 +1037,9 @@ msgstr "défaut"
#: amavis/models.py:111
msgid "Bypass virus checks or not. Choose 'default' to use global settings."
-msgstr "Désactiver le filtrage des virus ou non. Choisir 'défaut' pour utiliser les paramètres globaux."
+msgstr ""
+"Désactiver le filtrage des virus ou non. Choisir 'défaut' pour utiliser les "
+"paramètres globaux."
#: amavis/models.py:115
msgid "Spam filter"
@@ -958,7 +1047,9 @@ msgstr "Filtrage du spam"
#: amavis/models.py:125
msgid "Bypass spam checks or not. Choose 'default' to use global settings."
-msgstr "Désactiver le filtrage du spam ou non. Choisir 'défaut' pour utiliser les paramètres globaux."
+msgstr ""
+"Désactiver le filtrage du spam ou non. Choisir 'défaut' pour utiliser les "
+"paramètres globaux."
#: amavis/models.py:129
msgid "Banned filter"
@@ -966,7 +1057,9 @@ msgstr "Filtrage des messages bannis"
#: amavis/models.py:139
msgid "Bypass banned checks or not. Choose 'default' to use global settings."
-msgstr "Désactiver le filtrage des messages bannis ou non. Choisir 'défaut' pour utiliser les paramètres globaux."
+msgstr ""
+"Désactiver le filtrage des messages bannis ou non. Choisir 'défaut' pour "
+"utiliser les paramètres globaux."
#: amavis/models.py:170
msgid "Spam marker"
@@ -974,9 +1067,11 @@ msgstr "Marquage du spam"
#: amavis/models.py:176
msgid ""
-"Modify spam subject using the specified text. Choose 'default' to use global"
-" settings."
-msgstr "Modifier le sujet du spam en utilisant le texte spécifié. Choisir 'défaut' pour utiliser les paramètres globaux."
+"Modify spam subject using the specified text. Choose 'default' to use global "
+"settings."
+msgstr ""
+"Modifier le sujet du spam en utilisant le texte spécifié. Choisir 'défaut' "
+"pour utiliser les paramètres globaux."
#: amavis/templates/amavis/notifications/pending_requests.html:3
#, python-format
@@ -1044,7 +1139,9 @@ msgstr "Période entre deux réponses automatiques"
#: autoreply/app_settings.py:20
msgid ""
"Number of days to wait before sending a new auto-reply to the same recipient"
-msgstr "Attendre ce nombre de jours avant l'envoi d'une nouvelle réponse automatique au même destinataire"
+msgstr ""
+"Attendre ce nombre de jours avant l'envoi d'une nouvelle réponse automatique "
+"au même destinataire"
#: autoreply/app_settings.py:27 autoreply/app_settings.py:36
msgid "Default subject"
@@ -1053,14 +1150,19 @@ msgstr "Sujet par défaut"
#: autoreply/app_settings.py:29
msgid ""
"Default subject used when an auto-reply message is created automatically"
-msgstr "Sujet par défaut utilisé quand un message de réponse automatique est crée automatiquement"
+msgstr ""
+"Sujet par défaut utilisé quand un message de réponse automatique est crée "
+"automatiquement"
#: autoreply/app_settings.py:38
#, python-format
msgid ""
"Default content used when an auto-reply message is created automatically. "
"The '%(name)s' macro will be replaced by the user's full name."
-msgstr "Contenu par défaut utilisé quand un message de réponse automatique est créé automatiquement. La macro %(name)s sera remplacée par le nom complet de l'utilisateur "
+msgstr ""
+"Contenu par défaut utilisé quand un message de réponse automatique est créé "
+"automatiquement. La macro %(name)s sera remplacée par le nom complet de "
+"l'utilisateur "
#: autoreply/apps.py:15
msgid "Automatic replies"
@@ -1097,7 +1199,9 @@ msgstr "URL du serveur"
#: calendars/app_settings.py:19
msgid ""
"The URL of your Radicale server. It will be used to construct calendar URLs."
-msgstr "L'URL de votre serveur Radicale. Elle sera utilisée pour construire les URL des calendriers."
+msgstr ""
+"L'URL de votre serveur Radicale. Elle sera utilisée pour construire les URL "
+"des calendriers."
#: calendars/app_settings.py:31
msgid "Rights management"
@@ -1117,9 +1221,11 @@ msgstr "Autoriser l'administration des calendriers"
#: calendars/app_settings.py:48
msgid "Allow domain administrators to manage user calendars (read and write)"
-msgstr "Autoriser les administrateurs de domaine à gérer les calendriers des utilisateurs (lecture et écriture)"
+msgstr ""
+"Autoriser les administrateurs de domaine à gérer les calendriers des "
+"utilisateurs (lecture et écriture)"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Divers"
@@ -1131,17 +1237,19 @@ msgstr "Taille maximale des fichiers ICS"
#: calendars/app_settings.py:68
msgid ""
"Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
-msgstr "Taille maximale en octets des fichiers ICS importés (ou KB, MB, GB si précisé)"
+msgstr ""
+"Taille maximale en octets des fichiers ICS importés (ou KB, MB, GB si "
+"précisé)"
#: calendars/app_settings.py:89 core/api/v2/viewsets.py:205
msgid "Calendars"
msgstr "Calendriers"
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "L'emplacement du serveur n'est pas renseigné, veuillez corriger"
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr "Le fichier téléchargé est trop gros (max : {} octets)"
@@ -1157,7 +1265,9 @@ msgstr "Synchroniser le carnet d'adresse en utilisant CardDAV"
msgid ""
"Choose to synchronize or not your address book using CardDAV. You will be "
"able to access your contacts from the outside."
-msgstr "Choisir de synchroniser ou non votre carnet d'adresse en utilisant CardDAV. Vous pourrez ainsi accéder à vos contacts depuis l'extérieur."
+msgstr ""
+"Choisir de synchroniser ou non votre carnet d'adresse en utilisant CardDAV. "
+"Vous pourrez ainsi accéder à vos contacts depuis l'extérieur."
#: contacts/app_settings.py:29
msgid "Synchronization frequency"
@@ -1218,9 +1328,11 @@ msgstr "2FA est déjà activf"
#: core/api/v1/serializers.py:87
#, python-format
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
-msgstr "Echec de modification des paramètres TFA depuis '%(addr)s' en tant qu'utilisateur '%(user)s'"
+msgstr ""
+"Echec de modification des paramètres TFA depuis '%(addr)s' en tant "
+"qu'utilisateur '%(user)s'"
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr "Mot de passe incorrect"
@@ -1232,27 +1344,24 @@ msgstr "Authentification 2 facteurs non activée"
msgid "Local"
msgstr "Locale"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Profil utilisateur"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Syntaxe invalide"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Nombre invalide de tours"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Ce code n'est pas valide"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213
-#: core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
-msgstr "Veuillez utiliser le code suivant pour récupérer votre mot de passe Modoboa : {}"
+msgstr ""
+"Veuillez utiliser le code suivant pour récupérer votre mot de passe "
+"Modoboa : {}"
#: core/api/v2/viewsets.py:176
msgid "Administration console"
@@ -1275,531 +1384,587 @@ msgid "Calendar"
msgstr "Calendrier"
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Authentification"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Type d'authentification"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Le backend utilisé pour l'authentification"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Méthode de chiffrement par défaut"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
-msgstr "Méthode utilisée pour chiffrer les mots de passe des boites aux lettres"
+msgstr ""
+"Méthode utilisée pour chiffrer les mots de passe des boites aux lettres"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Tours"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
-msgstr "Nombre de tours à utiliser (sha256crypt et sha512crypt uniquement). Doit être compris entre 1000 et 999999999 inclue."
+msgstr ""
+"Nombre de tours à utiliser (sha256crypt et sha512crypt uniquement). Doit "
+"être compris entre 1000 et 999999999 inclue."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Mettre à jour la méthode de chiffrement du mot de passe à la connexion"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
-msgstr "Mise à jour du mot de passe utilisateur lors d'une connexion pour utiliser la méthode de chiffrement par défaut"
+msgstr ""
+"Mise à jour du mot de passe utilisateur lors d'une connexion pour utiliser "
+"la méthode de chiffrement par défaut"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Mot de passe par défaut"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Mot de passe par défaut pour les comptes créés automatiquement."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Taille d'un mot de passe aléatoire"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Taille des mots de passe générés aléatoirement."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr "Autoriser les caractères spéciaux pour les mots de passe aléatoires"
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
-msgstr "Activer les caractères spéciaux dans les mots de passe générés aléatoirement."
+msgstr ""
+"Activer les caractères spéciaux dans les mots de passe générés aléatoirement."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "URL de service de mise à jour du mot de passe"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
-msgstr "L'URL d'une page externe où les utilisateurs pourront mettre à jour leur mot de passe. Elle s'applique uniquement aux utilisateurs non locaux, c'est à dire ceux créés après une authentification externe réussie (LDAP, SMTP)."
+msgstr ""
+"L'URL d'une page externe où les utilisateurs pourront mettre à jour leur mot "
+"de passe. Elle s'applique uniquement aux utilisateurs non locaux, c'est à "
+"dire ceux créés après une authentification externe réussie (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Annonce pour la récupération de mot de passe"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
-msgstr "Un message temporaire qui sera affiché sur la page de récupération de mot de passe"
+msgstr ""
+"Un message temporaire qui sera affiché sur la page de récupération de mot de "
+"passe"
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Activer la récupération de mot de passe par SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
-msgstr "Activer la récupération de mot de passe par SMS pour les utilisateurs ayant renseigné un numéro de téléphone"
+msgstr ""
+"Activer la récupération de mot de passe par SMS pour les utilisateurs ayant "
+"renseigné un numéro de téléphone"
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "Fournisseur SMS"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
-msgstr "Choisir un fournisseur pour envoyer les SMS de récupération de mot de passe"
+msgstr ""
+"Choisir un fournisseur pour envoyer les SMS de récupération de mot de passe"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr "LDAP"
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Adresse du serveur"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "L'adresse IP ou le nom DNS du serveur LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Port utilisé par le serveur"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Le port TCP utilisé par le serveur LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Activer le serveur secondaire (secours)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
-msgstr "Activer un serveur LDAP secondaire qui sera utilisé si le principal est en échec"
+msgstr ""
+"Activer un serveur LDAP secondaire qui sera utilisé si le principal est en "
+"échec"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Adresse du serveur secondaire"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "L'adresse IP ou le nom DNS du serveur LDAP secondaire"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Port du serveur secondaire"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Le numéro du port TCP utilisé par le serveur LDAP secondaire"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Utiliser une connexion sécurisée"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Utiliser une connexion SSL/STARTTLS pour accéder au serveur LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Indiquer si le serveur LDAP est un Active Directory ou pas"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Groupes administrateurs"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
-"Members of those LDAP Posix groups will be created as domain administrators."
-" Use ';' characters to separate groups."
-msgstr "Les membres de ces groupes LDAP (Posix) seront créés en tant qu'administrateurs de domaine. Utiliser des caractères ';' pour séparer les groupes."
+"Members of those LDAP Posix groups will be created as domain administrators. "
+"Use ';' characters to separate groups."
+msgstr ""
+"Les membres de ces groupes LDAP (Posix) seront créés en tant "
+"qu'administrateurs de domaine. Utiliser des caractères ';' pour séparer les "
+"groupes."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Type de groupe"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Le type de groupe LDAP à utiliser avec votre annuaire."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Base de recherche des groupes"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
-msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les groupes"
+msgstr ""
+"Le nom distinctif de la base de recherche utilisée pour rechercher les "
+"groupes"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Attribut 'mot de passe'"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "L'attribut utilisé pour stocker les mots de passe"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "Paramètres d'authentification LDAP"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Méthode d'authentification"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Choisir la méthode d'authentification à utiliser"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "ND de connexion"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
-msgstr "Le nom distinctif à utiliser pour les connections au serveur LDAP. Laisser vide pour une connexion anonyme"
+msgstr ""
+"Le nom distinctif à utiliser pour les connections au serveur LDAP. Laisser "
+"vide pour une connexion anonyme"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Mot de passe de connexion"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
-msgstr "Le mot de passe à utiliser pour les connections au serveur LDAP (avec 'ND de connexion')"
+msgstr ""
+"Le mot de passe à utiliser pour les connections au serveur LDAP (avec 'ND de "
+"connexion')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Base de recherche des utilisateurs"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
-msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les utilisateurs"
+msgstr ""
+"Le nom distinctif de la base de recherche utilisée pour rechercher les "
+"utilisateurs"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtre de recherche"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
-msgstr "Un filtre de recherche optionel (ex. '(objectClass=person)'). Pour être valide, il doit être entouré de parenthèses."
+msgstr ""
+"Un filtre de recherche optionel (ex. '(objectClass=person)'). Pour être "
+"valide, il doit être entouré de parenthèses."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Modèle de nom distinctif utilisateur"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "Le modèle utilisé pour construire le nom distinctif d'un utilisateur. Il doit contenir un espace réservé (ex. %(user)s)"
+msgstr ""
+"Le modèle utilisé pour construire le nom distinctif d'un utilisateur. Il "
+"doit contenir un espace réservé (ex. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "Paramètres de synchronisation LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Activer l'export LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
-msgstr "Activer la synchronisation automatique entre la base de données locale et l'annuaire LDAP"
+msgstr ""
+"Activer la synchronisation automatique entre la base de données locale et "
+"l'annuaire LDAP"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Supprimer un compte LDAP distant lorsqu'un compte local est supprimé"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
-msgstr "Supprimer un compte LDAP distant lorsqu'un compte local supprimé, autrement il sera désactivé."
+msgstr ""
+"Supprimer un compte LDAP distant lorsqu'un compte local supprimé, autrement "
+"il sera désactivé."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Modèle des DN de compte"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "Le modèle utilisé pour construite un DN de compte (nom unique). Il doit contenir un emplacement (c'est à dire 1%(user)s)"
+msgstr ""
+"Le modèle utilisé pour construite un DN de compte (nom unique). Il doit "
+"contenir un emplacement (c'est à dire 1%(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Activer l'import LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
-msgstr "Activer la synchronisation des comptes entre un annuaire LDAP et la base de données locale"
+msgstr ""
+"Activer la synchronisation des comptes entre un annuaire LDAP et la base de "
+"données locale"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Attribut nom d'utilisateur"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
-msgstr "Le nom de l'attribut LDAP dans lequel le nom d'utilisateur peut être trouvé."
+msgstr ""
+"Le nom de l'attribut LDAP dans lequel le nom d'utilisateur peut être trouvé."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Activer la synchronisation LDAP pour Dovecot"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
-msgstr "Les paramètres d'authentification LDAP seront appliqués à la configuration de Dovecot."
+msgstr ""
+"Les paramètres d'authentification LDAP seront appliqués à la configuration "
+"de Dovecot."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Fichier de configuration Dovecot pour LDAP"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
-msgstr "Emplacement du fichier de configuration qui contient les paramètres LDAP de Dovecot"
+msgstr ""
+"Emplacement du fichier de configuration qui contient les paramètres LDAP de "
+"Dovecot"
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Tableau de bord"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr "Message d'accueil personnalisé"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr "Un message d'accueil qui sera affiché à la place de celui par défaut"
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Flux RSS personnalisé"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
-msgstr "Afficher un flux RSS personnalisé aux revendeurs et administrateurs de domaine"
+msgstr ""
+"Afficher un flux RSS personnalisé aux revendeurs et administrateurs de "
+"domaine"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr "Afficher le flux RSS personnalisé aux super admins"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr "Afficher le flux RSS personnalisé aussi aux super administrateurs"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Masquer le widget des fonctionnalités"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
-msgstr "Masquer le widget des fonctionnalités pour les revendeurs et les administrateurs de domaine"
+msgstr ""
+"Masquer le widget des fonctionnalités pour les revendeurs et les "
+"administrateurs de domaine"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr "Thème"
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr "Couleur principale du thème"
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
-msgstr "Couleur principale du thème (code hexadécimal), utilisée par exemple comme couleur de fond dans le menu de gauche"
+msgstr ""
+"Couleur principale du thème (code hexadécimal), utilisée par exemple comme "
+"couleur de fond dans le menu de gauche"
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr "Couleur principale du thème (version plus claire)"
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr "Couleur principale du thème (code hexadécimal)"
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr "Couleur principale du thème (version plus sombre)"
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr "Couleur secondaire du thème"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
-msgstr "Couleur secondaire du thème (code hexadécimal), utilisée par exemple comme couleur de fond de certains boutons"
+msgstr ""
+"Couleur secondaire du thème (code hexadécimal), utilisée par exemple comme "
+"couleur de fond de certains boutons"
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr "Couleur des libellés du thème"
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr "Couleur du thème pour les libellés (code hexadécimal)"
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notifications"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Adresse d'envoi"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Adresse utilisée pour envoyer les notifications."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "API publique"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Activer la communication"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Vérifie automatiquement si une nouvelle version est disponible"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Vérifier les nouvelles versions"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Envoyer un email quand de nouvelles versions sont trouvées"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
-msgstr "Envoyer un email pour notifier les administrateurs à propos des nouvelles versions"
+msgstr ""
+"Envoyer un email pour notifier les administrateurs à propos des nouvelles "
+"versions"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Destinataire"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Destinataire des emails de notification pour les nouvelles versions"
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Envoyer des statistiques"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
-msgstr "Envoyer des statistiques à l'API publique de Modoboa (compteurs et extensions utilisées)"
+msgstr ""
+"Envoyer des statistiques à l'API publique de Modoboa (compteurs et "
+"extensions utilisées)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr "Activer le suivi des comptes inactifs"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
-"Allow the administrator to set a threshold (in days) beyond which an account"
-" is considered inactive if the user hasn't logged in"
-msgstr "Autoriser les administrateurs à définir in seuil (en jours) à partir duquel un compte est considéré comme inactif si l'utilisateur ne s'est pas connecté"
+"Allow the administrator to set a threshold (in days) beyond which an account "
+"is considered inactive if the user hasn't logged in"
+msgstr ""
+"Autoriser les administrateurs à définir in seuil (en jours) à partir duquel "
+"un compte est considéré comme inactif si l'utilisateur ne s'est pas connecté"
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Seuil des comptes inactifs"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
-"An account with a last login date greater than this threshold (in days) will"
-" be considered as inactive"
-msgstr "Un compte avec une date de dernière connexion antérieure à ce seuil sera considéré comme inactif"
+"An account with a last login date greater than this threshold (in days) will "
+"be considered as inactive"
+msgstr ""
+"Un compte avec une date de dernière connexion antérieure à ce seuil sera "
+"considéré comme inactif"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Intervalle de vérification des notifications"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervalle entre deux vérifications de notification (en secondes)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Age maximal d'un enregistrement du journal"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "L'age maximal en jours d'un enregistrement du journal"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr "Durée de rétention dans l'historique des messages"
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
-msgstr "Durée de rétention (en jours) d'un message dans l'historique des messages"
+msgstr ""
+"Durée de rétention (en jours) d'un message dans l'historique des messages"
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Eléments par page"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Nombre d'éléments affichés par page"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Redirection par défaut"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "La redirection appliquée par défaut quand aucune application n'est spécifiée"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
"between summer/winter time (ie the same local time occuring twice due to "
"clock change)."
-msgstr "Vous avez défini USE_TZ à False, ce qui peut entraîner des problèmes lors des transitions entre l'heure d'été et l'heure d'hiver (c.-à-d. La même heure locale se produisant deux fois en raison d'un changement d'horloge)."
+msgstr ""
+"Vous avez défini USE_TZ à False, ce qui peut entraîner des problèmes lors "
+"des transitions entre l'heure d'été et l'heure d'hiver (c.-à-d. La même "
+"heure locale se produisant deux fois en raison d'un changement d'horloge)."
#: core/checks.py:19
msgid "Set `USE_TZ = True` in settings.py"
@@ -1811,33 +1976,40 @@ msgstr "La méthode de chiffrement que vous utilisez est obsolète."
#: core/checks.py:24
msgid "Upgrade your password scheme to a stronger one"
-msgstr "Mettez à jour votre méthode de chiffrement de mot de passe vers une plus sûre"
+msgstr ""
+"Mettez à jour votre méthode de chiffrement de mot de passe vers une plus sûre"
#: core/checks.py:30
msgid ""
"Oauth2 application for dovecot has not been found. Webmail and some other "
"features won't be available."
-msgstr "Application Oauth2 non trouvée pour dovecot. Le webmail ainsi que d'autres fonctionnalités ne seront pas disponibles."
+msgstr ""
+"Application Oauth2 non trouvée pour dovecot. Le webmail ainsi que d'autres "
+"fonctionnalités ne seront pas disponibles."
#: core/checks.py:34
msgid ""
-"Visit : "
-"https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
-"oauth2"
-msgstr "Visiter : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-oauth2"
+"Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"dovecot.html#dovecot-oauth2"
+msgstr ""
+"Visiter : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"dovecot.html#dovecot-oauth2"
#: core/checks.py:41
msgid ""
"Oauth2 application for radicale has not been found. Calendar and some other "
"features won't be available."
-msgstr "Application Oauth2 pour Radicale non trouvée. Le calendrier ainsi que d'autres fonctionnalités ne seront pas disponibles."
+msgstr ""
+"Application Oauth2 pour Radicale non trouvée. Le calendrier ainsi que "
+"d'autres fonctionnalités ne seront pas disponibles."
#: core/checks.py:45
msgid ""
-"Visit : "
-"https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
-"oauth2"
-msgstr "Consulter : https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-oauth2"
+"Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"radicale.html#radicale-oauth2"
+msgstr ""
+"Consulter : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"radicale.html#radicale-oauth2"
#: core/constants.py:6
msgid "Simple user"
@@ -1924,7 +2096,8 @@ msgstr "Une ou plusieurs mises à jour sont disponibles!"
#: core/handlers.py:140
#, python-format
msgid "You are still using a deprecated password scheme (%s)"
-msgstr "Vous utilisez encore une méthode de chiffrement de mot de passe obsolète (%s)"
+msgstr ""
+"Vous utilisez encore une méthode de chiffrement de mot de passe obsolète (%s)"
#: core/management/commands/communicate_with_public_api.py:42
msgid "[modoboa] Update(s) available"
@@ -1964,7 +2137,8 @@ msgstr "Une adresse e-mail alternative ou de secours."
#: core/models.py:150
msgid "Failed to update password: LDAP module not installed"
-msgstr "Echec de la mise à jour du mot de passe : le module LDAP n'est pas installé"
+msgstr ""
+"Echec de la mise à jour du mot de passe : le module LDAP n'est pas installé"
#: core/models.py:185 policyd/core.py:117
msgid "account"
@@ -1984,7 +2158,9 @@ msgstr "L'utilisateur de base '{}' doit avoir une adresse email correcte"
#: core/models.py:383
msgid "username and email fields must not differ for '{}'"
-msgstr "les champs nom d'utilisateur et email ne doivent pas être différents pour '{}'"
+msgstr ""
+"les champs nom d'utilisateur et email ne doivent pas être différents pour "
+"'{}'"
#: core/password_validation.py:25
msgid "Password must contain at least {} digit."
@@ -2016,7 +2192,9 @@ msgstr[2] "Le mot de passe doit contenir au moins {} caractères spéciaux."
#: core/password_validation.py:70
msgid "Your password must contain a combination of different character types."
-msgstr "Votre mot de passe doit contenir une combinaison de différents types de caractère."
+msgstr ""
+"Votre mot de passe doit contenir une combinaison de différents types de "
+"caractère."
#: core/sms_backends/ovh.py:21 core/sms_backends/ovh.py:102
msgid "API endpoint"
@@ -2073,9 +2251,15 @@ msgid ""
msgid_plural ""
"\n"
" The following updates are available:\n"
-msgstr[0] "\nLa mise à jour suivante est disponible :\n"
-msgstr[1] "\nLes mises à jour suivantes sont disponibles :\n"
-msgstr[2] "\nLes mises à jour suivantes sont disponibles :\n"
+msgstr[0] ""
+"\n"
+"La mise à jour suivante est disponible :\n"
+msgstr[1] ""
+"\n"
+"Les mises à jour suivantes sont disponibles :\n"
+msgstr[2] ""
+"\n"
+"Les mises à jour suivantes sont disponibles :\n"
#: core/utils.py:43
msgid "The core part of Modoboa"
@@ -2089,12 +2273,16 @@ msgstr "Utiliseur '%s' connecté avec succès"
#: core/views/auth.py:128
#, python-format
msgid "Password scheme mismatch. Updating %s password"
-msgstr "La méthode de chiffrement du mot de passe diffère. Mise à jour du mot de passe de %s"
+msgstr ""
+"La méthode de chiffrement du mot de passe diffère. Mise à jour du mot de "
+"passe de %s"
#: core/views/auth.py:135
#, python-format
msgid "Password hash parameter missmatch. Updating %s password"
-msgstr "Le paramètre de hash du mot de passe ne correspond pas. Mise à jour %s du mot de passe"
+msgstr ""
+"Le paramètre de hash du mot de passe ne correspond pas. Mise à jour %s du "
+"mot de passe"
#: core/views/auth.py:173
msgid "User '{}' successfully logged out"
@@ -2110,7 +2298,9 @@ msgstr "Activer les recherches inversées"
#: dmarc/forms.py:23
msgid "Enable reverse DNS lookups (reports will be longer to display)"
-msgstr "Activer les recherches DNS inversées (les rapports seront plus longs à afficher)"
+msgstr ""
+"Activer les recherches DNS inversées (les rapports seront plus longs à "
+"afficher)"
#: dmarc/forms.py:42
msgid "DMARC"
@@ -2121,7 +2311,7 @@ msgid "Not resolved"
msgstr "Non résolu"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Aucun"
@@ -2297,7 +2487,9 @@ msgstr "Filtre d'exclusion de dossier"
msgid ""
"Use a regular expression to explicitly include folders in sync. Example: "
"^Trash$|Del"
-msgstr "Utiliser une expression régulière pour explicitement inclure des dossiers à synchroniser. Exemple : ^Trash$|Del"
+msgstr ""
+"Utiliser une expression régulière pour explicitement inclure des dossiers à "
+"synchroniser. Exemple : ^Trash$|Del"
#: imap_migration/app_settings.py:74
msgid "Folder Filter Inclusions"
@@ -2308,7 +2500,10 @@ msgid ""
"A comma seperated list of folders to explicitly include in sync even if "
"filtered by the Folder Filter Exclusions. Example: debian.user, "
"debian.personal "
-msgstr "Une liste de dossiers séparés par des virgules à explicitement inclure pendant la synchronisation même s'ils sont concernés par le filtre d'exclusion. Exemple debian.user, debian.personal"
+msgstr ""
+"Une liste de dossiers séparés par des virgules à explicitement inclure "
+"pendant la synchronisation même s'ils sont concernés par le filtre "
+"d'exclusion. Exemple debian.user, debian.personal"
#: imap_migration/apps.py:20
msgid "IMAP Migration"
@@ -2318,12 +2513,16 @@ msgstr "Migration IMAP"
msgid ""
"Automatic domain/mailbox creation is disabled which means IMAP "
"authentication won't work."
-msgstr "La création automatique de domaine/compte est désactivée, ce qui veut dire que l'authentification IMAP ne fonctionnera pas."
+msgstr ""
+"La création automatique de domaine/compte est désactivée, ce qui veut dire "
+"que l'authentification IMAP ne fonctionnera pas."
#: imap_migration/checks.py:16
msgid ""
"Go to the online parameters panel (admin tab) and activate this feature."
-msgstr "Rendez vous sur le panneau de configuration des paramètres (onglet Administration) et activez cette fonctionnalité."
+msgstr ""
+"Rendez vous sur le panneau de configuration des paramètres (onglet "
+"Administration) et activez cette fonctionnalité."
#: ldapsync/lib.py:82
msgid "Failed to create LDAP account: {}"
@@ -2392,13 +2591,17 @@ msgstr "Admins de domaine"
msgid ""
"Maximum number of allowed domain administrators for a new administrator. (0 "
"to deny any creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal d'admins de domaine pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les création illimitées)"
+msgstr ""
+"Nombre maximal d'admins de domaine pour un nouvel administrateur. (0 pour "
+"interdire toute création, -1 pour autoriser les création illimitées)"
#: limits/app_settings.py:41
msgid ""
"Maximum number of allowed domains for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal de domaines pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+msgstr ""
+"Nombre maximal de domaines pour un nouvel administrateur. (0 pour interdire "
+"toute création, -1 pour autoriser les créations illimitées)"
#: limits/app_settings.py:49 limits/app_settings.py:123 limits/constants.py:22
#: limits/constants.py:76
@@ -2407,15 +2610,19 @@ msgstr "Alias de domaine"
#: limits/app_settings.py:52
msgid ""
-"Maximum number of allowed domain aliases for a new administrator. (0 to deny"
-" any creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal d'alias de domaine pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+"Maximum number of allowed domain aliases for a new administrator. (0 to deny "
+"any creation, -1 to allow unlimited creations)"
+msgstr ""
+"Nombre maximal d'alias de domaine pour un nouvel administrateur. (0 pour "
+"interdire toute création, -1 pour autoriser les créations illimitées)"
#: limits/app_settings.py:64
msgid ""
"Maximum number of allowed mailboxes for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal de boites pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+msgstr ""
+"Nombre maximal de boites pour un nouvel administrateur. (0 pour interdire "
+"toute création, -1 pour autoriser les créations illimitées)"
#: limits/app_settings.py:73 limits/app_settings.py:146 limits/constants.py:39
#: limits/constants.py:92
@@ -2426,7 +2633,9 @@ msgstr "Alias de boite"
msgid ""
"Maximum number of allowed aliases for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal d'alias de boite pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+msgstr ""
+"Nombre maximal d'alias de boite pour un nouvel administrateur. (0 pour "
+"interdire toute création, -1 pour autoriser les créations illimitées)"
#: limits/app_settings.py:84 limits/constants.py:59
msgid "Quota"
@@ -2436,7 +2645,9 @@ msgstr "Quota"
msgid ""
"The quota a reseller will be allowed to share between the domains he "
"creates. (0 means no quota)"
-msgstr "Le quota qu'un revendeur sera autorisé à partager entre les domaines qu'il créé. (0 signifie pas de quota)"
+msgstr ""
+"Le quota qu'un revendeur sera autorisé à partager entre les domaines qu'il "
+"créé. (0 signifie pas de quota)"
#: limits/app_settings.py:98
msgid "Default per-domain limits"
@@ -2452,27 +2663,36 @@ msgstr "Activer ou désactiver les limites par domaine"
#: limits/app_settings.py:114
msgid ""
-"Maximum number of allowed domain administrators for a new domain. (0 to deny"
-" any creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal d'administrateurs de domaine autorisés pour un nouveau domaine (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+"Maximum number of allowed domain administrators for a new domain. (0 to deny "
+"any creation, -1 to allow unlimited creations)"
+msgstr ""
+"Nombre maximal d'administrateurs de domaine autorisés pour un nouveau "
+"domaine (0 pour interdire toute création, -1 pour autoriser les créations "
+"illimitées)"
#: limits/app_settings.py:126
msgid ""
"Maximum number of allowed domain aliases for a new domain. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal d'alias de domaine autorisés pour un nouveau domaine. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+msgstr ""
+"Nombre maximal d'alias de domaine autorisés pour un nouveau domaine. (0 pour "
+"interdire toute création, -1 pour autoriser les créations illimitées)"
#: limits/app_settings.py:138
msgid ""
"Maximum number of allowed mailboxes for a new domain. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Nombre maximal de boites aux lettres autorisées pour un nouveau domaine. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+msgstr ""
+"Nombre maximal de boites aux lettres autorisées pour un nouveau domaine. (0 "
+"pour interdire toute création, -1 pour autoriser les créations illimitées)"
#: limits/app_settings.py:149
msgid ""
-"Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
-" -1 to allow unlimited creations)"
-msgstr "Nombre maximal d'alias autorisés pour un nouveau domaine. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
+"Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
+"-1 to allow unlimited creations)"
+msgstr ""
+"Nombre maximal d'alias autorisés pour un nouveau domaine. (0 pour interdire "
+"toute création, -1 pour autoriser les créations illimitées)"
#: limits/apps.py:16
msgid "Limits"
@@ -2537,7 +2757,9 @@ msgstr "illimité"
#: maillog/api/v2/serializers.py:35
msgid "You must provide start and end dates when period is custom"
-msgstr "Vous devez fournir des dates de début et fin quand la période est personnalisée"
+msgstr ""
+"Vous devez fournir des dates de début et fin quand la période est "
+"personnalisée"
#: maillog/apps.py:20
msgid "Path to the log file"
@@ -2649,7 +2871,9 @@ msgstr "Activer les identifiants PDF"
#: pdfcredentials/app_settings.py:21
msgid "Enabled PDF credentials document generation on account creation."
-msgstr "Activer la génération d'un document PDF d'identifiants à la création d'un compte."
+msgstr ""
+"Activer la génération d'un document PDF d'identifiants à la création d'un "
+"compte."
#: pdfcredentials/app_settings.py:32
msgid "Documents storage"
@@ -2675,7 +2899,9 @@ msgstr "Supprimer les documents après le premier téléchargement"
msgid ""
"Automatically delete a document just after its first download from this "
"interface"
-msgstr "Supprimer automatiquement un document juste après son premier téléchargement depuis cette interface"
+msgstr ""
+"Supprimer automatiquement un document juste après son premier "
+"téléchargement depuis cette interface"
#: pdfcredentials/app_settings.py:68
msgid "Generate documents only at account creation"
@@ -2685,7 +2911,10 @@ msgstr "Générer les documents à la création des comptes uniquement"
msgid ""
"Generate a new document only when a new account is created. If set to no, a "
"new document will be created each time a password is updated."
-msgstr "Génère un nouveau document uniquement lors de la création d'un compte. Si défini à non, un nouveau document sera généré chaque fois qu'un mot de passe est changé."
+msgstr ""
+"Génère un nouveau document uniquement lors de la création d'un compte. Si "
+"défini à non, un nouveau document sera généré chaque fois qu'un mot de passe "
+"est changé."
#: pdfcredentials/app_settings.py:84
msgid "Customization options"
@@ -2723,7 +2952,9 @@ msgstr "Inclure les paramètres de connexion pour client mail"
msgid ""
"Include required SMTP and IMAP connection information to configure a mail "
"client, a tablet or a phone"
-msgstr "Inclure les paramètres de connexion nécessaires pour configurer un client mail, une tablette ou un téléphone"
+msgstr ""
+"Inclure les paramètres de connexion nécessaires pour configurer un client "
+"mail, une tablette ou un téléphone"
#: pdfcredentials/app_settings.py:123 pdfcredentials/documents.py:133
msgid "SMTP server address"
@@ -2784,7 +3015,11 @@ msgid ""
"Dear %s, this document contains the credentials you will need\n"
"to connect to Modoboa. Learn the content and destroy\n"
"the document as soon as possible.\n"
-msgstr "\nCher %s, ce document contient les identifiants dont vous aurez\nbesoin pour vous connecter à Modoboa. Apprenez les puis détruisez\nce document le plus rapidement possible.\n"
+msgstr ""
+"\n"
+"Cher %s, ce document contient les identifiants dont vous aurez\n"
+"besoin pour vous connecter à Modoboa. Apprenez les puis détruisez\n"
+"ce document le plus rapidement possible.\n"
#: pdfcredentials/documents.py:95
msgid "Web panel:"
@@ -2803,7 +3038,10 @@ msgid ""
"\n"
"Here you can view your emails anytime online, create filters or manage\n"
"your contacts.\n"
-msgstr "\nD'ici vous pouvez consulter vos emails en ligne n'importe quand, créer des filtres ou gérer vos contacts.\n"
+msgstr ""
+"\n"
+"D'ici vous pouvez consulter vos emails en ligne n'importe quand, créer des "
+"filtres ou gérer vos contacts.\n"
#: pdfcredentials/documents.py:126
msgid "Please change your password!"
@@ -2815,13 +3053,17 @@ msgstr "Configuration PC/Tablette/Smartphone :"
#: pdfcredentials/documents.py:153
msgid "Use those settings for your computer, tablet or phone."
-msgstr "Utilisez ces paramètres pour votre ordinateur, votre tablette ou votre téléphone."
+msgstr ""
+"Utilisez ces paramètres pour votre ordinateur, votre tablette ou votre "
+"téléphone."
#: pdfcredentials/handlers.py:35
msgid ""
"Failed to create PDF_credentials directory. Please check the permissions or "
"the path."
-msgstr "Echec lors de la création du répertoire PDF_credentials. Veuillez vérifier les permissions et le chemin d'accès."
+msgstr ""
+"Echec lors de la création du répertoire PDF_credentials. Veuillez vérifier "
+"les permissions et le chemin d'accès."
#: pdfcredentials/handlers.py:64
msgid "Download PDF credentials"
@@ -2829,18 +3071,23 @@ msgstr "Télécharger les identifiants PDF"
#: pdfcredentials/lib.py:29
msgid "Can't write to selected directory to store PDF documents"
-msgstr "Impossible d'écrire dans le répertoire sélectionné pour stocker les documents PDF"
+msgstr ""
+"Impossible d'écrire dans le répertoire sélectionné pour stocker les "
+"documents PDF"
#: pdfcredentials/lib.py:35
#, python-format
msgid "Failed to create the directory that will contain PDF documents (%s)"
-msgstr "Echec lors de la création du répertoire qui contiendra les documents PDF (%s)"
+msgstr ""
+"Echec lors de la création du répertoire qui contiendra les documents PDF (%s)"
#: pdfcredentials/lib.py:82
msgid ""
"Failed to create PDF_credentials file. Please check the permissions or the "
"path."
-msgstr "Echec lors de la création du fichier PDF_credentials. Veuillez vérifier les permissions et le chemin d'accès."
+msgstr ""
+"Echec lors de la création du fichier PDF_credentials. Veuillez vérifier les "
+"permissions et le chemin d'accès."
#: policyd/core.py:99
msgid "Daily sending limit reached"
@@ -2857,7 +3104,8 @@ msgstr "[modoboa] Limite d'envoi atteinte"
#: policyd/templates/policyd/notifications/limit_reached.html:3
#, python-format
msgid "Daily limit of the following %(ltype)s has been reached: %(name)s."
-msgstr "Limite quotidienne d'envoi du %(ltype)s suivant a été atteinte : %(name)s."
+msgstr ""
+"Limite quotidienne d'envoi du %(ltype)s suivant a été atteinte : %(name)s."
#: relaydomains/api/v1/serializers.py:24
msgid "Unsupported service"
@@ -2897,9 +3145,11 @@ msgstr "Chemin d'accès vers le fichier des clés"
#: rspamd/app_settings.py:21
msgid ""
-"Absolute path of the file which contains paths to DKIM private keys. Must be"
-" readable by _rspamd group or user."
-msgstr "Chemin absolu vers le fichier qui contient les chemins vers les clés privées DKIM. Doit être accessible en lecture par l'utilisateur ou le groupe _rspamd."
+"Absolute path of the file which contains paths to DKIM private keys. Must be "
+"readable by _rspamd group or user."
+msgstr ""
+"Chemin absolu vers le fichier qui contient les chemins vers les clés privées "
+"DKIM. Doit être accessible en lecture par l'utilisateur ou le groupe _rspamd."
#: rspamd/app_settings.py:30
msgid "Selector map path"
@@ -2909,7 +3159,9 @@ msgstr "Chemin d'accès vers le fichier des sélecteurs"
msgid ""
"Absolute path of the file which contains names of DKIM selectors. Must be "
"readable by _rspamd group or user."
-msgstr "Chemin absolu vers le fichier qui contient le nom des sélecteurs DKIM. Doit être accessible en lecture par l'utilisateur ou le groupe _rspamd."
+msgstr ""
+"Chemin absolu vers le fichier qui contient le nom des sélecteurs DKIM. Doit "
+"être accessible en lecture par l'utilisateur ou le groupe _rspamd."
#: rspamd/app_settings.py:51
msgid "Rspamd dashboard location"
@@ -2917,10 +3169,12 @@ msgstr "Emplacement du tableau de bord Rspamd"
#: rspamd/app_settings.py:53
msgid ""
-"Location of the rspamd dashboard. Can either be a relative URL (eg. "
-"'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
+"Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
+"rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
"guidance on the Super-Admin dashboard."
-msgstr "Emplacement du dashboard rspamd. Peut être soit une URL relative (ie. '/rspamd') ou une URL complète (ie. 'https://rspamd.domain.tld')."
+msgstr ""
+"Emplacement du dashboard rspamd. Peut être soit une URL relative (ie. '/"
+"rspamd') ou une URL complète (ie. 'https://rspamd.domain.tld')."
#: rspamd/apps.py:18
msgid "Rspamd"
@@ -2999,7 +3253,7 @@ msgstr "est"
msgid "is not"
msgstr "n'est pas"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Sujet"
@@ -3045,7 +3299,8 @@ msgstr "Arrêter le traitement"
#: sievefilters/lib.py:49
msgid "Connection to MANAGESIEVE server failed, check your configuration"
-msgstr "La connexion au serveur MANAGESIEVE a échoué, vérifiez votre configuration"
+msgstr ""
+"La connexion au serveur MANAGESIEVE a échoué, vérifiez votre configuration"
#: sievefilters/lib.py:76
msgid "Not enough space on server"
@@ -3100,7 +3355,9 @@ msgstr "Mot de passe oublié ?"
msgid ""
"Your password has been set. You may go ahead and sign "
"in now."
-msgstr "Votre mot de passe a été défini. Vous pouvez continuer et vous connecter dès maintenant."
+msgstr ""
+"Votre mot de passe a été défini. Vous pouvez continuer et vous connecter dès maintenant."
#: templates/registration/password_reset_confirm.html:8
msgid "Change password"
@@ -3116,7 +3373,10 @@ msgstr "Soumettre"
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
-msgstr "Le lien de réinitialisation du mot de passe était invalide, probablement parce qu'il a déjà été utilisé. Merci de demander une nouvelle réinitialisation de mot de passe."
+msgstr ""
+"Le lien de réinitialisation du mot de passe était invalide, probablement "
+"parce qu'il a déjà été utilisé. Merci de demander une nouvelle "
+"réinitialisation de mot de passe."
#: templates/registration/password_reset_confirm_code.html:22
msgid "Enter the code you've just received by SMS"
@@ -3136,7 +3396,12 @@ msgid ""
"exists with the email you entered. You should receive them shortly.
"
"If you don't receive an email, please make sure you've entered your "
"primary address, and check your spam folder.
"
-msgstr "Nous vous avons envoyé par email les instructions pour définir votre mot de passe, pour peu qu'un compte avec l'email que vous avez renseigné existe. Vous devriez les recevoir rapidement.
Si vous ne recevez pas d'email, merci de vérifier que vous avez renseigné votre adresse principale et de vérifier votre dossier spam.
"
+msgstr ""
+"Nous vous avons envoyé par email les instructions pour définir votre mot "
+"de passe, pour peu qu'un compte avec l'email que vous avez renseigné existe. "
+"Vous devriez les recevoir rapidement.
Si vous ne recevez pas d'email, "
+"merci de vérifier que vous avez renseigné votre adresse principale et de "
+"vérifier votre dossier spam.
"
#: templates/registration/password_reset_email.html:4
#: templates/registration/password_reset_email_v2.html:4
@@ -3144,14 +3409,18 @@ msgstr "Nous vous avons envoyé par email les instructions pour définir votr
msgid ""
"To initiate the password reset process for your %(username)s Modoboa "
"account, click the link below:"
-msgstr "Pour initier la procédure de réinitialisation du mot de passe de votre compte Modoboa %(username)s, cliquez sur le lien ci-dessous :"
+msgstr ""
+"Pour initier la procédure de réinitialisation du mot de passe de votre "
+"compte Modoboa %(username)s, cliquez sur le lien ci-dessous :"
#: templates/registration/password_reset_email.html:10
#: templates/registration/password_reset_email_v2.html:10
msgid ""
"If clicking the link above doesn't work, please copy and paste the URL in a "
"new browser window instead."
-msgstr "Si cliquer sur lien ci-dessous ne fonctionne pas, merci de copier / coller cette URL dans une nouvelle fenêtre navigateur à la place."
+msgstr ""
+"Si cliquer sur lien ci-dessous ne fonctionne pas, merci de copier / coller "
+"cette URL dans une nouvelle fenêtre navigateur à la place."
#: templates/registration/password_reset_email.html:14
#: templates/registration/password_reset_email_v2.html:14
@@ -3180,9 +3449,12 @@ msgstr "Mot de passe jetable"
#: templates/registration/twofactor_code_verify.html:35
msgid ""
-"Enter the code from the two-factor app on your mobile device. If you've lost"
-" your device, you may enter one of your recovery codes."
-msgstr "Renseignez le code provenant de l'application double-facteur de votre téléphone mobile. Si vous avez perdu votre téléphone, vous pouvez utiliser l'un de vos codes de récupération."
+"Enter the code from the two-factor app on your mobile device. If you've lost "
+"your device, you may enter one of your recovery codes."
+msgstr ""
+"Renseignez le code provenant de l'application double-facteur de votre "
+"téléphone mobile. Si vous avez perdu votre téléphone, vous pouvez utiliser "
+"l'un de vos codes de récupération."
#: templates/registration/twofactor_code_verify.html:42
msgid "Verify code"
@@ -3219,25 +3491,26 @@ msgstr "Taille maximale d'une pièce jointe"
#: webmail/app_settings.py:19
msgid "Maximum attachment size in bytes (or KB, MB, GB if specified)"
-msgstr "Taille maximale d'une pièce jointe en octets (ou KB, MG, GB si précisé)"
+msgstr ""
+"Taille maximale d'une pièce jointe en octets (ou KB, MG, GB si précisé)"
#: webmail/app_settings.py:67
msgid "SMTP settings"
msgstr "Paramètres SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr "Adresse de votre serveur SMTP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "Mode de connexion sécurisé"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr "Utiliser une connexion sécurisée pour accéder au serveur SMTP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr "Port d'écoute de votre serveur SMTP"
@@ -3249,95 +3522,101 @@ msgstr "Authentification requise"
msgid "Server needs authentication"
msgstr "Le serveur nécessite une authentification"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Server settings"
+msgid "Scheduling settings"
+msgstr "Paramètres du serveur"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Mode d'affichage par défaut"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr "Le mode par défaut utilisé pour afficher un message"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Activer l'affichage des liens HTML"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Activer/Désactiver l'affichage des liens HTML"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Définir le nombre maximal de messages affichés dans une page"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Taux de rafraichissement de la liste"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr "Taux de rafraichissement automatique de la liste (en secondes)"
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Largeur du conteneur des dossiers"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "La largeur du conteneur de la liste des dossiers"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Dossiers"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Dossier poubelle"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Dossier dans lequel vont les messages supprimés"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Dossier envoyé"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Dossier dans lequel vont les copies de messages envoyés"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Dossier brouillon"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Dossier dans lequel vont les brouillons"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "Dossier Junk"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "Dossier dans lequel les messages indésirables doivent aller"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr "Rédaction de messages"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr "Editeur par défaut"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr "L'éditeur à utiliser par défaut pour rédiger un message"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Texte de signature"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Signature email personnalisée"
@@ -3349,43 +3628,70 @@ msgstr "Réponse du serveur"
msgid "Failed to remove attachment: "
msgstr "Impossible de supprimer la pièce jointe :"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr "a écrit :"
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Date"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr "Message original"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Echec lors de la récupération du séparateur de hierarchie"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Boite de réception"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "Brouillons"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "Indésirables"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Envoyés"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Corbeille"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "La pièce jointe est trop grosse (limite : %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Profil utilisateur"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Redirection par défaut"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "La redirection appliquée par défaut quand aucune application n'est "
+#~ "spécifiée"
diff --git a/modoboa/locale/hu/LC_MESSAGES/django.po b/modoboa/locale/hu/LC_MESSAGES/django.po
index 871f47c94..5060b254b 100644
--- a/modoboa/locale/hu/LC_MESSAGES/django.po
+++ b/modoboa/locale/hu/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -41,14 +41,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -57,7 +57,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -65,13 +65,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -112,39 +111,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -236,141 +235,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -390,6 +399,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -412,8 +450,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -423,11 +461,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -479,35 +517,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -684,17 +693,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -863,11 +872,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1110,7 +1119,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1128,11 +1137,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1211,7 +1220,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1223,24 +1232,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1265,525 +1270,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2104,7 +2101,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2982,7 +2979,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3208,19 +3205,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3232,95 +3229,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3332,43 +3333,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/it/LC_MESSAGES/django.po b/modoboa/locale/it/LC_MESSAGES/django.po
index 9885da807..f8677be00 100644
--- a/modoboa/locale/it/LC_MESSAGES/django.po
+++ b/modoboa/locale/it/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2018-11-01 16:31+0000\n"
"Last-Translator: marcotrevisan \n"
"Language-Team: Italian (http://www.transifex.com/tonio/modoboa/language/"
@@ -51,14 +51,14 @@ msgstr ""
"Non può essere maggiore dello spazio massimo definito a livello di dominio"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Permesso negato."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Questo campo è obbligatorio"
@@ -69,7 +69,7 @@ msgstr ""
"Lista dei domini amministrati (solo per rivenditori e amministratori di "
"dominio)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Non consentito per questo ruolo."
@@ -77,13 +77,12 @@ msgstr "Non consentito per questo ruolo."
msgid "Must be equal to mailbox full_address"
msgstr "Deve essere uguale a full_address della casella di posta"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Questo campo è obbligatorio."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Il dominio locale {} non esiste"
@@ -126,41 +125,41 @@ msgstr "Non puoi definire uno spazio illimitato."
msgid "User '%s' already exists"
msgstr "L'utente '%s' esiste già"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Dev'essere un intero positivo"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl non trovato, assicurarsi che sia installato."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Cartella non trovata."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Definire almeno una rete / indirizzo autorizzato"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "É necessaria una casella"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -276,19 +275,29 @@ msgstr "Abilita i controlli DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Verifica ciascun dominio sui principali provider DNSBL"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "DNS server custom"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Usa un DNS server custom invece della configurazione a sever locale"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Cartella di salvataggio delle chiavi DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -298,19 +307,19 @@ msgstr ""
"salvate. Assicurarsi che questa cartella sia di proprietà dell'utente root e "
"che non sia leggibile da altri."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Lunghezza predefinita delle chiavi DKIM"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Lunghezza predefinita in numero di bit per nuove chiavi DKIM."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Quota predefinita per il domini"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -318,28 +327,28 @@ msgstr ""
"Quota predefinita (in MB) applicata ai nuovi domini che non la specificano. "
"Un valore 0 implica nessuna quota."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "Quota predefinita per il domini"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Caselle di posta"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Gestione delle caselle di posta nel filsystem"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -347,11 +356,11 @@ msgstr ""
"Rinomina o rimuovi le caselle di posta nel filesystem quando vengono "
"rinominate o cancellate in Modoboa "
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Dimensione massima predefinita per le mailbox"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created domains with no "
@@ -363,77 +372,77 @@ msgstr ""
"Dimensione massima predefinita (in MB) applicata per nuovi domini creati "
"senza alcun valore specificato. Un valore 0 indica nessun limite."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default mailbox quota"
msgid "Default mailbox sending limit"
msgstr "Dimensione massima predefinita per le mailbox"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Rimozione automatica dell'account"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
"Quando una casella postale viene rimossa rimuovi anche l'account associato"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Creazione automatica del domini/casella di posta elettronica"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Crea un dominio ed una casella di posta elettronica quando si crea un "
"account utente"
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Crea un alias quando una mailbox viene rinominata"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Crea un alias con il vecchio indirizzo quando una mailbox viene rinominata."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Amministrazione"
@@ -455,6 +464,39 @@ msgstr ""
msgid "Closed"
msgstr "Chiudi"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain {} has no MX record"
+msgid "Domain has no MX record"
+msgstr "Il dominio {} non ha record MX"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Il dominio {} non ha record MX"
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "MX records of {}"
+msgid "Invalid MX record: {}"
+msgstr "Record MX di {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "Il record MX per il dominio {0} non è valido: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] problema(/i) MX per il dominio {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] problema(/i) DNSBL per il dominio {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "alias del dominio"
@@ -477,8 +519,8 @@ msgstr "Non hai i permessi di importare domini"
msgid "You are not allowed to import domain aliases."
msgstr "Non hai i permessi di importare gli alias dominio"
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, fuzzy, python-format
#| msgid "No DNS records found for %s"
msgid "No DNS record found for %s"
@@ -490,11 +532,11 @@ msgstr "Nessun record DNS trovato per %s"
msgid "No %(type)s record for %(name)s"
msgstr "Nessun record MX per %s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Nessun DNS server funzionante trovato"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -551,39 +593,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Abilita la comunicazione con l'API pubblica di modoboa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain {} has no MX record"
-msgid "Domain has no MX record"
-msgstr "Il dominio {} non ha record MX"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Il dominio {} non ha record MX"
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "MX records of {}"
-msgid "Invalid MX record: {}"
-msgstr "Record MX di {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "Il record MX per il dominio {0} non è valido: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] problema(/i) MX per il dominio {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] problema(/i) DNSBL per il dominio {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Dominio non trovato."
@@ -784,17 +793,17 @@ msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
"Modoboa ha rilevato che il dominio %(domain)snon ha un record MX valido:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Nessun record MX per %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Formato non valido per l'indirizzo IP %(domain)s;%(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -1006,13 +1015,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display details"
msgid "Display"
msgstr "Mostra"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1307,7 +1316,7 @@ msgstr ""
"Permetti a questo amministratore di accedere alle caselle di posta degli "
"utenti"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Varie"
@@ -1325,11 +1334,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "Posizione del server non impostata, si prega di correggere."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1420,7 +1429,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1434,24 +1443,20 @@ msgstr ""
msgid "Local"
msgstr "Locale"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Profilo utente"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Sintassi errata"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Numero di cicli non valido"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1482,38 +1487,38 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Autenticazione"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Tipo di autenticazione"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Il backend utilizzato per l'autenticazione"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Schema password predefinito"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
"Schema utilizzato per la criptazione delle password delle caselle di posta"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Cicli"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1521,160 +1526,160 @@ msgstr ""
"Numero di cicli da utilizzare (valido per sha256crypt e sha512crypt). Deve "
"essere compreso tra 1000 e 999999999."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
#, fuzzy
#| msgid "Update password scheme"
msgid "Update password scheme at login"
msgstr "Aggiorna lo schema di password"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Aggiorna la password utente al login per usare lo schema di password "
"predefinito"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Password predefinita"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Password predefinita per gli account creati automaticamente."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Lunghezza della password casuale"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Lunghezza delle password generate casualmente"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Lunghezza delle password generate casualmente"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
#, fuzzy
#| msgid "Update password scheme"
msgid "Update password service URL"
msgstr "Aggiorna lo schema di password"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Indirizzo del server"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "L'indirizzo IP o il DNS name del server LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Porta del server"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Il numero della porta TCP utilizzata dal server LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
#, fuzzy
#| msgid "Server address"
msgid "Secondary server address"
msgstr "Indirizzo del server"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
#, fuzzy
#| msgid "The IP address or the DNS name of the LDAP server"
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "L'indirizzo IP o il DNS name del server LDAP"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
#, fuzzy
#| msgid "Server port"
msgid "Secondary server port"
msgstr "Porta del server"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
#, fuzzy
#| msgid "The TCP port number used by the LDAP server"
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Il numero della porta TCP utilizzata dal server LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Usa una connessione sicura"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Usa una connessione SSL/STARTTLS per l'accesso al server LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Segnala se il server LDAP è una Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Gruppi degli amministratori"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1683,51 +1688,51 @@ msgstr ""
"amministratori di dominio. Utilizza il carattere ';' per separare valori "
"multipli."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Tipo di gruppo"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Il tipo di gruppo LDAP da utilizzare nella Directory"
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Base di ricerca per i gruppi"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
"DN (Nome distinto univoco) della base di ricerca utilizzato per trovare i "
"gruppi"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Attributo della password"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "L'attributo utilizzato per memorizzare le password degli utenti"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
#, fuzzy
#| msgid "Authentication method"
msgid "LDAP authentication settings"
msgstr "Metodo di autenticazione"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Metodo di autenticazione"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Scegli il metodo di autenticazione da usare"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Collega DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1735,31 +1740,31 @@ msgstr ""
"DN (Nome distinto univoco) da usare quando ci si collega al server LDAP. "
"Lasciare vuoto per un collegamento anonimo"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Password del collegamento"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"La password da utilizzare quando ci si collega al server LDAP (con 'Collega "
"DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Base di ricerca per gli utenti"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
"DN (Nome distinto univoco) della base di ricerca utilizzata per cercare gli "
"utenti"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtro ricerca"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1767,11 +1772,11 @@ msgstr ""
"Stringa di filtraggio opzionale (p.es '(objectClass=person)'). Per essere "
"valida deve essere racchiusa tra parentesi."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Modello DN dell'utente"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1780,38 +1785,38 @@ msgstr ""
"Il modello utilizzato per comporre il DN degli utenti. Deve contenere un "
"segnaposto (p.es. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
#, fuzzy
#| msgid "LDAP settings"
msgid "LDAP synchronization settings"
msgstr "Impostazioni LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
#, fuzzy
#| msgid "User DN template"
msgid "Account DN template"
msgstr "Modello DN dell'utente"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, fuzzy, python-format
#| msgid ""
#| "The template used to construct a user's DN. It should contain one "
@@ -1823,204 +1828,204 @@ msgstr ""
"Il modello utilizzato per comporre il DN degli utenti. Deve contenere un "
"segnaposto (p.es. %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
#, fuzzy
#| msgid "Password attribute"
msgid "Username attribute"
msgstr "Attributo della password"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
#, fuzzy
#| msgid "Enable communication"
msgid "Enable Dovecot LDAP sync"
msgstr "Abilita comunicazione"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Messaggio personalizzato"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid "A custom message that will appear at the end of documents"
msgid "A welcome message that will be displayed instead the default one"
msgstr "Un messaggio personalizzato comparirà alla fine dei documenti"
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "RSS feed custom"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr "Mostra RSS feed custom a rivenditori e amministratori di dominio"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr "Mostra RSS feed custom a rivenditori e amministratori di dominio"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr "Mostra RSS feed custom a rivenditori e amministratori di dominio"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Nascondi il widget delle feature"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Email alternativa"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notifiche"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Indirizzo di invio"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Indirizzo email utilizzato per inviare le notifiche"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "API pubblica"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Abilita comunicazione"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Controlla automaticamente se è disponibile una nuova versione"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Controlla nuove versioni"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Destinatario"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Invia statistiche"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Invia statistiche all'API pubblica di modoboa (contatori ed estensioni "
"utilizzate)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Soglia account inattivo"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Soglia account inattivo"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -2028,48 +2033,38 @@ msgstr ""
"Un account con una data di ultimo accesso più vecchia di questa soglia (in "
"giorni) verrà considerato inattivo"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Intervallo notifiche"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervallo di tempo per la ricerca di nuove notifiche (in secondi)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Età massima dei log"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "La persistenza massima in giorni dei log"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Elementi per pagina"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Numero degli elementi visualizzati in ciascuna pagina"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Reindirizzamento principale predefinito"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Redirezione predefinita utilizzata quando non è specificata alcuna "
-"applicazione"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2416,7 +2411,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Nessuno"
@@ -3393,7 +3388,7 @@ msgstr "è"
msgid "is not"
msgstr "non è"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Oggetto"
@@ -3659,25 +3654,25 @@ msgstr ""
msgid "SMTP settings"
msgstr "Impostazioni SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Indirizzo del tuo server SMTP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Modalità di connessione sicura"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use a secured connection to access IMAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Usa una connessione sicura per accedere al server SMTP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3694,110 +3689,116 @@ msgstr "È richiesta l'autenticazione"
msgid "Server needs authentication"
msgstr "Il server richiede l'autenticazione"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Connection settings"
+msgid "Scheduling settings"
+msgstr "Impostazioni ManageSieve"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Modalità di visualizzazione del messaggio predefinita"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr ""
"La modalità di visualizzazione predefinita quando viene mostrato il messaggio"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Attiva la visualizzazione dei collegamenti HTML"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Attiva/Disattiva la visualizzazione dei collegamenti HTML"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Imposta il numero massimo di messaggi da visualizzare in una pagina"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Frequenza di aggiornamento dell'elenco"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Larghezza del contenitore delle caselle"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "Larghezza della lista delle caselle"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Cestino"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "Cartella dove finiscono i messaggi eliminati"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Inviati"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Cartella dove finiscono le copie dei messaggi spediti"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Bozze"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Cartella dove finiscono le bozze"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Sent folder"
msgid "Junk folder"
msgstr "Inviati"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "Cartella dove finiscono i messaggi eliminati"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Composizione messaggi"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Editor predefinito"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "L'editor predefinito da usare quando si scrive un messaggio"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Testo signature"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Signature delle e-mail personalizzato dall'utente"
@@ -3813,47 +3814,74 @@ msgstr "Indirizzo del server"
msgid "Failed to remove attachment: "
msgstr "Rimozione allegato fallita: "
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Data"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Tutti i messaggi"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Impossibile recuperare il delimitatore delle gerarchie"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Drafts folder"
msgid "Drafts"
msgstr "Bozze"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "L'allegato è troppo grande (limite: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Profilo utente"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Reindirizzamento principale predefinito"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Redirezione predefinita utilizzata quando non è specificata alcuna "
+#~ "applicazione"
diff --git a/modoboa/locale/ja_JP/LC_MESSAGES/django.po b/modoboa/locale/ja_JP/LC_MESSAGES/django.po
index bfa789be4..c3423c4f5 100644
--- a/modoboa/locale/ja_JP/LC_MESSAGES/django.po
+++ b/modoboa/locale/ja_JP/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
+#
# Translators:
# cwatanab , 2016
# Ian Moone, 2014
@@ -12,25 +12,30 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: INOUE Daisuke, 2025\n"
-"Language-Team: Japanese (Japan) (http://app.transifex.com/tonio/modoboa/language/ja_JP/)\n"
+"Language-Team: Japanese (Japan) (http://app.transifex.com/tonio/modoboa/"
+"language/ja_JP/)\n"
+"Language: ja_JP\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ja_JP\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: admin/api/v1/serializers.py:39
msgid ""
"Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. "
"A value of 0 means no quota."
-msgstr "すべてのメールボックス全体の容量制限。KB、MB(デフォルト)または GB で指定します。値を 0 にすると容量制限しないことを意味します。"
+msgstr ""
+"すべてのメールボックス全体の容量制限。KB、MB(デフォルト)または GB で指定し"
+"ます。値を 0 にすると容量制限しないことを意味します。"
#: admin/api/v1/serializers.py:46
msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
-msgstr "メールボックスの容量制限のデフォルト値を MB で指定します。値を 0 にすると容量制限しません。"
+msgstr ""
+"メールボックスの容量制限のデフォルト値を MB で指定します。値を 0 にすると容量"
+"制限しません。"
#: admin/api/v1/serializers.py:94
msgid "domain alias with this name already exists"
@@ -45,14 +50,14 @@ msgid "Cannot be greater than domain quota"
msgstr "ドメインの容量制限より大きくすることはできません"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "権限がありません。"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "このフィールドは必須です"
@@ -61,7 +66,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "管理下ドメインリスト ( リセラーとドメイン管理者のみ )"
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "このロールは許可されていません。"
@@ -69,13 +74,12 @@ msgstr "このロールは許可されていません。"
msgid "Must be equal to mailbox full_address"
msgstr "メールボックスの full_address と同じにしてください"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "このフィールドは必須です。"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "ローカルドメイン {} は、存在しません"
@@ -116,39 +120,39 @@ msgstr "容量制限を無制限に設定できません。"
msgid "User '%s' already exists"
msgstr "ユーザー「%s」はすでに存在します"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "正の整数を入力してください"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl が見つかりません。インストールを確認してください。"
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "ディレクトリーが見つかりません。"
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "有効な IP アドレス ( またはネットワーク ) を入力してください"
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr "この設定を無効にする前に、IMAP 移行を無効にしてください。"
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "認証済みのネットワークかアドレスを少なくとも 1 つ以上定義してください"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr "メールアドレスの左部分を 64 文字以下にしてください。"
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "エイリアスを作成するにはメールボックスが必要です。"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr "不明な状態"
@@ -178,9 +182,11 @@ msgstr "有効な MX"
#: admin/app_settings.py:37
msgid ""
-"A list of IP or network address every MX record should match. A warning will"
-" be sent if a record does not respect it."
-msgstr "各 MX レコードにマッチすることを期待する IP またはネットワークアドレスのリスト。レコードが期待通りでない場合は、警告を送信します。"
+"A list of IP or network address every MX record should match. A warning will "
+"be sent if a record does not respect it."
+msgstr ""
+"各 MX レコードにマッチすることを期待する IP またはネットワークアドレスのリス"
+"ト。レコードが期待通りでない場合は、警告を送信します。"
#: admin/app_settings.py:47
msgid "New domains must use authorized MX(s)"
@@ -190,7 +196,9 @@ msgstr "新しいドメインには承認済みの MX 利用を強制"
msgid ""
"Prevent the creation of a new domain if its MX record does not use one of "
"the defined addresses."
-msgstr "MX レコードが定義したアドレスのいずれかを使用していない場合、新しいドメインの作成を防止します。"
+msgstr ""
+"MX レコードが定義したアドレスのいずれかを使用していない場合、新しいドメインの"
+"作成を防止します。"
#: admin/app_settings.py:59
msgid "Enable IPV6 checks"
@@ -214,7 +222,9 @@ msgstr "DKIM チェック有効"
#: admin/app_settings.py:80
msgid "Check if every domain with DKIM signin enabled has a valid DNS record"
-msgstr "各 DKIM 署名のあるすべてのドメインに有効な DNS レコードがあるかをチェックします"
+msgstr ""
+"各 DKIM 署名のあるすべてのドメインに有効な DNS レコードがあるかをチェックしま"
+"す"
#: admin/app_settings.py:88
msgid "Enable DMARC checks"
@@ -240,142 +250,169 @@ msgstr "DNSBL チェック有効"
msgid "Check every domain against major DNSBL providers"
msgstr "各ドメインを主な DNSBL でチェックします"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "カスタム DNS サーバー"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
-msgstr "ローカルサーバーで設定された DNS サーバーではなく、カスタム DNS サーバーを利用します"
+msgstr ""
+"ローカルサーバーで設定された DNS サーバーではなく、カスタム DNS サーバーを利"
+"用します"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "DKIM キー保存ディレクトリー"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
-msgstr "DKIM プライベートキーを保存するディレクトリーの絶対パス。このディレクトリーが root ユーザー所有で、外の世界からは読めないことを確認してください。"
+msgstr ""
+"DKIM プライベートキーを保存するディレクトリーの絶対パス。このディレクトリー"
+"が root ユーザー所有で、外の世界からは読めないことを確認してください。"
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "DKIM キー長のデフォルト"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "新たに生成する DKIM キーの長さのデフォルト値です。"
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "ドメイン容量制限のデフォルト"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
-msgstr "特に値をせずに新たにドメインを作成する際の容量制限のデフォルト値 ( MB ) 。値を 0 にすると容量制限しません。"
+msgstr ""
+"特に値をせずに新たにドメインを作成する際の容量制限のデフォルト値 ( MB ) 。値"
+"を 0 にすると容量制限しません。"
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "ドメイン送信通数制限のデフォルト"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
-msgstr "新たにドメインを作成する際、1 日間に送信可能なメッセージ数。空にすると制限しません。"
+msgstr ""
+"新たにドメインを作成する際、1 日間に送信可能なメッセージ数。空にすると制限し"
+"ません。"
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "メールボックス"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "ファイルシステムのメールボックスも操作"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
-msgstr "Modoboa でメールボックスを変名・削除すると、ファイルシステム上も変名・削除する"
+msgstr ""
+"Modoboa でメールボックスを変名・削除すると、ファイルシステム上も変名・削除す"
+"る"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "メールボックス容量制限のデフォルト"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
-msgstr "特に値をせずに新たにドメインを作成する際の、メールボックスの容量制限のデフォルト値 ( MB ) 。値を 0 にすると容量制限しません。"
+msgstr ""
+"特に値をせずに新たにドメインを作成する際の、メールボックスの容量制限のデフォ"
+"ルト値 ( MB ) 。値を 0 にすると容量制限しません。"
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "メールボックス送信通数制限のデフォルト"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
-msgstr "新たにメールボックスを作成する際に設定する、1 日に送信できるメッセージ数。空にすると制限しません。"
+msgstr ""
+"新たにメールボックスを作成する際に設定する、1 日に送信できるメッセージ数。空"
+"にすると制限しません。"
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "自動アカウント削除"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "メールボックスを削除すると、関連するアカウントも削除します"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "自動ドメイン・メールボックス作成"
-#: admin/app_settings.py:221
-msgid ""
-"Create a domain and a mailbox when an account is automatically created."
+#: admin/app_settings.py:233
+msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "アカウントを作成するとドメインとメールボックスも自動で作成します。"
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "メールボックスの変名でエイリアスを作成"
-#: admin/app_settings.py:233
-msgid "Create an alias using the old address when a mailbox is renamed."
-msgstr "メールボックスの名前を変更する際、古いアドレスをエイリアスとして作成します。"
-
#: admin/app_settings.py:245
+msgid "Create an alias using the old address when a mailbox is renamed."
+msgstr ""
+"メールボックスの名前を変更する際、古いアドレスをエイリアスとして作成します。"
+
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr "エイリアス"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr "エイリアスはどのドメインにも設定可"
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
-msgstr "エイリアスは、ローカルドメインだけでなく、どのドメインに対しても設定できます。"
+msgstr ""
+"エイリアスは、ローカルドメインだけでなく、どのドメインに対しても設定できま"
+"す。"
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr "エイリアス対象ブロックリスト"
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
-msgstr "エイリアスの対象として設定不可とするドメインのリスト ( カンマ区切り ) 。"
+msgstr ""
+"エイリアスの対象として設定不可とするドメインのリスト ( カンマ区切り ) 。"
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr "エイリアス対象許可リスト"
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr "エイリアスの対象として設定可とするドメインのリスト ( カンマ区切り ) 。"
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "管理"
@@ -395,6 +432,35 @@ msgstr "要対応"
msgid "Closed"
msgstr "済"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} が DNSBL・{} に掲載されています"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "ドメインに MX レコードがありません"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "{} ドメインは MX レコードがありません"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "無効な MX レコード : {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "{0} ドメインの MX レコードが無効です : {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] {} ドメインの MX 問題"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] {} ドメインの DNSBL 問題"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "ドメインエイリアス"
@@ -417,8 +483,8 @@ msgstr "ドメインをインポートする権限がありません"
msgid "You are not allowed to import domain aliases."
msgstr "ドメインエイリアスをインポートする権限がありません"
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "%s の DNS レコードが見つかりません"
@@ -428,14 +494,15 @@ msgstr "%s の DNS レコードが見つかりません"
msgid "No %(type)s record for %(name)s"
msgstr "%(name)s の %(type)s レコードなし"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "稼働しているサーバーが見つかりません"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
-msgstr "DNS 名前解決でタイムアウトが発生し、今のところ %s の問い合わせはできません"
+msgstr ""
+"DNS 名前解決でタイムアウトが発生し、今のところ %s の問い合わせはできません"
#: admin/lib.py:241
msgid "DNS name is too long: {}"
@@ -458,7 +525,8 @@ msgstr "%d 個のオブジェクトをインポートしました"
#: admin/management/commands/subcommands/_import.py:97
msgid "CSV file is not encoded in UTF-8, attempting to guess encoding"
-msgstr "CSV ファイルが UTF-8 でエンコードされていません。エンコードの推測を試みます"
+msgstr ""
+"CSV ファイルが UTF-8 でエンコードされていません。エンコードの推測を試みます"
#: admin/management/commands/subcommands/_import.py:112
#, python-format
@@ -474,7 +542,9 @@ msgstr "%(encoding)s エンコードでは CSV ファイルをデコードでき
msgid ""
"DKIM path non-writable (either a permission issue or the directory does not "
"exist)"
-msgstr "DKIM パスが書き込みできません ( 権限問題か、ディレクトリーが存在しないかのいずれかです )"
+msgstr ""
+"DKIM パスが書き込みできません ( 権限問題か、ディレクトリーが存在しないかのい"
+"ずれかです )"
#: admin/management/commands/subcommands/_manage_dkim_keys.py:52
msgid "Failed to generate DKIM private key"
@@ -484,35 +554,6 @@ msgstr "DKIM プライベートキーの生成に失敗"
msgid "Failed to generate DKIM public key"
msgstr "DKIM 公開キーの生成に失敗"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} が DNSBL・{} に掲載されています"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "ドメインに MX レコードがありません"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "{} ドメインは MX レコードがありません"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "無効な MX レコード : {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "{0} ドメインの MX レコードが無効です : {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] {} ドメインの MX 問題"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] {} ドメインの DNSBL 問題"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "ドメインが見つかりません。"
@@ -622,7 +663,9 @@ msgstr "{} : ドメインの各メールボックスの容量制限の値が無
#: admin/models/domain.py:350
msgid "{}: default mailbox quota cannot be greater than domain quota"
-msgstr "{} : 各メールボックスの容量制限の値は、ドメインの容量制限の値より小さくしてください"
+msgstr ""
+"{} : 各メールボックスの容量制限の値は、ドメインの容量制限の値より小さくしてく"
+"ださい"
#: admin/models/domain_alias.py:36
msgid "The alias name"
@@ -682,24 +725,27 @@ msgid ""
"The domain's reputation will be affected and there is a chance that emails "
"coming from it are considered as spam. You should contact those providers "
"and ask them to unlist detected IP address(es)."
-msgstr "ドメインの格付けが影響を与え、このドメインからのメールが SPAM とみなされる可能性があります。DNSBL 提供元に連絡し、検出された IP アドレスのリストからの削除を依頼する必要があります。"
+msgstr ""
+"ドメインの格付けが影響を与え、このドメインからのメールが SPAM とみなされる可"
+"能性があります。DNSBL 提供元に連絡し、検出された IP アドレスのリストからの削"
+"除を依頼する必要があります。"
#: admin/templates/admin/notifications/domain_invalid_mx.html:3
#, python-format
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr "Modoboa が %(domain)s ドメインの有効な MX レコードがないことを検出 : "
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "%s の MX レコードなし"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "%(domain)s の IP アドレス書式が無効です ; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr "%s の AAAA レコードなし"
@@ -714,7 +760,9 @@ msgstr "Localpart は大文字・小文字を区別します"
#: amavis/app_settings.py:19
msgid "Value should match amavisd.conf variable $localpart_is_case_sensitive"
-msgstr "この値は amavisd.conf の $localpart_is_case_sensitive の設定値と合致すべきです。"
+msgstr ""
+"この値は amavisd.conf の $localpart_is_case_sensitive の設定値と合致すべきで"
+"す。"
#: amavis/app_settings.py:27
msgid "Recipient delimiter"
@@ -722,7 +770,8 @@ msgstr "受信者の区切り文字"
#: amavis/app_settings.py:29
msgid "Value should match amavisd.conf variable $recipient_delimiter"
-msgstr "この値は amavisd.conf の $recipient_delimiter の設定値と合致すべきです。"
+msgstr ""
+"この値は amavisd.conf の $recipient_delimiter の設定値と合致すべきです。"
#: amavis/app_settings.py:41
msgid "Quarantine settings"
@@ -746,7 +795,8 @@ msgstr "解放したメッセージを削除"
#: amavis/app_settings.py:68
msgid "Remove messages marked as released while cleaning up the database"
-msgstr "データベースのクリーンアップ時に、解放済みマークのメッセージを削除します"
+msgstr ""
+"データベースのクリーンアップ時に、解放済みマークのメッセージを削除します"
#: amavis/app_settings.py:76
msgid "Amavis connection mode"
@@ -856,7 +906,9 @@ msgstr "ドメインごとの手動学習を有効に"
msgid ""
"Allow domain administrators to train Spamassassin (within dedicated per-"
"domain databases)"
-msgstr "ドメイン管理者に Spamassassin(専用のドメインごとのデータベース) のトレーニングを許可する"
+msgstr ""
+"ドメイン管理者に Spamassassin(専用のドメインごとのデータベース) のトレーニン"
+"グを許可する"
#: amavis/app_settings.py:215
msgid "Enable per-user manual learning"
@@ -866,13 +918,14 @@ msgstr "ユーザーごとの手動学習を有効に"
msgid ""
"Allow simple users to personally train Spamassassin (within a dedicated "
"database)"
-msgstr "標準ユーザーに Spamassassin ( 専用のデータベース ) の個人的な学習を許可します"
+msgstr ""
+"標準ユーザーに Spamassassin ( 専用のデータベース ) の個人的な学習を許可します"
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "表示"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr "1 ページに表示するメールの数"
@@ -888,17 +941,22 @@ msgstr "Amavis"
msgid ""
"AMAVIS_DEFAULT_DATABASE_ENCODING does not match the character encoding used "
"by the Amavis database."
-msgstr "AMAVIS_DEFAULT_DATABASE_ENCODING が Amavis データベースで設定している文字エンコーディングと一致しません。"
+msgstr ""
+"AMAVIS_DEFAULT_DATABASE_ENCODING が Amavis データベースで設定している文字エン"
+"コーディングと一致しません。"
#: amavis/checks/settings_checks.py:12
msgid ""
"Check your database character encoding and set/update "
"AMAVIS_DEFAULT_DATABASE_ENCODING."
-msgstr "データベースの文字エンコーディングを確認して、AMAVIS_DEFAULT_DATABASE_ENCODING を設定・更新してください。"
+msgstr ""
+"データベースの文字エンコーディングを確認して、"
+"AMAVIS_DEFAULT_DATABASE_ENCODING を設定・更新してください。"
#: amavis/checks/settings_checks.py:19
msgid "Modoboa Amavis has not been tested using the selected database engine."
-msgstr "Modoboa Amavis は選択したデータベースエンジンを使ったテストをしていません。"
+msgstr ""
+"Modoboa Amavis は選択したデータベースエンジンを使ったテストをしていません。"
#: amavis/checks/settings_checks.py:20
msgid "Try using PostgreSQL, MySQL or MariaDB."
@@ -947,7 +1005,9 @@ msgstr "デフォルト"
#: amavis/models.py:111
msgid "Bypass virus checks or not. Choose 'default' to use global settings."
-msgstr "ウイルスチェックをする・しないを設定します。「デフォルト」を選択すると全体設定を使用します。"
+msgstr ""
+"ウイルスチェックをする・しないを設定します。「デフォルト」を選択すると全体設"
+"定を使用します。"
#: amavis/models.py:115
msgid "Spam filter"
@@ -955,7 +1015,9 @@ msgstr "SPAM フィルター"
#: amavis/models.py:125
msgid "Bypass spam checks or not. Choose 'default' to use global settings."
-msgstr "SPAM チェックをする・しないを設定します。「デフォルト」を選択すると全体設定を使用します。"
+msgstr ""
+"SPAM チェックをする・しないを設定します。「デフォルト」を選択すると全体設定を"
+"使用します。"
#: amavis/models.py:129
msgid "Banned filter"
@@ -963,7 +1025,9 @@ msgstr "ブロックフィルター"
#: amavis/models.py:139
msgid "Bypass banned checks or not. Choose 'default' to use global settings."
-msgstr "ブロックチェックをする・しないを設定します。「デフォルト」を選択すると全体設定を使用します。"
+msgstr ""
+"ブロックチェックをする・しないを設定します。「デフォルト」を選択すると全体設"
+"定を使用します。"
#: amavis/models.py:170
msgid "Spam marker"
@@ -971,9 +1035,11 @@ msgstr "SPAM マーカー"
#: amavis/models.py:176
msgid ""
-"Modify spam subject using the specified text. Choose 'default' to use global"
-" settings."
-msgstr "指定したテキストで SPAM の件名を変更します。「デフォルト」を選択すると全体設定を使用します。"
+"Modify spam subject using the specified text. Choose 'default' to use global "
+"settings."
+msgstr ""
+"指定したテキストで SPAM の件名を変更します。「デフォルト」を選択すると全体設"
+"定を使用します。"
#: amavis/templates/amavis/notifications/pending_requests.html:3
#, python-format
@@ -1055,7 +1121,9 @@ msgstr "自動応答メッセージを自動生成する際の件名のデフォ
msgid ""
"Default content used when an auto-reply message is created automatically. "
"The '%(name)s' macro will be replaced by the user's full name."
-msgstr "自動応答メッセージを自動生成する際の本文のデフォルト値。「%(name)s」マクロはユーザーのフルネームに置き換えます。"
+msgstr ""
+"自動応答メッセージを自動生成する際の本文のデフォルト値。「%(name)s」マクロは"
+"ユーザーのフルネームに置き換えます。"
#: autoreply/apps.py:15
msgid "Automatic replies"
@@ -1112,9 +1180,10 @@ msgstr "カレンダー管理を許可"
#: calendars/app_settings.py:48
msgid "Allow domain administrators to manage user calendars (read and write)"
-msgstr "ドメイン管理者にユーザーカレンダーの管理 ( 読み取り・書き込み ) を許可します"
+msgstr ""
+"ドメイン管理者にユーザーカレンダーの管理 ( 読み取り・書き込み ) を許可します"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "その他"
@@ -1126,17 +1195,18 @@ msgstr "ICS ファイルの最大サイズ"
#: calendars/app_settings.py:68
msgid ""
"Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
-msgstr "インポートする ICS ファイルの最大サイズをバイト ( または KB、MB、GB ) で指定"
+msgstr ""
+"インポートする ICS ファイルの最大サイズをバイト ( または KB、MB、GB ) で指定"
#: calendars/app_settings.py:89 core/api/v2/viewsets.py:205
msgid "Calendars"
msgstr "カレンダー"
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "サーバーの場所を設定していないので登録してください。"
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr "アップロード ファイルが大きすぎます ( 最大 : {} バイト )"
@@ -1152,7 +1222,9 @@ msgstr "CardDAV でアドレス帳を同期します"
msgid ""
"Choose to synchronize or not your address book using CardDAV. You will be "
"able to access your contacts from the outside."
-msgstr "CardDAV を使ってアドレス帳の同期を行うか・行わないかを選んでください。同期すると外からアドレス帳にアクセスできます。"
+msgstr ""
+"CardDAV を使ってアドレス帳の同期を行うか・行わないかを選んでください。同期す"
+"ると外からアドレス帳にアクセスできます。"
#: contacts/app_settings.py:29
msgid "Synchronization frequency"
@@ -1215,7 +1287,7 @@ msgstr "2FA はすでに有効です"
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr "「%(addr)s」から「%(user)s」ユーザーの 2FA 設定変更は失敗"
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr "無効なパスワード"
@@ -1227,25 +1299,20 @@ msgstr "2 要素認証が無効"
msgid "Local"
msgstr "ローカル"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "ユーザープロフィール"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "不正な構文"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "不正なラウンド数"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "このコードは無効です"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213
-#: core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Modoboa のパスワード再設定で利用するコード : {}"
@@ -1270,531 +1337,552 @@ msgid "Calendar"
msgstr "カレンダー"
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr "Web メール"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "認証"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "認証の種類"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "認証バックエンド"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "デフォルトのパスワードスキーマ"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "メールボックス パスワードを暗号化する際のスキーマ"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "ラウンド"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
-msgstr "ラウンド数 ( sha256crypt と sha512crypt のみ使用 ) 。1000 ~ 999999999 の間で設定してください。"
+msgstr ""
+"ラウンド数 ( sha256crypt と sha512crypt のみ使用 ) 。1000 ~ 999999999 の間で"
+"設定してください。"
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "ログイン時にパスワード スキーマを更新"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
-msgstr "デフォルトのパスワード スキーマに切り替えるため、ログイン時にパスワードを更新します"
+msgstr ""
+"デフォルトのパスワード スキーマに切り替えるため、ログイン時にパスワードを更新"
+"します"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "デフォルト パスワード"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "アカウント自動作成で使用するデフォルト パスワード"
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "ランダムパスワード長"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "ランダムで生成するパスワードの長さ。"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr "ランダムパスワードに特殊文字を許可"
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr "ランダムに生成するパスワードに特殊文字を含めます"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "パスワードサービス URL を更新"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
-msgstr "ユーザがパスワードを更新するための外部ページの URL。ローカルユーザー以外のユーザー、つまり外部認証 ( LDAP、SMTP ) が成功した後に自動作成されるユーザにのみ適用されます。"
+msgstr ""
+"ユーザがパスワードを更新するための外部ページの URL。ローカルユーザー以外の"
+"ユーザー、つまり外部認証 ( LDAP、SMTP ) が成功した後に自動作成されるユーザに"
+"のみ適用されます。"
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "パスワード再設定の案内"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr "パスワード再設定ページに表示する一時的なメッセージ"
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "SMS を使ったパスワード再設定"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr "電話番号を入力したユーザーは SMS によるパスワード再設定を有効にする"
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS 事業者"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "パスワード再設定の SMS を送信する業者を選んでください"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr "LDAP"
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "サーバーアドレス"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "LDAP サーバーの IP アドレスまたは DNS 名"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "サーバーポート"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "LDAP サーバーの TCP ポート番号"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "セカンダリーサーバー ( フォールバック ) を有効にする"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
-msgstr "セカンダリー LDAP サーバー。プライマリーサーバーで失敗した際に利用します。"
+msgstr ""
+"セカンダリー LDAP サーバー。プライマリーサーバーで失敗した際に利用します。"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "セカンダリーサーバー アドレス"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "セカンダリー LDAP サーバーの IP アドレスまたは DNS 名"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "セカンダリーサーバー ポート"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "セカンダリー LDAP サーバーの TCP ポート番号"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "暗号化接続を使う"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "LDAP サーバー に接続する際に SSL/STARTTLS を使います"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "LDAP サーバーは Active Directory ですか?"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "管理者グループ"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
-"Members of those LDAP Posix groups will be created as domain administrators."
-" Use ';' characters to separate groups."
-msgstr "ここで指定する LDAP の Posix グループのメンバーをドメイン管理者として作成します。複数のグループを指定する際は「;」で区切ってください。"
+"Members of those LDAP Posix groups will be created as domain administrators. "
+"Use ';' characters to separate groups."
+msgstr ""
+"ここで指定する LDAP の Posix グループのメンバーをドメイン管理者として作成しま"
+"す。複数のグループを指定する際は「;」で区切ってください。"
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "グループタイプ"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "ディレクトリーで使用している LDAP グループのタイプ。"
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "グループの検索ベース"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "グループを探す際の検索ベースの識別名 ( DN )"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "パスワード属性"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "ユーザーパスワードを格納している属性"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP 認証設定"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "認証方式"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "使用する認証方式を選択"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "バインド DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
-msgstr "LDAP サーバーにバインドする際の識別名。空のままにすると匿名バインドです。"
+msgstr ""
+"LDAP サーバーにバインドする際の識別名。空のままにすると匿名バインドです。"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "バインド パスワード"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr "(「バインド DN」で ) LDAP サーバーにバインドする際のパスワード"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "ユーザーの検索ベース"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "ユーザーを探す際の検索ベースの識別名 ( DN )"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "検索フィルター"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
-msgstr "オプションのフィルタ文字列 ( 例 : (objectClass=person) )。「()」カッコで囲まないと有効になりません。"
+msgstr ""
+"オプションのフィルタ文字列 ( 例 : (objectClass=person) )。「()」カッコで囲ま"
+"ないと有効になりません。"
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "ユーザー DN テンプレート"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "ユーザー DN を作成する際のテンプレート。1 つのプレースホルダー ( 例 : %(user)s ) を含めてください。"
+msgstr ""
+"ユーザー DN を作成する際のテンプレート。1 つのプレースホルダー ( 例 : "
+"%(user)s ) を含めてください。"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP 同期設定"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "LDAP へのエクスポートを有効"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr "ローカル データベース・LDAP ディレクトリー間での自動同期を有効にする"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "ローカルアカウントを削除するとリモート LDAP のアカウントも削除する"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
-msgstr "ローカルアカウントを削除すると、リモートLDAPアカウントも削除、または無効にします。"
+msgstr ""
+"ローカルアカウントを削除すると、リモートLDAPアカウントも削除、または無効にし"
+"ます。"
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "アカウント DN テンプレート"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "アカウント DN を作成する際のテンプレート。1 つのプレースホルダー ( 例 : %(user)s ) を含めてください。"
+msgstr ""
+"アカウント DN を作成する際のテンプレート。1 つのプレースホルダー ( 例 : "
+"%(user)s ) を含めてください。"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "LDAP からのインポートを有効"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
-msgstr "LDAP ディレクトリーからローカル データベースへのアカウント同期を有効にします"
+msgstr ""
+"LDAP ディレクトリーからローカル データベースへのアカウント同期を有効にします"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "ユーザー名属性"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "ユーザー名を格納している LDAP 属性名。"
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Dovecot LDAP 同期を有効"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr "LDAP 認証設定を Dovecot の設定に適用します。"
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP 設定ファイル"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Dovecot の LDAP 設定ファイルの場所。"
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "ダッシュボード"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr "ようこそメッセージのカスタマイズ"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr "ようこそメッセージをデフォルトのものから変更します"
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "カスタム RSS フィード"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr "リセラーとドメイン管理者に表示する独自 RSS フィードを設定します。"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr "スーパー管理者にカスタマイズした RSS フィードを表示します"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr "カスタマイズした RSS フィードをスーパー管理者にも表示します"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "機能ウィジェットを非表示に"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "リセラーとドメイン管理者の機能ウィジェットを非表示にします"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr "テーマ"
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr "主要なテーマカラー"
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
-msgstr "テーマの主要な色 ( 16進数コードで指定 )で、左メニューの背景色などに使います。"
+msgstr ""
+"テーマの主要な色 ( 16進数コードで指定 )で、左メニューの背景色などに使います。"
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr "主要なテーマカラー ( ライトバージョン )"
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr "主要なテーマカラー ( 16進数カード )"
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr "主要なテーマカラー ( ダークバージョン )"
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr "サブのテーマカラー"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
-msgstr "テーマのサブの色 ( 16進数コードで指定 ) で、いくつかのボタンの背景色などに使います。"
+msgstr ""
+"テーマのサブの色 ( 16進数コードで指定 ) で、いくつかのボタンの背景色などに使"
+"います。"
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr "ラベルテーマカラー"
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr "ラベルのテーマカラー ( 16進数コード )"
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "通知"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "送信者アドレス"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "通知を送信するメールアドレスです。"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "パブリック API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "通信を有効に"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "新しいバージョンのリリースを自動チェックする"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "新しいバージョンをチェックする"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "新バージョンリリースでメールを送信"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr "新しいバージョンがリリースされたら管理者にメールで通知"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "受信者"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "新しいバージョンのリリースを通知するメールの受信者を指定してください。"
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "統計を送信"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr "Modoboa パブリック API の統計 ( 数と利用拡張機能 ) を送信します"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr "非利用アカウント追跡を有効に"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
-"Allow the administrator to set a threshold (in days) beyond which an account"
-" is considered inactive if the user hasn't logged in"
-msgstr "ユーザーがログインしておらず、アカウント非利用とみなす期間 ( 日 ) を設定することを管理者に許可します"
+"Allow the administrator to set a threshold (in days) beyond which an account "
+"is considered inactive if the user hasn't logged in"
+msgstr ""
+"ユーザーがログインしておらず、アカウント非利用とみなす期間 ( 日 ) を設定する"
+"ことを管理者に許可します"
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "アカウントを非利用とみなすログイン間隔"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
-"An account with a last login date greater than this threshold (in days) will"
-" be considered as inactive"
-msgstr "最終ログイン日が、このしきい値 ( 日数 ) よりも以前になったアカウントを非利用とみなします"
+"An account with a last login date greater than this threshold (in days) will "
+"be considered as inactive"
+msgstr ""
+"最終ログイン日が、このしきい値 ( 日数 ) よりも以前になったアカウントを非利用"
+"とみなします"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "ページトップ通知のチェック間隔"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "2 つのページトップの通知のチェックの間隔 ( 秒 )"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "最大ログ記録期間"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "ログを記録する日数の最大期間"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr "メッセージ履歴の保持期間"
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr "メッセージ履歴セクションにメッセージを保持する期間 ( 単位 : 日 )"
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "ページあたりの件数"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "ページあたりに表示される項目の数"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "デフォルトのリダイレクト先"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "アプリケーションが未指定の際、デフォルトとなるリダイレクト先"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
"between summer/winter time (ie the same local time occuring twice due to "
"clock change)."
-msgstr "USE_TZ を False にすると、夏時間・冬時間の移行の際に問題となる可能性があります ( 例 : 時計が変更されることで、同じローカル時刻が 2 度発生します )。"
+msgstr ""
+"USE_TZ を False にすると、夏時間・冬時間の移行の際に問題となる可能性がありま"
+"す ( 例 : 時計が変更されることで、同じローカル時刻が 2 度発生します )。"
#: core/checks.py:19
msgid "Set `USE_TZ = True` in settings.py"
@@ -1812,27 +1900,33 @@ msgstr "パスワード スキーマをより強力なものに更新してく
msgid ""
"Oauth2 application for dovecot has not been found. Webmail and some other "
"features won't be available."
-msgstr "dovect 用の OAuth2 アプリが見つかりません。Web メールなど、いくつかの機能が使えません。"
+msgstr ""
+"dovect 用の OAuth2 アプリが見つかりません。Web メールなど、いくつかの機能が使"
+"えません。"
#: core/checks.py:34
msgid ""
-"Visit : "
-"https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
-"oauth2"
-msgstr "以下、参照 : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-oauth2"
+"Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"dovecot.html#dovecot-oauth2"
+msgstr ""
+"以下、参照 : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"dovecot.html#dovecot-oauth2"
#: core/checks.py:41
msgid ""
"Oauth2 application for radicale has not been found. Calendar and some other "
"features won't be available."
-msgstr "radicale 用の OAuth2 アプリが見つかりません。カレンダーなど、いくつかの機能が使えません。"
+msgstr ""
+"radicale 用の OAuth2 アプリが見つかりません。カレンダーなど、いくつかの機能が"
+"使えません。"
#: core/checks.py:45
msgid ""
-"Visit : "
-"https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
-"oauth2"
-msgstr "以下、参照 : https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-oauth2"
+"Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"radicale.html#radicale-oauth2"
+msgstr ""
+"以下、参照 : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"radicale.html#radicale-oauth2"
#: core/constants.py:6
msgid "Simple user"
@@ -2060,7 +2154,9 @@ msgid ""
msgid_plural ""
"\n"
" The following updates are available:\n"
-msgstr[0] "\n 以下の更新が用意されています :\n"
+msgstr[0] ""
+"\n"
+" 以下の更新が用意されています :\n"
#: core/utils.py:43
msgid "The core part of Modoboa"
@@ -2079,7 +2175,9 @@ msgstr "パスワード スキーマが一致しません。%s のパスワー
#: core/views/auth.py:135
#, python-format
msgid "Password hash parameter missmatch. Updating %s password"
-msgstr "パスワードのハッシュ パラメーターが一致しません。%s パスワードを更新しています"
+msgstr ""
+"パスワードのハッシュ パラメーターが一致しません。%s パスワードを更新していま"
+"す"
#: core/views/auth.py:173
msgid "User '{}' successfully logged out"
@@ -2095,7 +2193,8 @@ msgstr "逆引きを有効に"
#: dmarc/forms.py:23
msgid "Enable reverse DNS lookups (reports will be longer to display)"
-msgstr "DNS の逆引きを有効にします ( レポート表示まで時間がかかるようになります )"
+msgstr ""
+"DNS の逆引きを有効にします ( レポート表示まで時間がかかるようになります )"
#: dmarc/forms.py:42
msgid "DMARC"
@@ -2106,7 +2205,7 @@ msgid "Not resolved"
msgstr "未解決"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "なし"
@@ -2293,7 +2392,9 @@ msgid ""
"A comma seperated list of folders to explicitly include in sync even if "
"filtered by the Folder Filter Exclusions. Example: debian.user, "
"debian.personal "
-msgstr "除外フォルダーフィルターで対象から外れても同期に含めるフォルダーをカンマ区切りで明示します。例 : debian.user, debian.personal"
+msgstr ""
+"除外フォルダーフィルターで対象から外れても同期に含めるフォルダーをカンマ区切"
+"りで明示します。例 : debian.user, debian.personal"
#: imap_migration/apps.py:20
msgid "IMAP Migration"
@@ -2303,7 +2404,8 @@ msgstr "IMAP 移行"
msgid ""
"Automatic domain/mailbox creation is disabled which means IMAP "
"authentication won't work."
-msgstr "IMAP 認証が動作しない場合にドメイン・メールボックスの自動作成を無効にします。"
+msgstr ""
+"IMAP 認証が動作しない場合にドメイン・メールボックスの自動作成を無効にします。"
#: imap_migration/checks.py:16
msgid ""
@@ -2377,13 +2479,17 @@ msgstr "ドメイン管理者数"
msgid ""
"Maximum number of allowed domain administrators for a new administrator. (0 "
"to deny any creation, -1 to allow unlimited creations)"
-msgstr "新しい管理者に作成を許可するドメイン管理者数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+msgstr ""
+"新しい管理者に作成を許可するドメイン管理者数の上限。( 0 で作成の拒否、-1 で無"
+"制限の作成 )"
#: limits/app_settings.py:41
msgid ""
"Maximum number of allowed domains for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "新しい管理者に作成を許可するドメイン数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+msgstr ""
+"新しい管理者に作成を許可するドメイン数の上限。( 0 で作成の拒否、-1 で無制限の"
+"作成 )"
#: limits/app_settings.py:49 limits/app_settings.py:123 limits/constants.py:22
#: limits/constants.py:76
@@ -2392,15 +2498,19 @@ msgstr "ドメインエイリアス"
#: limits/app_settings.py:52
msgid ""
-"Maximum number of allowed domain aliases for a new administrator. (0 to deny"
-" any creation, -1 to allow unlimited creations)"
-msgstr "新しい管理者に作成を許可するドメインエイリアス数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+"Maximum number of allowed domain aliases for a new administrator. (0 to deny "
+"any creation, -1 to allow unlimited creations)"
+msgstr ""
+"新しい管理者に作成を許可するドメインエイリアス数の上限。( 0 で作成の拒否、-1 "
+"で無制限の作成 )"
#: limits/app_settings.py:64
msgid ""
"Maximum number of allowed mailboxes for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "新しい管理者に作成を許可するメールボックス数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+msgstr ""
+"新しい管理者に作成を許可するメールボックス数の上限。( 0 で作成の拒否、-1 で無"
+"制限の作成 )"
#: limits/app_settings.py:73 limits/app_settings.py:146 limits/constants.py:39
#: limits/constants.py:92
@@ -2411,7 +2521,9 @@ msgstr "メールボックス エイリアス"
msgid ""
"Maximum number of allowed aliases for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "新しい管理者に作成を許可するエイリアス数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+msgstr ""
+"新しい管理者に作成を許可するエイリアス数の上限。( 0 で作成の拒否、-1 で無制限"
+"の作成 )"
#: limits/app_settings.py:84 limits/constants.py:59
msgid "Quota"
@@ -2421,7 +2533,8 @@ msgstr "容量制限"
msgid ""
"The quota a reseller will be allowed to share between the domains he "
"creates. (0 means no quota)"
-msgstr "リセラーに対して許可する、作成するドメインの容量制限の合算値。( 0 で無制限 )"
+msgstr ""
+"リセラーに対して許可する、作成するドメインの容量制限の合算値。( 0 で無制限 )"
#: limits/app_settings.py:98
msgid "Default per-domain limits"
@@ -2437,27 +2550,35 @@ msgstr "ドメインごとの容量制限を有効もしくは無効にします
#: limits/app_settings.py:114
msgid ""
-"Maximum number of allowed domain administrators for a new domain. (0 to deny"
-" any creation, -1 to allow unlimited creations)"
-msgstr "新しいドメインに作成を許可するドメイン管理者数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+"Maximum number of allowed domain administrators for a new domain. (0 to deny "
+"any creation, -1 to allow unlimited creations)"
+msgstr ""
+"新しいドメインに作成を許可するドメイン管理者数の上限。( 0 で作成の拒否、-1 で"
+"無制限の作成 )"
#: limits/app_settings.py:126
msgid ""
"Maximum number of allowed domain aliases for a new domain. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "新しいドメインに作成を許可するドメインエイリアス数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+msgstr ""
+"新しいドメインに作成を許可するドメインエイリアス数の上限。( 0 で作成の拒"
+"否、-1 で無制限の作成 )"
#: limits/app_settings.py:138
msgid ""
"Maximum number of allowed mailboxes for a new domain. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "新しいドメインに作成を許可するメールボックス数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+msgstr ""
+"新しいドメインに作成を許可するメールボックス数の上限。( 0 で作成の拒否、-1 で"
+"無制限の作成 )"
#: limits/app_settings.py:149
msgid ""
-"Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
-" -1 to allow unlimited creations)"
-msgstr "新しいドメインに作成を許可するエイリアス数の上限。( 0 で作成の拒否、-1 で無制限の作成 )"
+"Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
+"-1 to allow unlimited creations)"
+msgstr ""
+"新しいドメインに作成を許可するエイリアス数の上限。( 0 で作成の拒否、-1 で無制"
+"限の作成 )"
#: limits/apps.py:16
msgid "Limits"
@@ -2660,7 +2781,8 @@ msgstr "ダウンロードしたら文書を削除"
msgid ""
"Automatically delete a document just after its first download from this "
"interface"
-msgstr "このインターフェースからダウンロードをしたのちに、文書を自動的に削除します"
+msgstr ""
+"このインターフェースからダウンロードをしたのちに、文書を自動的に削除します"
#: pdfcredentials/app_settings.py:68
msgid "Generate documents only at account creation"
@@ -2670,7 +2792,9 @@ msgstr "アカウント作成時のみ文書を作成"
msgid ""
"Generate a new document only when a new account is created. If set to no, a "
"new document will be created each time a password is updated."
-msgstr "新しくアカウントを作成する際にのみ、新しい文書を作成します。「いいえ」に設定すると、パスワードを更新するたびに新しい文書を作成します。"
+msgstr ""
+"新しくアカウントを作成する際にのみ、新しい文書を作成します。「いいえ」に設定"
+"すると、パスワードを更新するたびに新しい文書を作成します。"
#: pdfcredentials/app_settings.py:84
msgid "Customization options"
@@ -2708,7 +2832,9 @@ msgstr "メールクライアント接続設定を含める"
msgid ""
"Include required SMTP and IMAP connection information to configure a mail "
"client, a tablet or a phone"
-msgstr "メールクライアント、タブレットやスマートフォンに設定する際に必要な SMTP・IMAP 接続の情報を含める"
+msgstr ""
+"メールクライアント、タブレットやスマートフォンに設定する際に必要な SMTP・"
+"IMAP 接続の情報を含める"
#: pdfcredentials/app_settings.py:123 pdfcredentials/documents.py:133
msgid "SMTP server address"
@@ -2769,7 +2895,14 @@ msgid ""
"Dear %s, this document contains the credentials you will need\n"
"to connect to Modoboa. Learn the content and destroy\n"
"the document as soon as possible.\n"
-msgstr "\n%s 様、この文書には Modoboa メールサーバーへの接続に必要な認証情報を記しています。\n認証情報が第三者に漏れれば、メールの内容をすべて読み取られるほか、なりすましによるメール送信も可能になります。\n内容を理解し必要な設定を終えたら、厳重に管理する・廃棄するなど、対応をおねがいします。\n"
+msgstr ""
+"\n"
+"%s 様、この文書には Modoboa メールサーバーへの接続に必要な認証情報を記してい"
+"ます。\n"
+"認証情報が第三者に漏れれば、メールの内容をすべて読み取られるほか、なりすまし"
+"によるメール送信も可能になります。\n"
+"内容を理解し必要な設定を終えたら、厳重に管理する・廃棄するなど、対応をおねが"
+"いします。\n"
#: pdfcredentials/documents.py:95
msgid "Web panel:"
@@ -2788,7 +2921,10 @@ msgid ""
"\n"
"Here you can view your emails anytime online, create filters or manage\n"
"your contacts.\n"
-msgstr "\nこの画面からあなたのメールをオンラインで確認できるほか、表示フィルターを\n作成したり、連絡先を管理することができます。\n"
+msgstr ""
+"\n"
+"この画面からあなたのメールをオンラインで確認できるほか、表示フィルターを\n"
+"作成したり、連絡先を管理することができます。\n"
#: pdfcredentials/documents.py:126
msgid "Please change your password!"
@@ -2806,7 +2942,9 @@ msgstr "この設定はパソコン、またはスマートフォンやタブレ
msgid ""
"Failed to create PDF_credentials directory. Please check the permissions or "
"the path."
-msgstr "PDF_credentials ディレクトリーの作成に失敗しました。権限またはパスを確認してください。"
+msgstr ""
+"PDF_credentials ディレクトリーの作成に失敗しました。権限またはパスを確認して"
+"ください。"
#: pdfcredentials/handlers.py:64
msgid "Download PDF credentials"
@@ -2882,9 +3020,11 @@ msgstr "キー マップ パス"
#: rspamd/app_settings.py:21
msgid ""
-"Absolute path of the file which contains paths to DKIM private keys. Must be"
-" readable by _rspamd group or user."
-msgstr "DKIM プライベートキー ファイルの絶対パス。_rspamd グループまたはユーザーに読み取り権限が必要です。"
+"Absolute path of the file which contains paths to DKIM private keys. Must be "
+"readable by _rspamd group or user."
+msgstr ""
+"DKIM プライベートキー ファイルの絶対パス。_rspamd グループまたはユーザーに読"
+"み取り権限が必要です。"
#: rspamd/app_settings.py:30
msgid "Selector map path"
@@ -2894,7 +3034,9 @@ msgstr "セレクター マップ パス"
msgid ""
"Absolute path of the file which contains names of DKIM selectors. Must be "
"readable by _rspamd group or user."
-msgstr "DKIM セレクター ファイルの絶対パス。_rspamd グループまたはユーザーに読み取り権限が必要です。"
+msgstr ""
+"DKIM セレクター ファイルの絶対パス。_rspamd グループまたはユーザーに読み取り"
+"権限が必要です。"
#: rspamd/app_settings.py:51
msgid "Rspamd dashboard location"
@@ -2902,10 +3044,13 @@ msgstr "Rspamd ダッシュボードの場所"
#: rspamd/app_settings.py:53
msgid ""
-"Location of the rspamd dashboard. Can either be a relative URL (eg. "
-"'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
+"Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
+"rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
"guidance on the Super-Admin dashboard."
-msgstr "rspamd ダッシュボードの場所。相対 URL ( 例 : '/rspamd' ) またはフル URL ( 例 : 'https://rspamd.domain.tld/' ) のどちらでもかまいません。スーパー管理者ダッシュボードからのガイドにしか利用しません。"
+msgstr ""
+"rspamd ダッシュボードの場所。相対 URL ( 例 : '/rspamd' ) またはフル URL "
+"( 例 : 'https://rspamd.domain.tld/' ) のどちらでもかまいません。スーパー管理"
+"者ダッシュボードからのガイドにしか利用しません。"
#: rspamd/apps.py:18
msgid "Rspamd"
@@ -2984,7 +3129,7 @@ msgstr "一致する"
msgid "is not"
msgstr "一致しない"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "件名"
@@ -3085,7 +3230,8 @@ msgstr "パスワードがわからない?"
msgid ""
"Your password has been set. You may go ahead and sign "
"in now."
-msgstr "パスワードを設定しました。サインイン で進みます。"
+msgstr ""
+"パスワードを設定しました。サインイン で進みます。"
#: templates/registration/password_reset_confirm.html:8
msgid "Change password"
@@ -3101,7 +3247,9 @@ msgstr "送信"
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
-msgstr "パスワードの再設定リンクが無効です。おそらくこのリンクからはすでに操作を終えたものと思われます。もう一度「パスワード再設定」の操作をしてください。"
+msgstr ""
+"パスワードの再設定リンクが無効です。おそらくこのリンクからはすでに操作を終え"
+"たものと思われます。もう一度「パスワード再設定」の操作をしてください。"
#: templates/registration/password_reset_confirm_code.html:22
msgid "Enter the code you've just received by SMS"
@@ -3121,7 +3269,11 @@ msgid ""
"exists with the email you entered. You should receive them shortly.
"
"If you don't receive an email, please make sure you've entered your "
"primary address, and check your spam folder.
"
-msgstr "入力したメールアドレスが登録済みのものであれば、パスワード設定方法を記載したメールが届きます。
メールが届かなければ、入力したアドレスが正しいものだったかどうか、または SPAM フォルダーに配信されていないかを確認してください。
"
+msgstr ""
+"入力したメールアドレスが登録済みのものであれば、パスワード設定方法を記載し"
+"たメールが届きます。
メールが届かなければ、入力したアドレスが正しいも"
+"のだったかどうか、または SPAM フォルダーに配信されていないかを確認してくださ"
+"い。
"
#: templates/registration/password_reset_email.html:4
#: templates/registration/password_reset_email_v2.html:4
@@ -3129,14 +3281,18 @@ msgstr "入力したメールアドレスが登録済みのものであれば
msgid ""
"To initiate the password reset process for your %(username)s Modoboa "
"account, click the link below:"
-msgstr "パスワードの再設定処理をはじめます。対象のアカウントは %(username)s でよろしいですか? よろしければ以下のリンクをクリックしてください : "
+msgstr ""
+"パスワードの再設定処理をはじめます。対象のアカウントは %(username)s でよろし"
+"いですか? よろしければ以下のリンクをクリックしてください : "
#: templates/registration/password_reset_email.html:10
#: templates/registration/password_reset_email_v2.html:10
msgid ""
"If clicking the link above doesn't work, please copy and paste the URL in a "
"new browser window instead."
-msgstr "上のリンクが動作しなければ、URL を Web ブラウザにコピー・貼りつけしてください。"
+msgstr ""
+"上のリンクが動作しなければ、URL を Web ブラウザにコピー・貼りつけしてくださ"
+"い。"
#: templates/registration/password_reset_email.html:14
#: templates/registration/password_reset_email_v2.html:14
@@ -3165,9 +3321,11 @@ msgstr "ワンタイム パスワード"
#: templates/registration/twofactor_code_verify.html:35
msgid ""
-"Enter the code from the two-factor app on your mobile device. If you've lost"
-" your device, you may enter one of your recovery codes."
-msgstr "あなたのスマートフォンの 2 要素認証アプリのコードを入力してください。スマートフォンをなくしているなどの場合は、再設定コードのいずれかを入力してください。"
+"Enter the code from the two-factor app on your mobile device. If you've lost "
+"your device, you may enter one of your recovery codes."
+msgstr ""
+"あなたのスマートフォンの 2 要素認証アプリのコードを入力してください。スマート"
+"フォンをなくしているなどの場合は、再設定コードのいずれかを入力してください。"
#: templates/registration/twofactor_code_verify.html:42
msgid "Verify code"
@@ -3204,25 +3362,26 @@ msgstr "最大添付サイズ"
#: webmail/app_settings.py:19
msgid "Maximum attachment size in bytes (or KB, MB, GB if specified)"
-msgstr "添付ファイルの最大サイズをバイトで ( 必要に応じて KB, MB, GB も指定可 ) "
+msgstr ""
+"添付ファイルの最大サイズをバイトで ( 必要に応じて KB, MB, GB も指定可 ) "
#: webmail/app_settings.py:67
msgid "SMTP settings"
msgstr "SMTP 設定"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr "SMTP サーバーのアドレス"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "暗号化接続モード"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr "SMTP サーバーに暗号化接続する"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr "SMTP サーバーのポート"
@@ -3234,95 +3393,101 @@ msgstr "認証が必要"
msgid "Server needs authentication"
msgstr "サーバーが認証を求めています"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Server settings"
+msgid "Scheduling settings"
+msgstr "サーバー設定"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "デフォルトのメッセージ表示モード"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr "メッセージを表示するモードのデフォルト値"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "HTML リンク表示を有効に"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "HTML リンクの表示の有効・無効を設定します"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "1 ページに表示するメッセージの最大数を設定します"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "リストの表示更新間隔"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr "リストの表示を自動で更新する間隔 ( 秒 )"
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "フォルダーコンテナーの幅"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "フォルダーリストコンテナの幅"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "フォルダー"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "ごみ箱"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "削除メッセージの行き先フォルダー"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "送信済みフォルダー"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "送信済みメッセージの行き先フォルダー"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "下書きフォルダー"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "下書きの行き先フォルダー"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "SPAM フォルダー"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "SPAM メッセージの行き先フォルダー"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr "メッセージの作成"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr "デフォルトエディター"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr "メッセージを作成するエディターのデフォルト値"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "署名テキスト"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "ユーザー定義のメール署名"
@@ -3334,43 +3499,68 @@ msgstr "サーバー応答"
msgid "Failed to remove attachment: "
msgstr "添付ファイルの削除に失敗 : "
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr " : "
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "日付"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr "元メッセージ"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "階層区切りの取得に失敗"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "受信トレイ"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "下書き"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "SPAM"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "送信済み"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "ごみ箱"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "添付ファイルが大きすぎます ( 最大 : %s )"
+
+#~ msgid "User profile"
+#~ msgstr "ユーザープロフィール"
+
+#~ msgid "Default top redirection"
+#~ msgstr "デフォルトのリダイレクト先"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr "アプリケーションが未指定の際、デフォルトとなるリダイレクト先"
diff --git a/modoboa/locale/ka/LC_MESSAGES/django.po b/modoboa/locale/ka/LC_MESSAGES/django.po
index f02976dc5..cf757b3cc 100644
--- a/modoboa/locale/ka/LC_MESSAGES/django.po
+++ b/modoboa/locale/ka/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -41,14 +41,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -57,7 +57,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -65,13 +65,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -112,39 +111,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -236,141 +235,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -390,6 +399,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -412,8 +450,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -423,11 +461,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -479,35 +517,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -684,17 +693,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -863,11 +872,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1110,7 +1119,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1128,11 +1137,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1211,7 +1220,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1223,24 +1232,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1265,525 +1270,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2104,7 +2101,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2982,7 +2979,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3208,19 +3205,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3232,95 +3229,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3332,43 +3333,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/nl_NL/LC_MESSAGES/django.po b/modoboa/locale/nl_NL/LC_MESSAGES/django.po
index 7dd65f632..00bbdd87f 100644
--- a/modoboa/locale/nl_NL/LC_MESSAGES/django.po
+++ b/modoboa/locale/nl_NL/LC_MESSAGES/django.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2024-07-17 11:46+0200\n"
"Last-Translator: J Rosier \n"
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/tonio/modoboa/"
@@ -57,14 +57,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Kan niet groter zijn dan domeinquotum"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Toegang geweigerd."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Dit veld is verplicht"
@@ -73,7 +73,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "Lijst van beheerde domeinen (alleen resellers en domeinbeheerders)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Niet toegestaan voor deze rol."
@@ -81,13 +81,12 @@ msgstr "Niet toegestaan voor deze rol."
msgid "Must be equal to mailbox full_address"
msgstr "Moet gelijk zijn aan de mailbox full_address"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Dit veld is verplicht."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Lokaal domein {} bestaat niet"
@@ -130,39 +129,39 @@ msgstr "Je kunt geen onbeperkt quotum definiëren."
msgid "User '%s' already exists"
msgstr "Gebruiker '%s' bestaat al"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Dit moet een positief geheel getal zijn."
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "Openssl kan niet gevonden worden. Controleer of dit geïnstalleerd is."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Map niet gevonden."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "Dit veld laat alleen geldige IP-adressen (of netwerken) toe"
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Definieer ten minste 1 geautoriseerd netwerk / adres"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "Er is een mailbox vereist om een alias te creëren"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown tag {}"
msgid "Unknown status"
@@ -263,19 +262,29 @@ msgstr "DNSBL Controles inschakelen"
msgid "Check every domain against major DNSBL providers"
msgstr "Controleer ieder domein tegen de bekende DNSBL providers"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Eigen DNS server"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Gebruik een eigen DNS server in plaats van lokale server configuratie"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "DKIM Key opslagdirectory"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -285,19 +294,19 @@ msgstr ""
"erop dat deze directory van de root-gebruiker is en niet leesbaar is voor "
"andere gebruikers."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Standaard DKIM key lengte"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Standaard lengte in bits voor nieuw gegenereerde DKIM keys."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Standaard domeinquotum"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -305,11 +314,11 @@ msgstr ""
"Standaard quotum (in MB) om op nieuw aangemaakte domeinen zonder waarde toe "
"te passen. Een waarde van 0 betekent geen quotum."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Standaard verzendlimiet per domein"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -317,16 +326,16 @@ msgstr ""
"Aantal mails dat nieuwe domeinen per dag mogen verzenden. Laat leeg voor "
"geen limiet."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Pas mailboxen op het bestandssysteem aan"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -334,11 +343,11 @@ msgstr ""
"Hernoem of verwijder mailboxen op het bestandssysteem wanner ze hernoemd of "
"verwijderd worden in Modoboa."
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Standaard mailbox quota"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
@@ -346,11 +355,11 @@ msgstr ""
"Standaard mailboxquota (in MB) die worden toegepast op nieuwe domeinen "
"zonder gespecificeerde waarde. Een 0 betekent geen quota."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Standaard verzendlimiet voor mailboxen"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -358,63 +367,63 @@ msgstr ""
"Aantal mails dat nieuwe mailboxen per dag mogen verzenden. Laat leeg voor "
"geen limiet."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Automatish een account verwijderen"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
"Als een mailbox wordt verwijderd, verwijder dan ook het bijbehorende account"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Domein en mailbox automatisch aanmaken"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Maak een domein en mailbox aan wanneer een account automatisch is aangemaakt."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Maak een alias aan als een mailbox hernoemd wordt."
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr "Maak een alias aan voor het oude adres als een mailbox hernoemd wordt."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Beheer"
@@ -434,6 +443,35 @@ msgstr "Geopend"
msgid "Closed"
msgstr "Gesloten"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} getoond door DNSBL provider {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Domein heeft geen MX record"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Domein {} heeft geen MX-record"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Ongeldig MX record: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "MX-record voor domein {0} is ongeldig: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX problemen voor domein {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL problemen voor domein {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "domeinalias"
@@ -456,8 +494,8 @@ msgstr "Je mag geen domeinen importeren"
msgid "You are not allowed to import domain aliases."
msgstr "Je hebt geen rechten om domeinaliassen te importeren."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Geen DNS record gevonden voor %s "
@@ -467,11 +505,11 @@ msgstr "Geen DNS record gevonden voor %s "
msgid "No %(type)s record for %(name)s"
msgstr "Geen %(type)s record voor %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Geen werkende nameservers gevonden"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "DNS timeout, het was niet mogelijk om %s op te zoeken"
@@ -529,35 +567,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Communicatie met publieke Modoboa API toestaan"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} getoond door DNSBL provider {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Domein heeft geen MX record"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Domein {} heeft geen MX-record"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Ongeldig MX record: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "MX-record voor domein {0} is ongeldig: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX problemen voor domein {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL problemen voor domein {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domein niet gevonden."
@@ -745,17 +754,17 @@ msgstr ""
"Modoboa heeft vastgesteld dat het domein %(domain)s geen geldig MX-record "
"heeft:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Geen MX record voor %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Onjuist IP adres voor %(domain)s: %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -961,13 +970,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display details"
msgid "Display"
msgstr "Weergeven"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1261,7 +1270,7 @@ msgstr "Domeinbeheerder"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Sta deze beheerder toe om mailboxen van gebruikers te benaderen"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Diversen"
@@ -1279,11 +1288,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1372,7 +1381,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1386,24 +1395,20 @@ msgstr ""
msgid "Local"
msgstr "Lokaal"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Gebruikersprofiel"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Ongeldige zinsbouw"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Ongeldig nummer van rondes"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Gebruik de volgende code om het Modoboa wachtwoord te herstellen: {}"
@@ -1434,37 +1439,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Authenticatie"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Authenticatie type"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "De backend gebruikt voor authenticatie"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Standaard wachtwoord encryptiemethode"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Schema dat gebruikt wordt om mailboxwachtwoorden te versleutelen"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Rondes"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1472,47 +1477,47 @@ msgstr ""
"Nummer van te gebruiken randomizeringsrondes (alleen bij sha256crypt en "
"sha512crypt). Moet tussen de 1000 en 999999999 liggen."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Update wachtwoordschema bij inloggen"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Update gebruikerswachtwoord bij het inloggen om het standaard wachtwoord "
"schema te gebruiken. "
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Standaard wachtwoord"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Standaard wachtwoord voor automatisch gecreëerde accounts."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Lengte van willekeurig wachtwoord"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Lengte van willekeurig gegenereerde wachtwoorden"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Lengte van willekeurig gegenereerde wachtwoorden"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Service-url voor wachtwoorden updaten"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1522,104 +1527,104 @@ msgstr ""
"bijwerken. Alleen van toepassing op niet-lokale gebruikers die automatisch "
"worden aangemaakt na een succesvolle externe authenticatie (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Melding wachtwoordherstel"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr "Een tijdelijke melding die wordt getoond op de wachtwoordresetpagina."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Wachtwoordherstel via SMS activeren"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Wachtwoordherstel via SMS activeren voor gebruikers die een telefoonnummer "
"hebben ingevuld."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS provider"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Kies een provider voor het sturen van een SMS voor wachtwoordherstel."
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Serveradres"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "Het IP-adres of de hostname van LDAP-server"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Serverpoort"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Het TCP poortnummer van de LDAP-server"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Secundaire server activeren (fallback)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Activeer secundaire LDAP server, te gebruiken als de primaire server wegvalt"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Adres van secundaire server"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "Het IP adres of DNS naam van de secundaire LDAP server"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "secundaire-serverpoort"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "TCP poortnummer van de secundaire LDAP server"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Gebruik een beveiligde verbinding"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Gebruik een SSL/TLS verbinding met de LDAP-server"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "De LDAP-server is een Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Beheerdergroepen"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1627,47 +1632,47 @@ msgstr ""
"Leden van deze LDAP POSIX-groepen zullen aangemaakt worden als "
"domeinbeheerders. Gebruik ';' karakters om groepen te scheiden."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Groeptype"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "De LDAP groeptype dat wordt gebruikt voor uw LDAP-directory."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Groepen zoekbasis"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "De gedistingeerde naam van de zoekbasis om groepen te vinden"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Wachtwoord attribuut"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Het attribuut dat gebruikt wordt om wachtwoorden op te slaan"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP authenticatie-instellingen"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Authenticatiemethode"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Kies de te gebruiken authenticatiemethode"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Koppeling DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1675,29 +1680,29 @@ msgstr ""
"De gedistingeerde naam om te gebruiken bij het koppelen met de LDAP-server. "
"Laat leeg voor een anonieme koppeling."
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Koppel wachtwoord"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Het wachtwoord om te gebruiken tijdens het koppelen met de LDAP-server (met "
"'koppel DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Gebruikers zoekbasis"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "De gedistingeerde naam van de zoekbasis om gebruikers te vinden"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Zoekfilter"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1705,11 +1710,11 @@ msgstr ""
"Een optionele filter string (zoals '(objectClass=person)'). Om geldig te "
"kunnen zijn, moet het tussen haakjes staan."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Gebruiker DN template"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1718,25 +1723,25 @@ msgstr ""
"Het template dat gebruikt wordt om een gebruiker zijn/haar DN op te bouwen. "
"Het moet een placeholder bevatten (bijvoorbeeld. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP synchronisatie-instellingen"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Activeer export naar LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Activeer automatische synchronisatie tussen lokale database en LDAP directory"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Verwijder extern LDAP account als het lokale account wordt verwijderd"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1744,11 +1749,11 @@ msgstr ""
"Verwijder extern LDAP account als het lokale account wordt verwijderd. Zo "
"niet, dan wordt het gedeactiveerd."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Account DN sjabloon"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1757,202 +1762,202 @@ msgstr ""
"Het sjabloon voor het opbouwen van het DN (distinguishedname). Het moet een "
"tijdelijke aanduiding (placeholder) bevatten (bijvoorbeeld %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Activeer import van LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr "Activeer accountsynchronisatie van LDAP directory naar lokale database"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Gebruikersnaamattribuut"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "De naam van het LDAP-attribuut waar de gebruikersnaam staat."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Activeer Dovecot LDAP synchronisatie"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
"LDAP authenticatie-instellingen worden toegepast op Dovecot-configuratie."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP configuratiebestand"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Locatie van het configuratiebestand met Dovecot LDAP-instellingen."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Bedieningspaneel"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Aangepast bericht"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
msgid "A welcome message that will be displayed instead the default one"
msgstr "Een tijdelijke melding die wordt getoond op de wachtwoordresetpagina."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Aangepaste RSS feed."
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr "Toon aangepaste RSS feed aan resellers en domein beheerders. "
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr "Toon aangepaste RSS feed aan resellers en domein beheerders. "
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr "Toon aangepaste RSS feed aan resellers en domein beheerders. "
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Verberg opties widget"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Verberg features widget voor resellers en domein administrators. "
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Tweede e-mailadres"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notificaties"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Afzenderadres"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "E-mailadres dat gebruikt wordt om notificaties te versturen"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Publieke API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Communicatie toestaan"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Controleert automatisch of een nieuwere versie beschikbaar is"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Controleer of er een nieuwe versie beschikbaar is"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Stuur een e-mail als er nieuwe versies worden gevonden"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr "Stuur een e-mail naar administrators over nieuwe versies"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Ontvanger"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Ontvanger van notificatiemails over nieuwe versies"
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Verstuur statistieken"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Verstuur statistieken naar de publieke Modoboa API (statistieken en "
"gebruikte extenties)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Drempelwaarde inactieve gebruikers"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Drempelwaarde inactieve gebruikers"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1960,48 +1965,38 @@ msgstr ""
"Een gebruiker die langer dan dit aantal dagen niet ingelogd is, wordt op "
"inactief gezet."
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Top notificaties controle interval"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Interval tussen twee notificatiecontroles (in seconden)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maximum bewaartijd van logs"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "De maximum bewaartijd in dagen van een log record"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Items per pagina"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Aantal getoonde items per pagina"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Standaard top omleiding"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"De standaard omleiding die gebruikt wordt als er geen andere applicatie is "
-"opgegeven"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2341,7 +2336,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Geen"
@@ -3330,7 +3325,7 @@ msgstr "is"
msgid "is not"
msgstr "is niet"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Onderwerp"
@@ -3596,23 +3591,23 @@ msgstr ""
msgid "SMTP settings"
msgstr "SMTP instellingen"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Adres van uw IMAP-server"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "Modus van beveiligde verbinding"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Gebruik een beveiligde verbinding met de SMTP-server"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3629,103 +3624,109 @@ msgstr "Authenticatie vereist"
msgid "Server needs authentication"
msgstr "De server vereist authenticatie"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Connection settings"
+msgid "Scheduling settings"
+msgstr "ManageSieve instellingen"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Standaard berichtweergave"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "De standaard modus wanneer een bericht weergegeven wordt"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Activeer weergave van HTML-koppelingen"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "(De)activeer weergave van HTML-koppelingen"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Stelt het maximum aantal weergegeven berichten per pagina in"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Lijst vernieuwen frequentie"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Mappenlijst wijdte"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "De wijdte van de mappenlijst"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Mappen"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Prullenbak"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Map voor verwijderde berichten"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Verzonden items"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Map waar verzonden berichten worden opgeslagen"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Concepten"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Map waar concepten heen gaan"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "Ongewenste e-mail map"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "Map voor ongewenste e-mail"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Berichten opstellen"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Standaard editor"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "De standaard editor voor het schrijven van een bericht"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Handtekeningtekst"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Door gebruiker opgegeven e-mailhandtekening"
@@ -3741,45 +3742,72 @@ msgstr "Serveradres"
msgid "Failed to remove attachment: "
msgstr "Bijlage verwijderen is mislukt:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Datum"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Alle berichten"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Mislukt om het hiërarchische scheidingsteken te verkrijgen"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Postvak in"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "Concepten"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "Ongewenste e-mail"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Verzonden items"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Prullenbak"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Bijlage is te groot (maximaal toegestane grootte: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Gebruikersprofiel"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Standaard top omleiding"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "De standaard omleiding die gebruikt wordt als er geen andere applicatie "
+#~ "is opgegeven"
diff --git a/modoboa/locale/no/LC_MESSAGES/django.po b/modoboa/locale/no/LC_MESSAGES/django.po
index af95cb934..751a4c9fc 100644
--- a/modoboa/locale/no/LC_MESSAGES/django.po
+++ b/modoboa/locale/no/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-11 18:45+0000\n"
"Last-Translator: Nils Otto Lillegrein , 2020\n"
"Language-Team: Norwegian (https://www.transifex.com/tonio/teams/13749/no/)\n"
@@ -44,14 +44,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -60,7 +60,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -68,13 +68,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -115,39 +114,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -239,141 +238,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -393,6 +402,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -415,8 +453,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -426,11 +464,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -482,35 +520,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -687,17 +696,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -866,11 +875,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1113,7 +1122,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1131,11 +1140,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1214,7 +1223,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1226,24 +1235,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1268,525 +1273,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2109,7 +2106,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2989,7 +2986,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3215,19 +3212,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3239,95 +3236,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3341,43 +3342,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr "Kunne ikke opprette LDAP-konto: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/pl_PL/LC_MESSAGES/django.po b/modoboa/locale/pl_PL/LC_MESSAGES/django.po
index 01d1fd57f..a916179f9 100644
--- a/modoboa/locale/pl_PL/LC_MESSAGES/django.po
+++ b/modoboa/locale/pl_PL/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2021-07-09 07:40+0000\n"
"Last-Translator: KrystianPlichta \n"
"Language-Team: Polish (Poland) (http://www.transifex.com/tonio/modoboa/"
@@ -56,14 +56,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Nie może być wyższa niż limit domeny"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Odmowa dostępu"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "To pole jest obowiązkowe"
@@ -73,7 +73,7 @@ msgid ""
msgstr ""
"Lista administratorów domen (tylko resellerów i administratorów domen)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Niedozwolone dla tej roli."
@@ -81,13 +81,12 @@ msgstr "Niedozwolone dla tej roli."
msgid "Must be equal to mailbox full_address"
msgstr "Musi być równe z full_address skrzynki."
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "To pole jest wymagane"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Lokalna domena {} nie istnieje"
@@ -130,41 +129,41 @@ msgstr "Nie możesz przypisać nielimitowanej przestrzeni"
msgid "User '%s' already exists"
msgstr "Użytkownik '%s' już istnieje"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Musi być liczbą całkowitą dodatnią"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "Brak openssl , upewnij się że jest zainstalowany."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Katalog nie znaleziony."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Zdefiniuj przynajmniej jedną autoryzowaną sieć / adres"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "Skrzynka jest obowiązkowa"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -266,19 +265,29 @@ msgstr "Włącz sprawdzanie DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Sprawdź każdą domenę po kątem głównych providerów DNSBL"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Własny serwer DNS"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Użyj własnego serwera DNS zamiast konfiguracji lokalnego serwera"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Katalog przechowywania kluczy DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -288,19 +297,19 @@ msgstr ""
"Upewnij się że właścicielem katalogu jest \"użytkownik root\" i że katalog "
"nie jest publicznie dostępny do odczytu."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Domyślna długość klucza DKIM"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Domyślna długość w bitach dla nowo wygenerowanych kluczy DKIM."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Domyślne ograniczenie dla domeny"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -308,11 +317,11 @@ msgstr ""
"Domyślne ograniczenie (w MB) dla nowych domen, gdy nie zostało podane. (0 - "
"brak ograniczenia)"
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Domyślny limit wysyłania dla domey"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -320,16 +329,16 @@ msgstr ""
"Liczba wiadomości, które świeżo utworzone domeny będą mogły wysłać dziennie. "
"Pozostaw puste dla braku limitu."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Skrzynki pocztowe"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Przechowuj skrzynka na filesystemie"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -337,11 +346,11 @@ msgstr ""
"Zmieniaj lub usuwaj skrzynki na filesystemie jeśli zostały zmodyfikowane lub "
"usuniętę przez Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Domyślna przestrzeń dla konta pocztowego"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created mailboxes with "
@@ -353,11 +362,11 @@ msgstr ""
"Domyślny limit skrzynki (w MB) stosowany dla świeżo utworzonych skrzynek, "
"dla których nie podano wartości. Wartość 0 oznacza brak limitu."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Domyślny limit wysyłania skrzynki"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -365,61 +374,61 @@ msgstr ""
"Liczba wiadomości, które będą mogły wysyłać świeżo utworzone skrzynki na "
"dzień. Pozostaw puste dla braku limitu."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Automatyczne usuwanie konta"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Gdy usuwana jest skrzynka usuń powizane z nią konto"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Automatyczne tworzenie domeny/skrzynki"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "Utwórz domenę i skrzynkę gdy tworzone jest konto"
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Utwórz alias podczas zmiany nazwy skrzynki"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr "Utwórz alias używając starego adresu podczas zmiany nazwy skrzynki."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administracja"
@@ -439,6 +448,35 @@ msgstr "Otwarty"
msgid "Closed"
msgstr "Zamknięty"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} wymienione przez dostawcę DNSBL {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Domena {} nie ma zdefiniowanego rekordu MX"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Domena {} nie ma zdefiniowanego rekordu MX"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Nieprawidłowy rekord MX: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "Rekord MX dla domeny {0} jest niepoprawny: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] Wykryto problem(y) z MX dla domeny {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL problem(y) dla domeny {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "alias domeny"
@@ -461,8 +499,8 @@ msgstr "Nie masz uprawnień do importowania domen"
msgid "You are not allowed to import domain aliases."
msgstr "Nie masz uprawnień do importowania aliasów."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Nie znaleziono rekordu DNS dla %s"
@@ -472,11 +510,11 @@ msgstr "Nie znaleziono rekordu DNS dla %s"
msgid "No %(type)s record for %(name)s"
msgstr "Brak %(type)s zapisów dla %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Znaleziono nie działające serwery nazw"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -532,35 +570,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Włącz komunikację z publicznym API Modoboa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} wymienione przez dostawcę DNSBL {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Domena {} nie ma zdefiniowanego rekordu MX"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Domena {} nie ma zdefiniowanego rekordu MX"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Nieprawidłowy rekord MX: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "Rekord MX dla domeny {0} jest niepoprawny: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] Wykryto problem(y) z MX dla domeny {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL problem(y) dla domeny {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domena nie znaleziona."
@@ -760,17 +769,17 @@ msgstr ""
"Modoboa sygnalizuje że ta domena %(domain)s nie posiada poprawnego rekordu "
"MX:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Brak wpisów MX dla %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Nieprawidłowy format adresu IP dla %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -980,11 +989,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "Wyświetl"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1277,7 +1286,7 @@ msgstr "Administrator domeny"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Zezwól temu administratorowi na dostęp do skrzynek użytkowników"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Różne"
@@ -1295,11 +1304,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "Lokalizacja serwera nie jest ustawiona, należy to poprawić."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1388,7 +1397,7 @@ msgstr "2FA jest już włączone"
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1402,24 +1411,20 @@ msgstr "2FA nie jest włączone"
msgid "Local"
msgstr "Lokalnie"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Profil użytkownika"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Nieprawidłowa składnia"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Nieprawidłowa liczba rund"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Ten kod jest nieprawidłowy"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Proszę użyć następującego kodu, aby odzyskać hasło Modoboa: {}"
@@ -1452,37 +1457,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "E-mail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Uwierzytelnianie"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Typ uwierzytelniania"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Backend używany do uwierzytelniania"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Domyślny schemat hasła"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Schemat używany do szyfrowania haseł do skrzynek"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Rund"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1490,47 +1495,47 @@ msgstr ""
"Liczba rund (tylko dla sha256crypt i sha512crypt). Musi się zawierać "
"pomiędzy 1000 a 999999999 włącznie."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Aktualizuj schemat haseł przy logowaniu"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Zaktualizuj hasło użytkownika przy logowaniu, tak aby używało domyślnego "
"schematu haseł"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Domyślne hasło"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Domyślne hasło dla automatycznie dodawanych kont."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Długość losowego hasła"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Długość losowo wygenerowanego hasła"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Długość losowo wygenerowanego hasła"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Zaktualizuj URL usługi hasła"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1541,106 +1546,106 @@ msgstr ""
"utworzonych automatycznie po prawidłowym zalogowaniu do zewnętrznych usług "
"(LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Komunikat o odzyskiwaniu hasła"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
"Tymczasowa wiadomość, która będzie wyświetlana na stronie resetowania hasła."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Włącz odzyskiwania hasła przez SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Włącz odzyskiwanie hasła przez SMS dla użytkowników, którzy podali numer "
"telefonu."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "Dostawca SMS"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Wybierz dostawcę, aby wysłać SMS odzyskiwania hasła Dostawca SMS"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Adres serwera"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "IP lub nazwa DNS serwera LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Port serwera"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Port TCP używany przez LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Włącz dodatkowy serwer (awaryjny)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Włącz dodatkowy serwer LDAP, który będzie użyty, gdy pierwszorzędny nie "
"będzie dostępny"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Adres serwera dodatkowego"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "Adres IP lub nazwa DNS dodatkowego serwera LDAP"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Port na serwerze dodatkowym"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Numer portu TCP używanego przez dodatkowy serwer LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Użyj bezpiecznego polączenia"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Użyj SSL/STARTTLS dla połączenia z serwerem LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Czy LDAP jest Active Directory "
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Administrator grup"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1648,47 +1653,47 @@ msgstr ""
"Członkowie tych grup LDAP Posix będą utworzeni jako administratorzy domeny. "
"Użyj znaku ';' jako separatora grup."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Typ grupy"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Typ grupy LDAP do wykorzystania z Twoim katalogiem."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Wyszukiwarka grup"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Nazwa wyróżniająca bazy wyszukiwania użyte do znalezienia grupy"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atrybut hasła"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Atrybut używany do przechowywania haseł użytkowników"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "Ustawienia uwierzytelniania LDAP"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Metoda autentykacji"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Wybierz metode autentykacji"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Przypnij do DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1696,37 +1701,37 @@ msgstr ""
"DN do użycia przy połączeniu do LDAP'a. Zostaw puste dla anonimowego "
"podłączenia"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Hasło"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr "Hasło używane do połdłączenia do LDAP'a (z wskazanym DN)"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Wyszukiwania użytkowników"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Nazwa wyróżniająca bazy wyszukiwania użyte do znalezienia grupy"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtr wyszukiwania"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr "Użyj szablonu DN"
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Użyj szablonu DN"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1735,24 +1740,24 @@ msgstr ""
"Szablon użyty do skonstruowania DN użytkownika. Powinna ona zawierać jeden "
"symbol zastępczy (np. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "Ustawienia synchronizacji z LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Włącz export do LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr "Włącz automatyczną synchronizację lokalnej bazy danych i katalogu LDAP"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Skasuj konto na zdalnym LDAP kiedy zostanie skasowane konto lokalne"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1760,11 +1765,11 @@ msgstr ""
"Skasuj konto na zdalnym LDAP kiedy zostanie skasowane konto lokalne, w innym "
"przypadku zostanie ono wyłączone."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Szablon konta DN"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1773,52 +1778,52 @@ msgstr ""
"Szablon używany do budowy DN konta. Powinien zawierać jeden placeholder (ie. "
"%(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Włącz import z LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr "Włącz synchronizację konta ze katalogu LDAP z lokalną bazą danych"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Atrybut nazwa użytkownika"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Nazwa atrybutu LDAP, w którym można znaleźć nazwę użytkownika."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Włącz synchronizację Dovecot LDAP"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
"Ustawienia uwierzytelniania LDAP zostaną zastosowane do konfiguracji Dovecot."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Plik konfiguracyjny Dovecot LDAP"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
"Lokalizacja pliku konfiguracyjnego, który zawiera ustawienia Dovecot LDAP."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Panel główny"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Własna wiadomość"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
@@ -1826,153 +1831,153 @@ msgid "A welcome message that will be displayed instead the default one"
msgstr ""
"Tymczasowa wiadomość, która będzie wyświetlana na stronie resetowania hasła."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Spersonalizowany kanał RSS"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Wyświetl spersonalizowany kanał RSS odsprzedawcy i administratorom domen"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Wyświetl spersonalizowany kanał RSS odsprzedawcy i administratorom domen"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Wyświetl spersonalizowany kanał RSS odsprzedawcy i administratorom domen"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Ukryj kontrolki opcji"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Ukryj kontrolki opcji dla administratorów domeny i resellerów"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Zapasowy email"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Powiadomienia"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Adres nadawcy"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Adres e-mail używany do wysyłania powiadomień"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Publiczne API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Włącz komunikację"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Automatycznie sprawdzaj czy nowa wersja jest dostępna"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Sprawdź nowe wersje"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Wyślij email, jeżeli została znaleziona nowa wersja"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr "Wyślij email, by powiadomić aministratorów o nowej wersji"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Odbioraca"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Odbiorca emaili z powiadomieniem o nowej wersji"
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Wyślij statystyki"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Prześlij statystyki do publicznego API Modoboa (licznik i użyte rozszerzenia)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Próg nieaktywności konta"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Próg nieaktywności konta"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1980,46 +1985,38 @@ msgstr ""
"Konto z datą ostatniego logowania większą niż podany próg (w dniach) "
"zostanie uznane za nieaktywne. "
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Odstęp pomiędzy powiadomieniami "
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Odstęp pomiędzy dwoma powiadomieniami (w sek.)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Max wiek wpisu w logu"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Max wiek w dniach dla wpisu w logu"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Elementów na stronie"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Liczba wyświetlanych elementów na stronie"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Domyślne górne przekierowanie"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "Domyślne górne przekierowanie kiedy nie wskazano aplikacji"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2373,7 +2370,7 @@ msgid "Not resolved"
msgstr "Nie zdefiniowano"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Brak"
@@ -3340,7 +3337,7 @@ msgstr "jest"
msgid "is not"
msgstr "nie jest"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Temat"
@@ -3602,25 +3599,25 @@ msgstr ""
msgid "SMTP settings"
msgstr "Ustawienia IMAP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of the IMAP server (hostname or IP)"
msgid "Address of your SMTP server"
msgstr "Adres serwera IMAP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Użyj bezpiecznego polączenia"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Użyj bezpiecznego połączenia do serwera IMAP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of the IMAP server"
msgid "Listening port of your SMTP server"
@@ -3637,117 +3634,123 @@ msgstr "Metoda autentykacji"
msgid "Server needs authentication"
msgstr "Preferowany mechanizm uwierzytelnienia"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "Ustawienia ManageSieve"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "Domyślne górne przekierowanie kiedy nie wskazano aplikacji"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
#, fuzzy
#| msgid "Create aliases"
msgid "Folders"
msgstr "Utwórz aliasy"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
#, fuzzy
#| msgid "Create aliases"
msgid "Trash folder"
msgstr "Folder kosza"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "Folder, do którego trafiają usunięte wiadomości"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
#, fuzzy
#| msgid "Create aliases"
msgid "Sent folder"
msgstr "Folder wysłane"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Folder, do którego trafiają kopie wysłanych wiadomości"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts folder"
msgstr "Folder kopie robocze"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Folder, do którego trafiają kopie robocze"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Create aliases"
msgid "Junk folder"
msgstr "Folder wysłane"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "Folder, do którego trafiają usunięte wiadomości"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Wysłane wiadomości"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Domyślne górne przekierowanie"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "Domyślne górne przekierowanie kiedy nie wskazano aplikacji"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3763,47 +3766,72 @@ msgstr "Adres serwera"
msgid "Failed to remove attachment: "
msgstr "Nie udało się usunąć filtru"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Data"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Wszystkie wiadomości"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Nie udało się rozpoznać hierarchii separatora"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts"
msgstr "Folder kopie robocze"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Profil użytkownika"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Domyślne górne przekierowanie"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr "Domyślne górne przekierowanie kiedy nie wskazano aplikacji"
diff --git a/modoboa/locale/pt_BR/LC_MESSAGES/django.po b/modoboa/locale/pt_BR/LC_MESSAGES/django.po
index df7406175..67a988c89 100644
--- a/modoboa/locale/pt_BR/LC_MESSAGES/django.po
+++ b/modoboa/locale/pt_BR/LC_MESSAGES/django.po
@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: Rafael Barretto Alves , "
"2013,2015-2017,2025\n"
@@ -68,14 +68,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Não pode ser maior que a cota de domínio"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Permissão negada."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Este campo é obrigatório"
@@ -86,7 +86,7 @@ msgstr ""
"Lista de domínios administrados (somente revendedores e administradores de "
"domínio)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Não é permitido para esta função."
@@ -94,13 +94,12 @@ msgstr "Não é permitido para esta função."
msgid "Must be equal to mailbox full_address"
msgstr "Deve ser igual a full_address de caixa de correio"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Este campo é obrigatório."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Domínio local {} não existe"
@@ -141,41 +140,41 @@ msgstr "Você não pode definir uma cota ilimitada."
msgid "User '%s' already exists"
msgstr "O usuário '%s' já existe"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Deve ser um inteiro positivo"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl não encontrado, certifique-se que está instalado."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Diretório não encontrado."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "Este campo permite apenas endereços IP válidos (ou redes)"
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr "Desative a migração imap antes de desativar esta opção."
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Defina pelo menos uma rede/endereço autorizado"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
"A parte à esquerda de um endereço de e-mail não pode ter mais de 64 "
"caracteres."
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "Uma caixa de correio é necessária para criar apelidos."
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr "Status desconhecido"
@@ -275,20 +274,30 @@ msgid "Check every domain against major DNSBL providers"
msgstr ""
"Verifique todos os domínios em relação aos principais provedores de DNSBL"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Servidor de DNS personalizado"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr ""
"Usar um servidor DNS personalizado em vez da configuração do servidor local"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Diretório de armazenamento de chaves DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -298,19 +307,19 @@ msgstr ""
"armazenadas. Certifique-se que este diretório pertença ao usuário root e não "
"seja legível pelo mundo exterior."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Comprimento padrão da chave DKIM"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Comprimento padrão em bits para chaves DKIM recém-geradas."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Cota de domínio padrão"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -318,11 +327,11 @@ msgstr ""
"Cota padrão (em MB) aplicada para domínios recém-criados sem nenhum valor "
"especificado. Um valor 0 significa que não há cota."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Limite padrão de envio de domínio"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -330,16 +339,16 @@ msgstr ""
"Número de mensagens que os domínios recém-criados poderão enviar por dia. "
"Deixe vazio para ilimitado."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Caixas de correio"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Manipular caixas de correio no sistema de arquivos"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -347,11 +356,11 @@ msgstr ""
"Renomeie ou remova caixas de correio no sistema de arquivos quando elas "
"forem renomeadas ou removidas no Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Cota de caixa de correio padrão"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
@@ -359,11 +368,11 @@ msgstr ""
"Cota de caixa de correio padrão (em MB) aplicada para domínios recém-criados "
"sem nenhum valor especificado. Um valor 0 significa que não há cota."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Limite padrão de envio de caixa de correio"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -371,66 +380,66 @@ msgstr ""
"Número de mensagens que caixas de correio recém-criadas poderão enviar por "
"dia. Deixe vazio para ilimitado."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Remoção automática de conta"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
"Quando uma caixa de correio for removida, remova também a conta associada"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Criação automática de domínio/caixa de correio"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Crie um domínio e uma caixa de correio quando uma conta for criada "
"automaticamente."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Criar um apelido quando uma caixa de correio for renomeada"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Crie um apelido usando o endereço antigo quando uma caixa de correio for "
"renomeada."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "apelido"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administração"
@@ -450,6 +459,35 @@ msgstr "Aberto"
msgid "Closed"
msgstr "Fechado"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} listado pelo provedor DNSBL {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "O domínio não tem registro MX"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "O domínio {} não tem registro MX"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Registro MX inválido: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "O registro MX para {0} de domínio é inválido: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] Problema(s) de MX para o domínio {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] Problema(s) de DNSBL para o domínio {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "apelido de domínio"
@@ -472,8 +510,8 @@ msgstr "Você não tem permissão para importar domínios"
msgid "You are not allowed to import domain aliases."
msgstr "Você não tem permissão para importar apelidos de domínio."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Nenhum registro de DNS encontrado para %s"
@@ -483,11 +521,11 @@ msgstr "Nenhum registro de DNS encontrado para %s"
msgid "No %(type)s record for %(name)s"
msgstr "Nenhum registro %(type)s para %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Nenhum servidor de nomes funcional encontrado"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -544,35 +582,6 @@ msgstr "Falha ao gerar a chave privada DKIM"
msgid "Failed to generate DKIM public key"
msgstr "Falha ao gerar a chave pública DKIM"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} listado pelo provedor DNSBL {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "O domínio não tem registro MX"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "O domínio {} não tem registro MX"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Registro MX inválido: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "O registro MX para {0} de domínio é inválido: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] Problema(s) de MX para o domínio {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] Problema(s) de DNSBL para o domínio {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domínio não encontrado."
@@ -760,17 +769,17 @@ msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
"O Modoboa detectou que o domínio %(domain)s não possui registro MX válido:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Nenhum registro MX para %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Formato de endereço IP inválido para %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr "Nenhum registro AAAA para %s"
@@ -983,13 +992,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display details"
msgid "Display"
msgstr "Mostrar"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1276,7 +1285,7 @@ msgstr ""
"Permitir aos administradores de domínio gerir calendários dos usuários "
"(leitura e escrita)"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Diversos"
@@ -1296,11 +1305,11 @@ msgstr ""
msgid "Calendars"
msgstr "Calendários"
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "Localização do servidor não informada, por favor corrija."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr "O arquivo carregado é muito grande (máx: {} bytes)"
@@ -1384,7 +1393,7 @@ msgstr ""
"Falha na tentativa de edição de configurações do TFA de '%s' como usuário "
"'%s'"
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr "Senha inválida"
@@ -1396,24 +1405,20 @@ msgstr "2FA não está habilitado"
msgid "Local"
msgstr "Local"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Perfil do usuário"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Sintaxe inválida"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Número de ciclos inválido"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Este código é inválido"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
"Por favor, use o seguinte código para recuperar sua senha do Modoboa: {}"
@@ -1441,37 +1446,37 @@ msgid "Calendar"
msgstr "Calendário"
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Autenticação"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Tipo de autenticação"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "O backend usado para autenticação"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Esquema padrão de senha"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Esquema usado para criptografar as senhas das caixas de correio"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Ciclos"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1479,46 +1484,46 @@ msgstr ""
"Número de ciclos a ser usado (utilizado apenas por sha256crypt e "
"sha512crypt). Deve estar entre 1000 e 999999999, inclusive."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Atualizar esquema de senha no login"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Atualizar senha do usuário no login para usar o esquema de senha padrão"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Senha padrão"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Senha padrão para contas criadas automaticamente."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Tamanho de senha aleatório"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Tamanho das senhas geradas aleatoriamente."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Tamanho das senhas geradas aleatoriamente."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Atualizar URL do serviço de senha"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1528,105 +1533,105 @@ msgstr ""
"Aplica-se apenas a usuários não locais, como por exemplo aqueles criados "
"automaticamente após uma autenticação externa bem-sucedida (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Anúncio de recuperação de senha"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
"Uma mensagem temporária que será exibida na página de redefinição de senha."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Ativar recuperação de senha por SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Habilitar a recuperação de senha por SMS para usuários que preencheram um "
"número de telefone."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "Provedor de SMS"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Escolha um provedor para enviar SMS de recuperação de senha"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr "LDAP"
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Endereço do servidor"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "O endereço IP do nome DNS do servidor LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Porta do servidor"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "O número da porta TCP usada pelo servidor LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Habilitar servidor secundário (fallback)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Habilitar um servidor LDAP secundário que será usado se o primário falhar"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Endereço do servidor secundário"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "O endereço IP ou o nome DNS do servidor LDAP secundário"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Porta do servidor secundário"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "O número da porta TCP usada pelo servidor secundário LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Usar conexão segura"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Usar uma conexão SSL/STARTTLS para acessar o servidor LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Informe se o servidor LDAP é um Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Grupos de administradores"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1634,47 +1639,47 @@ msgstr ""
"Membros dos grupos do LDAP Posix serão criados como administradores de "
"domínio. Use o caractere ';' para separar grupos."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Tipo de grupo"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "O tipo de grupo LDAP para ser usado em seu diretório."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Base de pesquisa de grupos"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "O nome distinto da base de pesquisa usada para encontrar grupos"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atributo de senha"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "O atributo usado para armazenar senhas de usuários"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "Configurações de autenticação LDAP"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Método de autenticação"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Escolha o método de autenticação para usar"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Vincular DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1682,27 +1687,27 @@ msgstr ""
"O nome distinto para usar quando vincular ao servidor LDAP. Deixe vazio para "
"vincular anonimamente"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Vincular senha"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr "A senha usada quando vincular ao servidor LDAP (com 'Vincular DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Base de pesquisa de usuários"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "O nome distinto da base de pesquisa usada para encontrar usuários"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtro de pesquisa"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1710,11 +1715,11 @@ msgstr ""
"Uma string opcional de filtro (por ex: '(objectClass=person)'). Para ser "
"válida, deve estar entre parênteses."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Usar template DN"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1723,26 +1728,26 @@ msgstr ""
"A template usada para construir um DN de usuário. Deve conter um placeholder "
"(por ex: %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "Configurações de sincronização LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Habilitar exportação para LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Ativar a sincronização automática entre o banco de dados local e o diretório "
"LDAP"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Excluir conta LDAP remota quando a conta local for excluída"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1750,11 +1755,11 @@ msgstr ""
"Exclua a conta LDAP remota quando a conta local for excluída, caso "
"contrário, ela será desativada."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Modelo de DN de conta"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1763,56 +1768,56 @@ msgstr ""
"O modelo usado para construir o DN de uma conta. Ele deve conter um espaço "
"reservado (ou seja. %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Habilitar importação do LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
"Habilitar a sincronização de conta do diretório LDAP para o banco de dados "
"local"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Atributo de nome de usuário"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "O nome do atributo LDAP em que o nome de usuário pode ser encontrado."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Ativar sincronização LDAP do Dovecot"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
"As configurações de autenticação LDAP serão aplicadas à configuração do "
"Dovecot."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Arquivo de configuração LDAP do Dovecot"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
"Localização do arquivo de configuração que contém as configurações LDAP do "
"Dovecot."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Painel"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Mensagem personalizada"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
@@ -1820,17 +1825,17 @@ msgid "A welcome message that will be displayed instead the default one"
msgstr ""
"Uma mensagem temporária que será exibida na página de redefinição de senha."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Feed RSS personalizado"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Mostrar um feed RSS personalizado para revendedores e administradores de "
"domínio"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
@@ -1838,7 +1843,7 @@ msgstr ""
"Mostrar um feed RSS personalizado para revendedores e administradores de "
"domínio"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
@@ -1846,120 +1851,120 @@ msgstr ""
"Mostrar um feed RSS personalizado para revendedores e administradores de "
"domínio"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Ocultar widget de recursos"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Ocultar widget de recursos para revendedores e administradores de domínio"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "E-mail secundário"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notificações"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Endereço do remente"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Endereço de e-mail usado para enviar notificações."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "API Pública"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Habilitar comunicação"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Verificar automaticamente se uma nova versão está disponível"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Verificar novas versões"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Envie um e-mail quando novas versões forem encontradas"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr "Envie um e-mail para notificar os administradores sobre novas versões"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Destinatário"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Destinatário de e-mails de notificação de novas versões."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Enviar estatísticas"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Enviar estatísticas à API pública do Modoboa (contadores e extensões "
"utilizadas)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr "Ativar rastreamento de conta inativa"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
@@ -1967,11 +1972,11 @@ msgstr ""
"Permitir que o administrador defina um limite (em dias) além do qual uma "
"conta é considerada inativa se o usuário não tiver feito login"
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Limite de conta inativa"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1979,47 +1984,38 @@ msgstr ""
"Uma conta com uma data de login maior que este limite (em dias) será "
"considerada como inativa"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Intervalo de verificação de verificações de topo"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervalo entre checagem de notificações (em segundos)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Idade máxima do registro de log"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "A idade máxima em dias de um registro de log"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Itens por página"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Número de itens exibidos por página"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Redirecionamento de topo padrão"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"O redirecionamento padrão usado quando nenhuma aplicação é especificada"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2364,7 +2360,7 @@ msgid "Not resolved"
msgstr "Não resolvido"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Nenhuma"
@@ -3305,7 +3301,7 @@ msgstr "é"
msgid "is not"
msgstr "não é"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Assunto"
@@ -3551,25 +3547,25 @@ msgstr "Tamanho máximo de anexo em bytes (ou KB, MB, GB, se especificado)"
msgid "SMTP settings"
msgstr "Configurações SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Endereço do seu servidor SMTP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Modo de conexão segura"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use a secured connection to access IMAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Usar uma conexão segura para acessar o servidor SMTP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3587,107 +3583,113 @@ msgstr "Autenticação obrigatória"
msgid "Server needs authentication"
msgstr "Servidor precisa de autenticação"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Server settings"
+msgid "Scheduling settings"
+msgstr "Configurações do servidor"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Modo de exibição padrão da mensagem"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "O modo padrão usado ao exibir uma mensagem"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Ativar exibição de links em HTML"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Ativar/Desativar exibição de links em HTML"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Definir o número máximo de mensagens exibidas por página"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Taxa de atualização de escuta"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Largura do contêiner da caixa de correio"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "A largura do contêiner da caixa de correio"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Pasta para Itens Deletados"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Pasta que irão as mensagens deletadas"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Pasta para Itens Recebidos"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Pasta onde irão as cópias de mensagens enviadas"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Pasta para Rascunhos"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Pasta onde irão os rascunhos"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Sent folder"
msgid "Junk folder"
msgstr "Pasta para Itens Recebidos"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "Folder where deleted messages go"
msgid "Folder where junk messages should go"
msgstr "Pasta que irão as mensagens deletadas"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "Compondo mensagens"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Editor padrão"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "O editor padrão para usar ao escrever uma mensagem"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Texto da assinatura"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Assinatura de e-mail definida pelo usuário"
@@ -3703,51 +3705,77 @@ msgstr "Endereço do servidor"
msgid "Failed to remove attachment: "
msgstr "Falha ao remover anexo:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Data"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "All messages"
msgid "Original message"
msgstr "Todas as mensagens"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Falha ao recuperar o delimitador de hierarquia"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Drafts folder"
msgid "Drafts"
msgstr "Pasta para Rascunhos"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Anexo muito grande (limite: %s)"
+#~ msgid "User profile"
+#~ msgstr "Perfil do usuário"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Redirecionamento de topo padrão"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "O redirecionamento padrão usado quando nenhuma aplicação é especificada"
+
#~ msgid "No alarm ID provided"
#~ msgstr "Nenhum ID de alarme fornecido"
diff --git a/modoboa/locale/pt_PT/LC_MESSAGES/django.po b/modoboa/locale/pt_PT/LC_MESSAGES/django.po
index 5cd8397e7..bc1da653b 100644
--- a/modoboa/locale/pt_PT/LC_MESSAGES/django.po
+++ b/modoboa/locale/pt_PT/LC_MESSAGES/django.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2024-07-17 11:45+0200\n"
"Last-Translator: Mike C. \n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
@@ -60,16 +60,16 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
#, fuzzy
#| msgid "Permissions"
msgid "Permission denied."
msgstr "Permissões"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Este campo é obrigatório"
@@ -78,7 +78,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -86,15 +86,14 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
#, fuzzy
#| msgid "A mailbox is required"
msgid "This field is required."
msgstr "É necessária uma caixa de correio"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
#, fuzzy
#| msgid "Domain does not exist"
msgid "Local domain {} does not exist"
@@ -143,43 +142,43 @@ msgstr ""
msgid "User '%s' already exists"
msgstr "O utilizador '%s' já existe"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Tem de ser um inteiro, positivo"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
#, fuzzy
#| msgid "Domain modified"
msgid "Directory not found."
msgstr "Domínio alterado"
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "É necessária uma caixa de correio"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown domain %s"
msgid "Unknown status"
@@ -273,38 +272,48 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Quota pré-definida para o domínio"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -312,28 +321,28 @@ msgstr ""
"Quota (em MB) a aplicar a domínios recentemente criados sem valor "
"especificado. Um valor de 0 implica sem quota."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "Quota pré-definida para o domínio"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Lidar com caixas de correio no sistema de ficheiros"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -341,13 +350,13 @@ msgstr ""
"Renomear ou remover as caixas de correio no sistema de ficheiros quando "
"estas são renomeadas no Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
#, fuzzy
#| msgid "Default domain quota"
msgid "Default mailbox quota"
msgstr "Quota pré-definida para o domínio"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default quota (in MB) applied to freshly created domains with no value "
@@ -359,76 +368,76 @@ msgstr ""
"Quota (em MB) a aplicar a domínios recentemente criados sem valor "
"especificado. Um valor de 0 implica sem quota."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default domain quota"
msgid "Default mailbox sending limit"
msgstr "Quota pré-definida para o domínio"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Remoção automática de conta"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
"Ao remover uma caixa de correio estará também a remover a conta associada"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Criação automatica de domino/caixa de correio"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Criar um dominio e uma caixa de correio quando uma conta é criada "
"automátiamente."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administração"
@@ -450,6 +459,37 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain modified"
+msgid "Domain has no MX record"
+msgstr "Domínio alterado"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "'Alias' de domínio"
@@ -474,8 +514,8 @@ msgstr "Não é possível eliminar o seu próprio domínio"
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -485,11 +525,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -542,37 +582,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain modified"
-msgid "Domain has no MX record"
-msgstr "Domínio alterado"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
#, fuzzy
#| msgid "Domain modified"
@@ -773,17 +782,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "Domain modified"
msgid "No AAAA record for %s"
@@ -982,13 +991,13 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
#, fuzzy
#| msgid "Display"
msgid "Display"
msgstr "Exibir"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1278,7 +1287,7 @@ msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
"Número máximo de administradores de domínio que este utilizador pode criar"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Vários"
@@ -1296,11 +1305,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1389,7 +1398,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1403,26 +1412,20 @@ msgstr ""
msgid "Local"
msgstr "Local"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-#, fuzzy
-#| msgid "Profile"
-msgid "User profile"
-msgstr "Perfil"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Sintax inválida"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Número de linhas inválido"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1455,198 +1458,198 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Autenticação"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Tipo de autenticação"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Backend usado para autenticação"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Esquema pré-definido para passwords"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Esquema usado para encriptar as passwords das caixas de correio"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
#, fuzzy
#| msgid "Default password scheme"
msgid "Update password scheme at login"
msgstr "Esquema pré-definido para passwords"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
#, fuzzy
#| msgid "Default password scheme"
msgid "Default password"
msgstr "Esquema pré-definido para passwords"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
#, fuzzy
#| msgid "Bind password"
msgid "Random password length"
msgstr "Password para bind"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
#, fuzzy
#| msgid "Default password scheme"
msgid "Update password service URL"
msgstr "Esquema pré-definido para passwords"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Endereço do Servidor"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "O endereço IP do servidor de DNS do servidor LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Porta do Servidor"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr " A porta TCP usada pelo servidor LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
#, fuzzy
#| msgid "Server address"
msgid "Secondary server address"
msgstr "Endereço do Servidor"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
#, fuzzy
#| msgid "The IP address or the DNS name of the LDAP server"
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "O endereço IP do servidor de DNS do servidor LDAP"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
#, fuzzy
#| msgid "Server port"
msgid "Secondary server port"
msgstr "Porta do Servidor"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
#, fuzzy
#| msgid "The TCP port number used by the LDAP server"
msgid "The TCP port number used by the LDAP secondary server"
msgstr " A porta TCP usada pelo servidor LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Utilizar uma ligação segura"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
#, fuzzy
#| msgid "Use an SSL/TLS connection to access the LDAP server"
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Usar SSL/TLS na ligaçao de acesso ao servidor LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Especificar se o servidor LDAP e um Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Grupos de Administrador"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1654,51 +1657,51 @@ msgstr ""
"Os membros destes grupos \"LDAP Posix\" serão criados como administradores "
"de domínio. Use ';' para separar os grupos."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
#, fuzzy
#| msgid "Group name"
msgid "Group type"
msgstr "Nome do grupo"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Base para pesquisa de Grupos"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "O nome único para a base de pesquisa, usado para encontrar grupos"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atributo de palavra-passe"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "O atributo utilizado para armazenar palavras-passe"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
#, fuzzy
#| msgid "Authentication method"
msgid "LDAP authentication settings"
msgstr "Método de autenticação"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Método de autenticação"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Escolher o método de autenticação"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "\"Bind DN\""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1706,28 +1709,28 @@ msgstr ""
"O nome único usado para fazer o \"bind\" ao servidor LDAP. Deixar vario "
"para \"bind\" anónimo"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Password para bind"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"A password usada para fazer o \"bind\" ao servidor LDAP (com 'Bind DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Base para pesquisa de utilizadores"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "O nome único a usar para pesquisa de utilizadores"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtro de pesquisa"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1735,11 +1738,11 @@ msgstr ""
"Um filtro opcional (ex: '(objetClass=person)'). Tem de estar entre "
"parênteses para ser válido"
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Template DN de utilizador"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1748,38 +1751,38 @@ msgstr ""
"O template usado para construir o DN (nome único). Deve apenas conter um "
"'placeholder' (ex: %(user)s) "
-#: core/app_settings.py:350
+#: core/app_settings.py:338
#, fuzzy
#| msgid "LDAP settings"
msgid "LDAP synchronization settings"
msgstr "Definições do serviço de directório"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
#, fuzzy
#| msgid "User DN template"
msgid "Account DN template"
msgstr "Template DN de utilizador"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, fuzzy, python-format
#| msgid ""
#| "The template used to construct a user's DN. It should contain one "
@@ -1791,245 +1794,235 @@ msgstr ""
"O template usado para construir o DN (nome único). Deve apenas conter um "
"'placeholder' (ex: %(user)s) "
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
#, fuzzy
#| msgid "Password attribute"
msgid "Username attribute"
msgstr "Atributo de palavra-passe"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "sent messages"
msgid "Custom welcome message"
msgstr "A criar mensagem"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Server port"
msgid "Secondary theme color"
msgstr "Porta do Servidor"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
#, fuzzy
#| msgid "Authentication"
msgid "Notifications"
msgstr "Autenticação"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
#, fuzzy
#| msgid "Server address"
msgid "Sender address"
msgstr "Endereço do Servidor"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Verifica automaticamente se existem novas versões"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Procurar novas versões"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Destinatário"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Intervalo de tempo para verificar notificações (no topo)"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
#, fuzzy
#| msgid "Interval between two top notification checks"
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervalo de tempo de verificação entre duas notificações (no topo)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Idade máxima do registo no log"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "A idade maxima do registo de um log, em dias, e de"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Itens por página"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Número de itens apresentados por página"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Redirecionamento pré-definido"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"O redirecionamento padrão usado quando nenhuma aplicação se encontra "
-"especificada"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2389,7 +2382,7 @@ msgid "Not resolved"
msgstr "Sem destinatário definido"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Nenhum"
@@ -3359,7 +3352,7 @@ msgstr "é"
msgid "is not"
msgstr "não é"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Assunto"
@@ -3613,23 +3606,23 @@ msgstr "Tamanho máximo do anexo em bytes (ou KB, MB, GB se especificado)"
msgid "SMTP settings"
msgstr "Definições SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Endereço do servidor IMAP"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "Modo de ligação segura"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/TLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Usar uma ligação segura para aceder ao servidor SMTP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3646,103 +3639,109 @@ msgstr "Autenticação necessária"
msgid "Server needs authentication"
msgstr "O servidor requer autenticação"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "Definições do MANAGESIEVE"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Modo de visualização predefinido"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr "O modo de visualização de mensagem que será usado por defeito"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Ativar visualização de links HTML"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Ativar/desativar"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Define o número máximo de mensagens a mostrar por página"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Taxa de actualização da listagem"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Largura do caixilho das caixas de correio"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "Largura do caixilho da lista de caixa de correio"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Pasta para Itens Eliminados"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Pasta para a qual os itens eliminados são enviados"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Pasta para Itens Enviados"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Pasta onde as copias das mensagens enviadas são guardadas"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Pasta para Rascunhos"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Pasta onde ficam guardados os rascunhos"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "Pasta para Itens Enviados"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "Pasta para a qual os itens eliminados são enviados"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "A criar mensagem"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Editor predefinido"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr "O editor a ser usado por defeito na composição de mensagens"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Assinatura"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Assinatura de email definida pelo utilizador"
@@ -3758,45 +3757,74 @@ msgstr "Endereço do Servidor"
msgid "Failed to remove attachment: "
msgstr "Falha ao remover os anexos:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Data"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "Todas as mensagens"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Falha ao recuperar hierarquia delimitador"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "Pasta para Rascunhos"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Anexo demasiado grande (limite %s)"
+
+#, fuzzy
+#~| msgid "Profile"
+#~ msgid "User profile"
+#~ msgstr "Perfil"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Redirecionamento pré-definido"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "O redirecionamento padrão usado quando nenhuma aplicação se encontra "
+#~ "especificada"
diff --git a/modoboa/locale/ro_RO/LC_MESSAGES/django.po b/modoboa/locale/ro_RO/LC_MESSAGES/django.po
index 7da7eccd0..052bcea31 100644
--- a/modoboa/locale/ro_RO/LC_MESSAGES/django.po
+++ b/modoboa/locale/ro_RO/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2021-10-04 13:27+0000\n"
"Last-Translator: Simona Iacob \n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/tonio/modoboa/"
@@ -51,14 +51,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Nu poate fi mai mare decat cota domeniului"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Permisiune refuzată."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Acest câmp este necesar"
@@ -68,7 +68,7 @@ msgid ""
msgstr ""
"Lista domenilor administrate (doar reselleri și administratori de domeniu)"
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Ne permis pentru acest rol."
@@ -76,13 +76,12 @@ msgstr "Ne permis pentru acest rol."
msgid "Must be equal to mailbox full_address"
msgstr "Trebuie să fie egal cu mailbox full_address"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Acest câmp este necesar."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Domeniu local {} nu există"
@@ -125,41 +124,41 @@ msgstr "Nu poți sa definești o cotă nelimitată"
msgid "User '%s' already exists"
msgstr "Utilizatorul '%s' exista deja"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Trebuie să fie un număr întreg pozitiv"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl nu a fost găsit, asigurați-vă că este instalat."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Directorul nu a fost găsit."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Definiți cel puțin o adresă de rețea autorizată"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "O căsuță poștală este necesară"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -264,19 +263,29 @@ msgstr "Activează verificările DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Verificați fiecare domeniu folosind furnizorii DNSBL majori"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Servere DNS personalizate"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Utilizează un server DNS personalizat in locul celui local"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Folderul de stocare pentru cheile DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -286,19 +295,19 @@ msgstr ""
"Asigurați-vă că acest director aparține utilizatorului root și nu poate fi "
"citit de orice user."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Mărimea implicită în caractere a chei DKIM"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Mărimea implicită în biți pentru o cheie DKIM nou generată"
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Cota-parte implicită a domeniului"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -306,11 +315,11 @@ msgstr ""
"Cota implicită (în MB) aplicată domeniilor nou create, care nu au nicio "
"valoare specificată. O valoare de 0 înseamnă că nu există o cotă."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Limita implicită de trimitere a domeniului"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -318,16 +327,16 @@ msgstr ""
"Numărul de mesaje pe care domeniile nou create vor putea să le trimită pe "
"zi. Lăsați gol pentru nicio limită."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Cutii poștale"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Gestionați cutiile poștale în sistemul de fișiere"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -335,11 +344,11 @@ msgstr ""
"Redenumește sau eliminează căsuțele poștale din sistemul de fișiere atunci "
"când se redenumesc sau se elimină în Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Cota implicită pentru cutia poștală"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created mailboxes with "
@@ -352,11 +361,11 @@ msgstr ""
"create fără a fi specificată nicio valoare. O valoare de 0 înseamnă că nu "
"există cotă."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Limita implicită de trimitere a căsuței poștale"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -364,64 +373,64 @@ msgstr ""
"Numărul de mesaje pe care cutiile poștale nou create vor putea să le trimită "
"pe zi. Lăsați gol pentru nicio limită."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Ștergere automată a contului"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "Când se șterge o cutie poștală, șterge, de asemenea și contul asociat"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Crearea automată a domeniului / cutiei poștale"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
"Creați un domeniu și o căsuță poștală atunci când un cont este creat automat."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Creați un alias când o cutie poștală este redenumită"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
"Creați un alias utilizând vechea adresă atunci când o cutie poștală este "
"redenumită."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administrare"
@@ -441,6 +450,35 @@ msgstr "Deschis"
msgid "Closed"
msgstr "Închis"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} listat de furnizorul DNSBL {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Domeniul nu are înregistrare MX"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Domeniul {} nu are înregistrări MX"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Înregistrare MX invalidă: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "Înregistrarea MX pentru domeniul {0} este invalidă: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] Problemă(e) MX pentru domeniul {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] Problemă(e) DNSBL pentru domeniul {} "
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "alias domeniu"
@@ -463,8 +501,8 @@ msgstr "Nu ești autorizat să imporți domenii"
msgid "You are not allowed to import domain aliases."
msgstr "Nu ești autorizat să imporți aliasuri de domenii"
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr " Nu s-a găsit nicio înregistrare DNS pentru %s"
@@ -474,11 +512,11 @@ msgstr " Nu s-a găsit nicio înregistrare DNS pentru %s"
msgid "No %(type)s record for %(name)s"
msgstr "Nu %(type)sînregistrati pentru %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Nu s-au găsit NS-uri funcționale"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -535,35 +573,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Activați comunicarea cu API-ul public Modoboa"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} listat de furnizorul DNSBL {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Domeniul nu are înregistrare MX"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Domeniul {} nu are înregistrări MX"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Înregistrare MX invalidă: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "Înregistrarea MX pentru domeniul {0} este invalidă: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] Problemă(e) MX pentru domeniul {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] Problemă(e) DNSBL pentru domeniul {} "
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domeniu negăsit"
@@ -765,17 +774,17 @@ msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
"Modoboa a detectat ca domeniul %(domain)s nu are înregistrări MX valide: "
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Nu există înregistrări MX pentru %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Format invalid de IP pentru %(domain)s; %(addr)s "
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -990,11 +999,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1280,7 +1289,7 @@ msgstr ""
"Permiteți acestui administrator să acceseze cutiile poștale ale "
"utilizatorilor"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Diverse"
@@ -1298,11 +1307,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1389,7 +1398,7 @@ msgstr "2FA este deja activat"
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1403,24 +1412,20 @@ msgstr "2FA nu este activat"
msgid "Local"
msgstr "Local"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Profil utilizator"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Sintaxă invalidă"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Număr invalid de iterații"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Acest cod nu este valabil"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
"Vă rugăm să folosiți următorul cod pentru a vă recupera parola Modoboa: {}"
@@ -1454,37 +1459,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "E-mail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Autentificare"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Tip autentificare"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Tehnologia backend folosită pentru autentificare "
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Schema pentru parola implicită"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Schema de criptare pentru parole"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Iterații"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1493,47 +1498,47 @@ msgstr ""
"sha512crypt) Trebuie să fie un număr cuprins între 1000 și 999999999 "
"inclusiv."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Actualizarea schemei de parole la autentificare"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Modifică parola utilizatorului la autentificare pentru a utiliza noua schemă "
"de parolă"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Parola implicită"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Parola implicită setată pentru conturile create automat."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Mărime parolă aleatorie"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Mărimea parolelor generate aleator."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Mărimea parolelor generate aleator."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Actualizarea URL-ului serviciului de parolă"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1543,106 +1548,106 @@ msgstr ""
"Se aplică numai utilizatorilor care nu sunt locali, adică cei creați automat "
"după o autentificare externă reușită (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Anunț de recuperare a parolei"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr "Un mesaj temporar care va fi afișat pe pagina de resetare a parolei."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Activați recuperarea parolei prin SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Activați recuperarea parolei prin SMS pentru utilizatorii care au completat "
"un număr de telefon."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "Furnizor de SMS"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Alegeți un furnizor pentru a trimite SMS de recuperare a parolei"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Adresă server"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "Adresa IP sau numele DNS al serverului LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Port server"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Numărul de port TCP folosit de serverul LDAP"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Activați serverul secundar (fallback)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Activați un server LDAP secundar care va fi utilizat în cazul în care "
"serverul principal eșuează"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Adresa serverului secundar"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "Adresa IP sau numele DNS al serverului LDAP secundar"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Portul serverului secundar"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Numărul portului TCP utilizat de serverul secundar LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Folosește o conexiune securizată"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
"Folosește o conexiune de tip SSL/STARTTLS pentru a accesa serverul LDAP"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Specifică daca serverul LDAP este unul de tip Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Grupuri administrator"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1650,47 +1655,47 @@ msgstr ""
"Membrii acelor grupuri LDAP Posix vor fi create ca administratori de "
"domeniu. Folosește caracterul ';' pentru a separa grupurile."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Tipul de grup"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Tipul grupului LDAP pe care îl utilizați cu directorul selectat."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Baza pentru căutare grupuri"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Numele ales al bazei de căutare utilizat pentru a găsi grupuri"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atributul parolă"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Atributul folosit pentru a stoca parola utilizatorului"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "Setări de autentificare LDAP"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Metoda de autentificare"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Alege metodă folosită pentru autentificare"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Atribuie DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1698,28 +1703,28 @@ msgstr ""
"Numele ales folosit la atribuirea cu servarul LDAP. Câpul necompletat se "
"foloseste în cazul atribuirii anonime"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Parola de atribuire"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Parola folosită la momentul atribuiri cu servarul LDAP (vezi 'Atribuie DB')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Căutare bază de utilizatori"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Numele ales al bazei de căutare utilizat pentru a găsi utilizatori"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Filtru de căutare"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1727,11 +1732,11 @@ msgstr ""
"Un filtru opțional (de ex. '(ObjectClass = persoană)'). Pentru a fi valid, "
"trebuie să fie închis în paranteze."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Templateul DN pt utilizator"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1740,26 +1745,26 @@ msgstr ""
"Templateul folosit pentru a construi un utilizator DN. Ar trebui să conțină "
"un substituent (de ex. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "Setări de sincronizare LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Activați exportul către LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Activați sincronizarea automată între baza de date locală și directorul LDAP"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
"Ștergerea contului LDAP la distanță atunci când contul local este șters"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1767,11 +1772,11 @@ msgstr ""
"Ștergeți contul LDAP la distanță atunci când contul local este șters, altfel "
"acesta va fi dezactivat."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Șablon de cont DN"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1780,209 +1785,209 @@ msgstr ""
" Șablonul utilizat pentru a construi DN-ul unui cont. Acesta trebuie să "
"conțină un spațiu rezervat (ie. %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Activați importul din LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
"Activați sincronizarea conturilor din directorul LDAP în baza de date locală"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Atributul nume de utilizator"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Numele atributului LDAP în care poate fi găsit numele de utilizator."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Activați sincronizarea Dovecot LDAP"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
"Setările de autentificare LDAP vor fi aplicate la configurația Dovecot."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Fișier de configurare Dovecot LDAP"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Locația fișierului de configurare care conține setările Dovecot LDAP."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Bord"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "spam messages"
msgid "Custom welcome message"
msgstr "mesaje spam"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
msgid "A welcome message that will be displayed instead the default one"
msgstr "Un mesaj temporar care va fi afișat pe pagina de resetare a parolei."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Feedul RSS personalizat"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Afișează feedul RSS personalizat la reselleri și administratori de domeniu"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Afișează feedul RSS personalizat la reselleri și administratori de domeniu"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Afișează feedul RSS personalizat la reselleri și administratori de domeniu"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Ascunde widgetul de caracteristici "
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
"Ascunde widgetul de caracteristici pentru reselleri și administratori de "
"domeniu"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Email secundar"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notificări"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Adresa expeditorului"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Adresa de email folosită pentru trimiterea notificărilor."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "API public"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Activați comunicarea"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Verifică automat dacă este disponibilă o versiune mai nouă"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Verifică dacă există noi versiuni"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Trimiteți un e-mail atunci când sunt găsite versiuni noi"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
"Trimiteți un e-mail pentru a notifica administratorii despre noile versiuni"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Beneficiar"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Destinatarul e-mailurilor de notificare a noilor versiuni."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Trimite statistici"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Trimiteți statistici către API-ul public Modoboa (contoare și extensii "
"utilizate)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Pragul pentru cont invalid"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Pragul pentru cont invalid"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1990,49 +1995,39 @@ msgstr ""
"Un cont cu o ultima data de conectare mai mare decat acest prag (in zile) va "
"fi considerat inactiv"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Intervalul de verificare a notificărilor"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
"Intervalul dintre două verificări de notificare principală (în secunde)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Vechimea maximă a înregistrărilor log"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Vechimea maximă în zilele de înregistrare a intrărilor în jurnal"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Număr de itemi per pagină"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Numărul de itemi afișați pe o pagină"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Redirecționarea principală implicită"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Redirecționarea implicită utilizată atunci când nu este specificată nici o "
-"aplicație"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2382,7 +2377,7 @@ msgid "Not resolved"
msgstr "Nedefinit"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3355,7 +3350,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Subiect"
@@ -3617,24 +3612,24 @@ msgstr ""
msgid "SMTP settings"
msgstr "Setări LDAP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Folosește o conexiune securizată"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr ""
"Folosește o conexiune de tip SSL/STARTTLS pentru a accesa serverul LDAP"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3650,11 +3645,17 @@ msgstr "Metoda de autentificare"
msgid "Server needs authentication"
msgstr "Setări de autentificare LDAP"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "Setări LDAP"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
@@ -3662,97 +3663,97 @@ msgstr ""
"Redirecționarea implicită utilizată atunci când nu este specificată nici o "
"aplicație"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
#, fuzzy
#| msgid "Create aliases"
msgid "Folders"
msgstr "Crează aliasuri "
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
#, fuzzy
#| msgid "Create aliases"
msgid "Trash folder"
msgstr "Crează aliasuri "
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "mesaje rejectate"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
#, fuzzy
#| msgid "Create aliases"
msgid "Sent folder"
msgstr "Crează aliasuri "
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts folder"
msgstr "Crează aliasuri "
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Create aliases"
msgid "Junk folder"
msgstr "Crează aliasuri "
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "mesaje rejectate"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "mesaje trimise"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Redirecționarea principală implicită"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
@@ -3760,11 +3761,11 @@ msgstr ""
"Redirecționarea implicită utilizată atunci când nu este specificată nici o "
"aplicație"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3780,47 +3781,74 @@ msgstr "Adresă server"
msgid "Failed to remove attachment: "
msgstr "Nu s-a reușit crearea unui cont LDAP: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Dată"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "mesaje trimise"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts"
msgstr "Crează aliasuri "
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Profil utilizator"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Redirecționarea principală implicită"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Redirecționarea implicită utilizată atunci când nu este specificată nici "
+#~ "o aplicație"
diff --git a/modoboa/locale/ru/LC_MESSAGES/django.po b/modoboa/locale/ru/LC_MESSAGES/django.po
index 9f37338b9..109dc0c57 100644
--- a/modoboa/locale/ru/LC_MESSAGES/django.po
+++ b/modoboa/locale/ru/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
+#
# Translators:
# Aleksandr Mokrushin, 2021
# Aleksandr Mokrushin, 2023
@@ -27,25 +27,32 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: Николай Грищенков, 2025\n"
-"Language-Team: Russian (http://app.transifex.com/tonio/modoboa/language/ru/)\n"
+"Language-Team: Russian (http://app.transifex.com/tonio/modoboa/language/"
+"ru/)\n"
+"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
#: admin/api/v1/serializers.py:39
msgid ""
"Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. "
"A value of 0 means no quota."
-msgstr "Квота распределяемая между почтовыми ящиками. Может быть выражена в КБ, МБ (по умолчанию) или ГБ. Значение 0 означает отсутствие квоты."
+msgstr ""
+"Квота распределяемая между почтовыми ящиками. Может быть выражена в КБ, МБ "
+"(по умолчанию) или ГБ. Значение 0 означает отсутствие квоты."
#: admin/api/v1/serializers.py:46
msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
-msgstr "К почтовым ящикам применяется квота по умолчанию в МБ. Значение 0 означает отсутствие квоты."
+msgstr ""
+"К почтовым ящикам применяется квота по умолчанию в МБ. Значение 0 означает "
+"отсутствие квоты."
#: admin/api/v1/serializers.py:94
msgid "domain alias with this name already exists"
@@ -60,23 +67,25 @@ msgid "Cannot be greater than domain quota"
msgstr "Не может быть больше чем квота домена"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "В доступе отказано"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Это поле обязательно для заполнеия"
#: admin/api/v1/serializers.py:243
msgid ""
"List of administered domains (resellers and domain administrators only)."
-msgstr "Список администрируемых доменов (только для реселлеров и администраторов доменов)."
+msgstr ""
+"Список администрируемых доменов (только для реселлеров и администраторов "
+"доменов)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Не доступно для данной роли."
@@ -84,13 +93,12 @@ msgstr "Не доступно для данной роли."
msgid "Must be equal to mailbox full_address"
msgstr "Должен совпадать с полным адресом почтового ящика."
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Это поле обязательно для заполнения"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Локальный домен {} не существует"
@@ -131,39 +139,39 @@ msgstr "Вы не можете установить неограниченную
msgid "User '%s' already exists"
msgstr "Пользователь '%s' уже существует"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Значение может быть положительным целым числом"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl не найден, убедитесь, что он установлен."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Каталог не найден."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "В этом поле разрешены только действительные IP-адреса (или сети)."
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr "Пожалуйста, отключите миграцию imap, прежде чем отключать эту опцию."
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Определите хотя бы одну авторизованную сеть/адрес"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr "Левая часть E-Mail адреса не может быть длиннее 64 символов."
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "Для создания алиасов нужен хотя бы один почтовый ящик."
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr "Неизвестный статус"
@@ -193,9 +201,11 @@ msgstr "Разрешённые MX-записи"
#: admin/app_settings.py:37
msgid ""
-"A list of IP or network address every MX record should match. A warning will"
-" be sent if a record does not respect it."
-msgstr "Список IP или сетевых адресов которым должна соответствовать каждая MX запись. Предупреждение будет отправлено если запись не соответствует этому."
+"A list of IP or network address every MX record should match. A warning will "
+"be sent if a record does not respect it."
+msgstr ""
+"Список IP или сетевых адресов которым должна соответствовать каждая MX "
+"запись. Предупреждение будет отправлено если запись не соответствует этому."
#: admin/app_settings.py:47
msgid "New domains must use authorized MX(s)"
@@ -205,7 +215,8 @@ msgstr "Новые домены обязаны использовать разр
msgid ""
"Prevent the creation of a new domain if its MX record does not use one of "
"the defined addresses."
-msgstr "Запрещать создание домена, если его MX-запись не входит в разрешённый список."
+msgstr ""
+"Запрещать создание домена, если его MX-запись не входит в разрешённый список."
#: admin/app_settings.py:59
msgid "Enable IPV6 checks"
@@ -255,142 +266,167 @@ msgstr "Включить проверки DNSBL"
msgid "Check every domain against major DNSBL providers"
msgstr "Проверьте каждый домен по основным провайдерам DNSBL"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Пользовательский DNS-сервер"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
-msgstr "Используйте пользовательский DNS-сервер вместо конфигурации локального сервера"
+msgstr ""
+"Используйте пользовательский DNS-сервер вместо конфигурации локального "
+"сервера"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "Каталог хранения ключей DKIM"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
-msgstr "Полный путь к каталогу для закрытых ключей DKIM. Должен принадлежать root и быть недоступен извне."
+msgstr ""
+"Полный путь к каталогу для закрытых ключей DKIM. Должен принадлежать root и "
+"быть недоступен извне."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Длина ключа DKIM по умолчанию"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Длина в битах для новых ключей DKIM по умолчанию."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Квота домена по умолчанию"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
-msgstr "Квота по умолчанию (в МБ), применяемая к только что созданным доменам, значение которых не задано. Значение 0 означает отсутствие квоты."
+msgstr ""
+"Квота по умолчанию (в МБ), применяемая к только что созданным доменам, "
+"значение которых не задано. Значение 0 означает отсутствие квоты."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Лимит отправки по умолчанию для домена"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
-msgstr "Количество сообщений, которые разрешено отправлять свежесозданным доменам в день. Оставьте пустым, чтобы не ограничивать."
+msgstr ""
+"Количество сообщений, которые разрешено отправлять свежесозданным доменам в "
+"день. Оставьте пустым, чтобы не ограничивать."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Почтовые ящики"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Обрабатывать почтовые ящики на диске"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
-msgstr "Удалять или переименовывать почтовые ящики на диске, если они удалены или переименованы в Modoboa"
+msgstr ""
+"Удалять или переименовывать почтовые ящики на диске, если они удалены или "
+"переименованы в Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Квота почтового ящика по умолчанию"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
-msgstr "Квота почтового ящика по умолчанию (в МБ), применяемая к вновь созданным доменам без указанного значения. Значение 0 означает отсутствие квоты."
+msgstr ""
+"Квота почтового ящика по умолчанию (в МБ), применяемая к вновь созданным "
+"доменам без указанного значения. Значение 0 означает отсутствие квоты."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Ограничение отправки почтовых сообщений по умолчанию"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
-msgstr "Количество сообщений, которые новые почтовые ящики могут отправлять в день. Оставьте пустым, чтобы не ограничивать."
+msgstr ""
+"Количество сообщений, которые новые почтовые ящики могут отправлять в день. "
+"Оставьте пустым, чтобы не ограничивать."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Автоматическое удаление учётной записи"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
-msgstr "При удалении почтового ящика, так же удалять и учётной записи владельца"
+msgstr ""
+"При удалении почтового ящика, так же удалять и учётной записи владельца"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Автоматическое создание домена/почтового ящика"
-#: admin/app_settings.py:221
-msgid ""
-"Create a domain and a mailbox when an account is automatically created."
-msgstr "При автоматическом создании учётной записи также создавать домен и ящик."
+#: admin/app_settings.py:233
+msgid "Create a domain and a mailbox when an account is automatically created."
+msgstr ""
+"При автоматическом создании учётной записи также создавать домен и ящик."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Создать алиас при переименовании почтового ящика"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr "При переименовании ящика создавать алиас со старым адресом."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr "Алиасы"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr "Алиасы могут указывать на любой домен"
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr "Разрешить алиасам указывать любой домен, а не только локальные домены."
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr "Список целевых блокировок алиасов"
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr "Домены, на которые запрещено ставить алиасы (через запятую)"
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr "Список разрешенных целевых алиасов"
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr "Список доменов, на которые могут быть нацелены алиасы (через запятую)."
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Администрирование"
@@ -410,6 +446,35 @@ msgstr "Открыто"
msgid "Closed"
msgstr "Закрыто"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} внесён в список DNSBL‑провайдера {}."
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "У домена отсутствует MX-запись"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "У домена {} отсутсвует MX-запись"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Невалидная MX-запись: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "MX-запись для домена {0} не валидная: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX проблема(ы) для домена {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL проблема(ы) для домена {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "алиас домена"
@@ -432,8 +497,8 @@ msgstr "У вас нет прав на импорт доменов"
msgid "You are not allowed to import domain aliases."
msgstr "У вас нет прав на импорт алиасов доменов."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Не найдена DNS-запись для %s"
@@ -443,11 +508,11 @@ msgstr "Не найдена DNS-запись для %s"
msgid "No %(type)s record for %(name)s"
msgstr "Нет %(type)s записи для %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Не найдены доступные серверы имен"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "Тайм-аут DNS, сейчас невозможно проверить %s"
@@ -489,7 +554,8 @@ msgstr "Не удалось прочитать CSV-файл в кодировк
msgid ""
"DKIM path non-writable (either a permission issue or the directory does not "
"exist)"
-msgstr "Каталог DKIM недоступен для записи (нет прав или каталога не существует)"
+msgstr ""
+"Каталог DKIM недоступен для записи (нет прав или каталога не существует)"
#: admin/management/commands/subcommands/_manage_dkim_keys.py:52
msgid "Failed to generate DKIM private key"
@@ -499,35 +565,6 @@ msgstr "Не удалось сгенерировать приватный клю
msgid "Failed to generate DKIM public key"
msgstr "Не удалось сгенерировать публичный ключ DKIM"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} внесён в список DNSBL‑провайдера {}."
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "У домена отсутствует MX-запись"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "У домена {} отсутсвует MX-запись"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Невалидная MX-запись: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "MX-запись для домена {0} не валидная: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX проблема(ы) для домена {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL проблема(ы) для домена {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Домен не найден."
@@ -612,7 +649,8 @@ msgstr "Включить DKIM‑подпись"
#: admin/models/domain.py:63
msgid ""
"If you activate this feature, a DKIM key will be generated for this domain."
-msgstr "Если вы включите эту функцию, для этого домена будет сгенерирован DKIM‑ключ."
+msgstr ""
+"Если вы включите эту функцию, для этого домена будет сгенерирован DKIM‑ключ."
#: admin/models/domain.py:70
msgid "Key length"
@@ -633,11 +671,13 @@ msgstr " {}: недопустимое значение квоты для дом
#: admin/models/domain.py:343
msgid "{}: invalid default mailbox quota value for domain"
-msgstr " {}: недопустимое значение квоты почтового ящика по умолчанию для домена"
+msgstr ""
+" {}: недопустимое значение квоты почтового ящика по умолчанию для домена"
#: admin/models/domain.py:350
msgid "{}: default mailbox quota cannot be greater than domain quota"
-msgstr "{}: квота почтового ящика по умолчанию не может быть больше квоты домена"
+msgstr ""
+"{}: квота почтового ящика по умолчанию не может быть больше квоты домена"
#: admin/models/domain_alias.py:36
msgid "The alias name"
@@ -662,7 +702,8 @@ msgstr "Адрес почтового ящика (без @domain.tld)"
#: admin/models/mailbox.py:95
msgid "Number of messages this mailbox can send per day"
-msgstr "Количество писем, которые можно отправить из этого почтового ящика за день"
+msgstr ""
+"Количество писем, которые можно отправить из этого почтового ящика за день"
#: admin/models/mailbox.py:153
#, python-format
@@ -690,31 +731,36 @@ msgstr "Почтовый ящик {} уже существует"
msgid ""
"Modoboa detected that domain %(domain)s is listed by the following DNSBL "
"providers:"
-msgstr "Modoboa обнаружил, что домен %(domain)s включён в списки следующих DNSBL‑провайдеров:"
+msgstr ""
+"Modoboa обнаружил, что домен %(domain)s включён в списки следующих "
+"DNSBL‑провайдеров:"
#: admin/templates/admin/notifications/domain_in_dnsbl.html:11
msgid ""
"The domain's reputation will be affected and there is a chance that emails "
"coming from it are considered as spam. You should contact those providers "
"and ask them to unlist detected IP address(es)."
-msgstr "Репутация домена ухудшится, и есть риск, что письма с него будут считаться спамом. Вам следует связаться с этими провайдерами и попросить удалить обнаруженные IP‑адреса из списков."
+msgstr ""
+"Репутация домена ухудшится, и есть риск, что письма с него будут считаться "
+"спамом. Вам следует связаться с этими провайдерами и попросить удалить "
+"обнаруженные IP‑адреса из списков."
#: admin/templates/admin/notifications/domain_invalid_mx.html:3
#, python-format
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr "Modoboa обнаружил, что у домена %(domain)s нет корректной MX‑записи:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Нет MX‑записи для %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Неверный формат IP адреса для %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr "Нет AAAA‑записи для %s"
@@ -729,7 +775,8 @@ msgstr "Локальная часть адреса чувствительна к
#: amavis/app_settings.py:19
msgid "Value should match amavisd.conf variable $localpart_is_case_sensitive"
-msgstr "Значение должно совпадать с $localpart_is_case_sensitive в amavisd.conf"
+msgstr ""
+"Значение должно совпадать с $localpart_is_case_sensitive в amavisd.conf"
#: amavis/app_settings.py:27
msgid "Recipient delimiter"
@@ -801,7 +848,8 @@ msgstr "Разрешить прямое деблокирование"
#: amavis/app_settings.py:117
msgid "Allow users to directly release their messages"
-msgstr "Позволить пользователю самостоятельно деблокировать сообщения для доставки"
+msgstr ""
+"Позволить пользователю самостоятельно деблокировать сообщения для доставки"
#: amavis/app_settings.py:124
msgid "Enable self-service mode"
@@ -837,7 +885,8 @@ msgstr "Является ли Spamassassin локальным?"
#: amavis/app_settings.py:163
msgid "Tell if Spamassassin is running on the same server than modoboa"
-msgstr "Укажите, запущен ли SpamAssassin на том же сервере, где установлен Modoboa"
+msgstr ""
+"Укажите, запущен ли SpamAssassin на том же сервере, где установлен Modoboa"
#: amavis/app_settings.py:171
msgid "Default user"
@@ -871,7 +920,9 @@ msgstr "Включить подоменное ручное обучение"
msgid ""
"Allow domain administrators to train Spamassassin (within dedicated per-"
"domain databases)"
-msgstr "Разрешить администраторам домена обучать Spamassassin (в рамках выделенных баз данных для каждого домена)"
+msgstr ""
+"Разрешить администраторам домена обучать Spamassassin (в рамках выделенных "
+"баз данных для каждого домена)"
#: amavis/app_settings.py:215
msgid "Enable per-user manual learning"
@@ -881,13 +932,15 @@ msgstr "Включить ручное обучение для каждого п
msgid ""
"Allow simple users to personally train Spamassassin (within a dedicated "
"database)"
-msgstr "Разрешить простым пользователям обучать Spamassassin (в рамках выделенной базы данных)."
+msgstr ""
+"Разрешить простым пользователям обучать Spamassassin (в рамках выделенной "
+"базы данных)."
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "Отображение"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr "Количество отображаемых писем на странице"
@@ -903,13 +956,17 @@ msgstr "Amavis"
msgid ""
"AMAVIS_DEFAULT_DATABASE_ENCODING does not match the character encoding used "
"by the Amavis database."
-msgstr "Кодировка AMAVIS_DEFAULT_DATABASE_ENCODING не совпадает с кодировкой базы Amavis"
+msgstr ""
+"Кодировка AMAVIS_DEFAULT_DATABASE_ENCODING не совпадает с кодировкой базы "
+"Amavis"
#: amavis/checks/settings_checks.py:12
msgid ""
"Check your database character encoding and set/update "
"AMAVIS_DEFAULT_DATABASE_ENCODING."
-msgstr "Проверьте кодировку базы данных и установите правильное значение AMAVIS_DEFAULT_DATABASE_ENCODING"
+msgstr ""
+"Проверьте кодировку базы данных и установите правильное значение "
+"AMAVIS_DEFAULT_DATABASE_ENCODING"
#: amavis/checks/settings_checks.py:19
msgid "Modoboa Amavis has not been tested using the selected database engine."
@@ -962,7 +1019,9 @@ msgstr "По умолчанию"
#: amavis/models.py:111
msgid "Bypass virus checks or not. Choose 'default' to use global settings."
-msgstr "Обход проверки на вирусы. Выберите 'По умолчанию' для использования глобальных настроек."
+msgstr ""
+"Обход проверки на вирусы. Выберите 'По умолчанию' для использования "
+"глобальных настроек."
#: amavis/models.py:115
msgid "Spam filter"
@@ -970,7 +1029,9 @@ msgstr "Спам фильтр"
#: amavis/models.py:125
msgid "Bypass spam checks or not. Choose 'default' to use global settings."
-msgstr "Обход проверки на спам. Выберите 'По умолчанию' для использования глобальных настроек"
+msgstr ""
+"Обход проверки на спам. Выберите 'По умолчанию' для использования глобальных "
+"настроек"
#: amavis/models.py:129
msgid "Banned filter"
@@ -978,7 +1039,9 @@ msgstr "Фильтр блокировки"
#: amavis/models.py:139
msgid "Bypass banned checks or not. Choose 'default' to use global settings."
-msgstr "Обход проверки на блокирование. Выберите 'По умолчанию' для использования глобальных настроек"
+msgstr ""
+"Обход проверки на блокирование. Выберите 'По умолчанию' для использования "
+"глобальных настроек"
#: amavis/models.py:170
msgid "Spam marker"
@@ -986,9 +1049,11 @@ msgstr "Спам-метка"
#: amavis/models.py:176
msgid ""
-"Modify spam subject using the specified text. Choose 'default' to use global"
-" settings."
-msgstr "Изменить тему спам сообщения используя специальный текст. Выберите 'по умолчанию' для использования глобальных настроек"
+"Modify spam subject using the specified text. Choose 'default' to use global "
+"settings."
+msgstr ""
+"Изменить тему спам сообщения используя специальный текст. Выберите 'по "
+"умолчанию' для использования глобальных настроек"
#: amavis/templates/amavis/notifications/pending_requests.html:3
#, python-format
@@ -1057,7 +1122,8 @@ msgstr "Период между двумя автоответами"
#: autoreply/app_settings.py:20
msgid ""
"Number of days to wait before sending a new auto-reply to the same recipient"
-msgstr "Количество дней ожидания перед отправкой нового автоответа тому же получателю"
+msgstr ""
+"Количество дней ожидания перед отправкой нового автоответа тому же получателю"
#: autoreply/app_settings.py:27 autoreply/app_settings.py:36
msgid "Default subject"
@@ -1073,7 +1139,9 @@ msgstr "Тема по умолчанию для автоматически со
msgid ""
"Default content used when an auto-reply message is created automatically. "
"The '%(name)s' macro will be replaced by the user's full name."
-msgstr "Содержание по умолчанию используется при автоматическом создании автоответа. Переменная '%(name)s' будет заменена на полное имя."
+msgstr ""
+"Содержание по умолчанию используется при автоматическом создании автоответа. "
+"Переменная '%(name)s' будет заменена на полное имя."
#: autoreply/apps.py:15
msgid "Automatic replies"
@@ -1110,7 +1178,9 @@ msgstr "URL сервера"
#: calendars/app_settings.py:19
msgid ""
"The URL of your Radicale server. It will be used to construct calendar URLs."
-msgstr "URL-адрес вашего сервера Radicale. Он будет использоваться для создания URL-адресов календаря."
+msgstr ""
+"URL-адрес вашего сервера Radicale. Он будет использоваться для создания URL-"
+"адресов календаря."
#: calendars/app_settings.py:31
msgid "Rights management"
@@ -1130,9 +1200,11 @@ msgstr "Разрешить администрирование календаре
#: calendars/app_settings.py:48
msgid "Allow domain administrators to manage user calendars (read and write)"
-msgstr "Разрешить администратору домена управлять календарями пользователей (чтение и запись)"
+msgstr ""
+"Разрешить администратору домена управлять календарями пользователей (чтение "
+"и запись)"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Прочее"
@@ -1144,17 +1216,19 @@ msgstr "Максимальный размер файлов ICS"
#: calendars/app_settings.py:68
msgid ""
"Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
-msgstr "Максимальный размер импортированных файлов ICS в байтах (или КБ, МБ, ГБ, если указано)"
+msgstr ""
+"Максимальный размер импортированных файлов ICS в байтах (или КБ, МБ, ГБ, "
+"если указано)"
#: calendars/app_settings.py:89 core/api/v2/viewsets.py:205
msgid "Calendars"
msgstr "Календари"
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "Местоположение сервера не установлено, исправьте это."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr "Загруженный файл слишком велик (максимум: {} байт)"
@@ -1170,7 +1244,9 @@ msgstr "Синхронизировать адресную книгу через
msgid ""
"Choose to synchronize or not your address book using CardDAV. You will be "
"able to access your contacts from the outside."
-msgstr "Выберите, синхронизировать ли адресную книгу через CardDAV. Это позволит получать доступ к контактам извне."
+msgstr ""
+"Выберите, синхронизировать ли адресную книгу через CardDAV. Это позволит "
+"получать доступ к контактам извне."
#: contacts/app_settings.py:29
msgid "Synchronization frequency"
@@ -1231,9 +1307,11 @@ msgstr "Двухфакторная аутентификация 2FA уже вк
#: core/api/v1/serializers.py:87
#, python-format
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
-msgstr "Неудачная попытка изменения настроек двухфакторной аутентификации от %(addr)s от имени пользователя %(user)s"
+msgstr ""
+"Неудачная попытка изменения настроек двухфакторной аутентификации от "
+"%(addr)s от имени пользователя %(user)s"
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr "Неверный пароль"
@@ -1245,25 +1323,20 @@ msgstr "Двухфакторная аутентификация 2FA не вкл
msgid "Local"
msgstr "Локальный"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Профиль пользователя"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Неверный синтаксис"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Неправильное количество циклов"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Этот код недействителен"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213
-#: core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Используйте следующий код для восстановления пароля Modoboa : {}"
@@ -1288,531 +1361,571 @@ msgid "Calendar"
msgstr "Календарь"
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr "Веб-почта"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Аутентификация"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Тип аутентификации"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Базовая программа для проверки подлинности"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Схема пароля по умолчанию"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Схема используемая для шифровании пароля почтового ящика."
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Циклы"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
-msgstr "Количество циклов (используется только для sha256crypt и sha512crypt), Может быть от 1000 до 999999999, включительно."
+msgstr ""
+"Количество циклов (используется только для sha256crypt и sha512crypt), Может "
+"быть от 1000 до 999999999, включительно."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Обновить схему пароля при входе"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
-msgstr "Обновите пароль пользователя при входе в систему, чтобы использовать схему пароля по умолчанию"
+msgstr ""
+"Обновите пароль пользователя при входе в систему, чтобы использовать схему "
+"пароля по умолчанию"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Пароль по умолчанию"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Пароль по умолчанию для автоматически создаваемых учетных записей."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Длина случайного пароля"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Длина случайно сгенерированного пароля."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr "Разрешить специальные символы для случайного пароля"
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
-msgstr "Включить использование специальных символов в случайно генерируемых паролях"
+msgstr ""
+"Включить использование специальных символов в случайно генерируемых паролях"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Обновить URL-адрес службы паролей"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
-msgstr "URL-адрес внешней страницы, на которой пользователи смогут обновить свой пароль. Это относится только к нелокальным пользователям, т.е. автоматически созданные после успешной внешней аутентификации (LDAP, SMTP)."
+msgstr ""
+"URL-адрес внешней страницы, на которой пользователи смогут обновить свой "
+"пароль. Это относится только к нелокальным пользователям, т.е. автоматически "
+"созданные после успешной внешней аутентификации (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Объявление о восстановлении пароля"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
-msgstr "Временное сообщение, которое будет отображаться на странице сброса пароля"
+msgstr ""
+"Временное сообщение, которое будет отображаться на странице сброса пароля"
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Включить восстановление пароля по SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
-msgstr "Включить восстановление пароля по SMS для пользователей, указавших номер телефона."
+msgstr ""
+"Включить восстановление пароля по SMS для пользователей, указавших номер "
+"телефона."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "Поставщик SMS"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Выбрать поставщика службы SMS для восстановления пароля"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr "LDAP"
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Адрес сервера"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "IP адрес или DNS имя сервера LDAP"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Порт сервера"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "Номер TCP порта LDAP сервера"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Включить дополнительный сервер (запасной вариант)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
-msgstr "Включите дополнительный LDAP-сервер, который будет использоваться в случае сбоя основного"
+msgstr ""
+"Включите дополнительный LDAP-сервер, который будет использоваться в случае "
+"сбоя основного"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Адрес дополнительного сервера"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "IP-адрес или DNS-имя дополнительного LDAP-сервера"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Порт дополнительного сервера"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "Номер TCP-порта, используемого вторичным сервером LDAP"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Использовать защищенное соединение"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Использовать SSL/TLS соединение с LDAP сервером"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Укажите, если LDAP сервер в Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Администратор груп"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
-"Members of those LDAP Posix groups will be created as domain administrators."
-" Use ';' characters to separate groups."
-msgstr "Члены этих LDAP Posix групп должны быть созданы администратором домена. Используйте ';' для как разделитель груп"
+"Members of those LDAP Posix groups will be created as domain administrators. "
+"Use ';' characters to separate groups."
+msgstr ""
+"Члены этих LDAP Posix групп должны быть созданы администратором домена. "
+"Используйте ';' для как разделитель груп"
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Тип группы"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Тип групп, используемых вашим каталогом LDAP"
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "База поиска групп"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Уникальное имя базы которое используется для поиска групп"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Атрибут пароля"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Свойства используемые для сохранения пользовательских паролей"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "Настройки аутентификации LDAP"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Метод аутентификации"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Выберите метод аутентификации "
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Соединится с DN "
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
-msgstr "Отличительное имя используемое для соединения с LDAP сервером. Оставьте пустым для анонимного соединения"
+msgstr ""
+"Отличительное имя используемое для соединения с LDAP сервером. Оставьте "
+"пустым для анонимного соединения"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Пароль для соединения"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr "Пароль для соединения с LDAP сервером"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "База поиска пользователей"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Уникальное имя базы которое используется для поиска пользователей"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Фильтр поиска"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
-msgstr "Необязательная срока поиска (например '(objectClass=person)') Значение нужно заключить в скобки"
+msgstr ""
+"Необязательная срока поиска (например '(objectClass=person)') Значение нужно "
+"заключить в скобки"
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Шаблон пользователя DN"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "Шаблон используется для построения запросов к DN Он должен содержать атрибут например (%(user)s)"
+msgstr ""
+"Шаблон используется для построения запросов к DN Он должен содержать атрибут "
+"например (%(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "Настройки синхронизации LDAP"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Включить экспорт в LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
-msgstr "Включить автоматическую синхронизацию между локальной базой данных и каталогом LDAP."
+msgstr ""
+"Включить автоматическую синхронизацию между локальной базой данных и "
+"каталогом LDAP."
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
-msgstr "Удалить удаленную учетную запись LDAP при удалении локальной учетной записи"
+msgstr ""
+"Удалить удаленную учетную запись LDAP при удалении локальной учетной записи"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
-msgstr "Удалите удаленную учетную запись LDAP при удалении локальной учетной записи, иначе она будет отключена."
+msgstr ""
+"Удалите удаленную учетную запись LDAP при удалении локальной учетной записи, "
+"иначе она будет отключена."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Шаблон DN учётной записи"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "Шаблон используется для построения запросов к аккаунту DN. Он должен содержать атрибут (например %(user)s)"
+msgstr ""
+"Шаблон используется для построения запросов к аккаунту DN. Он должен "
+"содержать атрибут (например %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Включить импорт из LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
-msgstr "Включить синхронизацию учетных записей из каталога LDAP в локальную базу данных."
+msgstr ""
+"Включить синхронизацию учетных записей из каталога LDAP в локальную базу "
+"данных."
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Атрибут имени пользователя"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Имя атрибута LDAP, в котором можно найти имя пользователя."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Включить синхронизацию Dovecot с LDAP"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr "Параметры аутентификации LDAP будут применены к конфигурации Dovecot"
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Файл конфигурации Dovecot LDAP"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Путь к файлу конфигурации, содержащему настройки Dovecot LDAP"
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Приборная панель"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr "Пользовательское приветственное сообщение"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
-msgstr "Приветственное сообщение, которое будет отображаться вместо стандартного"
+msgstr ""
+"Приветственное сообщение, которое будет отображаться вместо стандартного"
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Пользовательская RSS лента"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
-msgstr "Отображать пользовательскую ленту RSS для реселлеров и администраторов доменов"
+msgstr ""
+"Отображать пользовательскую ленту RSS для реселлеров и администраторов "
+"доменов"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr "Показывать пользовательскую RSS‑ленту супер‑администраторам"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr "Также показывать пользовательскую RSS‑ленту супер‑администраторам"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Спрятать виджет новых функций"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Спрятать виджет новых функций для реселлеров и администраторов доменов"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr "Тема"
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr "Основной цвет темы"
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
-msgstr "Основной цвет темы (в шестнадцатеричном формате), используется, например, как цвет фона левого меню"
+msgstr ""
+"Основной цвет темы (в шестнадцатеричном формате), используется, например, "
+"как цвет фона левого меню"
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr "Основной цвет темы (более светлый вариант)"
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr "Основной цвет темы (в шестнадцатеричном формате)"
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr "Основной цвет темы (более тёмный вариант)"
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr "Дополнительный цвет темы"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
-msgstr "Дополнительный цвет темы (в шестнадцатеричном формате), используется, например, как цвет фона некоторых кнопок"
+msgstr ""
+"Дополнительный цвет темы (в шестнадцатеричном формате), используется, "
+"например, как цвет фона некоторых кнопок"
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr "Цвет темы для меток"
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr "Цвет темы для меток (в шестнадцатеричном формате)"
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Уведомления"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Адрес отправителя"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Почтовый адрес для отправки уведомлений"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Публичный API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Разрешить передачу"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Автоматически проверять доступность новых версий."
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Проверить новые версии"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Отправлять электронное письмо при обнаружении новых версий"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
-msgstr "Отправьте электронное письмо, чтобы уведомить администраторов о новых версиях."
+msgstr ""
+"Отправьте электронное письмо, чтобы уведомить администраторов о новых "
+"версиях."
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Получатель"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Получатель электронных писем с уведомлениями о новых версиях."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Отправить статистику"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
-msgstr "Отправлять статистику в Modoboa public API (счетчики и используемые расширения)"
+msgstr ""
+"Отправлять статистику в Modoboa public API (счетчики и используемые "
+"расширения)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr "Включить отслеживание неактивных учётных записей"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
-"Allow the administrator to set a threshold (in days) beyond which an account"
-" is considered inactive if the user hasn't logged in"
-msgstr "Позволяет администратору задать порог (в днях), по истечении которого учётная запись считается неактивной, если пользователь не входил в систему"
+"Allow the administrator to set a threshold (in days) beyond which an account "
+"is considered inactive if the user hasn't logged in"
+msgstr ""
+"Позволяет администратору задать порог (в днях), по истечении которого "
+"учётная запись считается неактивной, если пользователь не входил в систему"
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Порог неактивного аккаунта"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
-"An account with a last login date greater than this threshold (in days) will"
-" be considered as inactive"
-msgstr "Учётная запись с датой последнего входа, превышающей этот порог (в днях), будет считаться неактивным"
+"An account with a last login date greater than this threshold (in days) will "
+"be considered as inactive"
+msgstr ""
+"Учётная запись с датой последнего входа, превышающей этот порог (в днях), "
+"будет считаться неактивным"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Интервал проверки важных уведомлений"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Интервал проверки важных уведомлений (в секундах)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Максимальный срок хранения лог записей"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Срок хранения лог записей в днях "
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr "Срок хранения записей в истории сообщений"
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr "Срок хранения сообщения (в днях) в разделе истории сообщений"
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Элементов на странице"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Количество элементов на странице"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Порог перенаправления по умолчанию"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "Если приложение не указано. Используется перенаправление по умолчанию."
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
"between summer/winter time (ie the same local time occuring twice due to "
"clock change)."
-msgstr "Для параметра USE_TZ установлено значение False, это может привести к проблемам при переходе между летним и зимним временем (т. е. одно и то же местное время повторяется дважды из-за смены часов)."
+msgstr ""
+"Для параметра USE_TZ установлено значение False, это может привести к "
+"проблемам при переходе между летним и зимним временем (т. е. одно и то же "
+"местное время повторяется дважды из-за смены часов)."
#: core/checks.py:19
msgid "Set `USE_TZ = True` in settings.py"
@@ -1830,27 +1943,33 @@ msgstr "Обновите схему хранения паролей на бол
msgid ""
"Oauth2 application for dovecot has not been found. Webmail and some other "
"features won't be available."
-msgstr "Не найдено приложение OAuth2 для Dovecot. Веб‑почта и некоторые другие функции будут недоступны."
+msgstr ""
+"Не найдено приложение OAuth2 для Dovecot. Веб‑почта и некоторые другие "
+"функции будут недоступны."
#: core/checks.py:34
msgid ""
-"Visit : "
-"https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
-"oauth2"
-msgstr "Посетить: https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-oauth2"
+"Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"dovecot.html#dovecot-oauth2"
+msgstr ""
+"Посетить: https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"dovecot.html#dovecot-oauth2"
#: core/checks.py:41
msgid ""
"Oauth2 application for radicale has not been found. Calendar and some other "
"features won't be available."
-msgstr "Не найдено приложение OAuth2 для Radicale. Календарь и некоторые другие функции будут недоступны."
+msgstr ""
+"Не найдено приложение OAuth2 для Radicale. Календарь и некоторые другие "
+"функции будут недоступны."
#: core/checks.py:45
msgid ""
-"Visit : "
-"https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
-"oauth2"
-msgstr "Посетить : https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-oauth2"
+"Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"radicale.html#radicale-oauth2"
+msgstr ""
+"Посетить : https://modoboa.readthedocs.io/en/latest/manual_installation/"
+"radicale.html#radicale-oauth2"
#: core/constants.py:6
msgid "Simple user"
@@ -1993,7 +2112,8 @@ msgstr "Вы не можете импортировать аккаунт с ро
#: core/models.py:375
msgid "The simple user '{}' must have a valid email address"
-msgstr "Обычный пользователь '{}' должен иметь корректный адрес электронной почты."
+msgstr ""
+"Обычный пользователь '{}' должен иметь корректный адрес электронной почты."
#: core/models.py:383
msgid "username and email fields must not differ for '{}'"
@@ -2090,10 +2210,18 @@ msgid ""
msgid_plural ""
"\n"
" The following updates are available:\n"
-msgstr[0] "\n Доступно следующее обновление:\n"
-msgstr[1] "\n Доступны следующие обновления:\n"
-msgstr[2] "\n Доступны следующие обновления:\n"
-msgstr[3] "\nДоступны следующие обновления:\n"
+msgstr[0] ""
+"\n"
+" Доступно следующее обновление:\n"
+msgstr[1] ""
+"\n"
+" Доступны следующие обновления:\n"
+msgstr[2] ""
+"\n"
+" Доступны следующие обновления:\n"
+msgstr[3] ""
+"\n"
+"Доступны следующие обновления:\n"
#: core/utils.py:43
msgid "The core part of Modoboa"
@@ -2139,7 +2267,7 @@ msgid "Not resolved"
msgstr "Не определено"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Нет"
@@ -2315,7 +2443,9 @@ msgstr "Исключения фильтра папок"
msgid ""
"Use a regular expression to explicitly include folders in sync. Example: "
"^Trash$|Del"
-msgstr "Используйте регулярное выражение, чтобы явно включить папки в синхронизацию. Пример: ^Trash$|Del"
+msgstr ""
+"Используйте регулярное выражение, чтобы явно включить папки в синхронизацию. "
+"Пример: ^Trash$|Del"
#: imap_migration/app_settings.py:74
msgid "Folder Filter Inclusions"
@@ -2326,7 +2456,10 @@ msgid ""
"A comma seperated list of folders to explicitly include in sync even if "
"filtered by the Folder Filter Exclusions. Example: debian.user, "
"debian.personal "
-msgstr "Список папок, разделённых запятыми, которые нужно явно включить в синхронизацию даже при их отборе фильтром исключений папок. Пример: debian.user, debian.personal"
+msgstr ""
+"Список папок, разделённых запятыми, которые нужно явно включить в "
+"синхронизацию даже при их отборе фильтром исключений папок. Пример: "
+"debian.user, debian.personal"
#: imap_migration/apps.py:20
msgid "IMAP Migration"
@@ -2336,12 +2469,16 @@ msgstr "Миграция IMAP"
msgid ""
"Automatic domain/mailbox creation is disabled which means IMAP "
"authentication won't work."
-msgstr "Автоматическое создание доменов/почтовых ящиков отключено, поэтому аутентификация IMAP работать не будет."
+msgstr ""
+"Автоматическое создание доменов/почтовых ящиков отключено, поэтому "
+"аутентификация IMAP работать не будет."
#: imap_migration/checks.py:16
msgid ""
"Go to the online parameters panel (admin tab) and activate this feature."
-msgstr "Перейдите в панель онлайн‑параметров (вкладка администратора) и включите эту функцию."
+msgstr ""
+"Перейдите в панель онлайн‑параметров (вкладка администратора) и включите эту "
+"функцию."
#: ldapsync/lib.py:82
msgid "Failed to create LDAP account: {}"
@@ -2410,13 +2547,17 @@ msgstr "Администраторы домена"
msgid ""
"Maximum number of allowed domain administrators for a new administrator. (0 "
"to deny any creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество администраторов домена для нового администратора (0 для запрета, -1 для бесконечного количества)"
+msgstr ""
+"Максимальное количество администраторов домена для нового администратора (0 "
+"для запрета, -1 для бесконечного количества)"
#: limits/app_settings.py:41
msgid ""
"Maximum number of allowed domains for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество разрешенных доменов для нового администратора (0 для запрета на создание, -1 для снятия ограничений)"
+msgstr ""
+"Максимальное количество разрешенных доменов для нового администратора (0 для "
+"запрета на создание, -1 для снятия ограничений)"
#: limits/app_settings.py:49 limits/app_settings.py:123 limits/constants.py:22
#: limits/constants.py:76
@@ -2425,15 +2566,19 @@ msgstr "Алиасы доменов"
#: limits/app_settings.py:52
msgid ""
-"Maximum number of allowed domain aliases for a new administrator. (0 to deny"
-" any creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество разрешенных алиасов доменов для нового администратора (0 для запрета на создание, -1 для снятия ограничений)"
+"Maximum number of allowed domain aliases for a new administrator. (0 to deny "
+"any creation, -1 to allow unlimited creations)"
+msgstr ""
+"Максимальное количество разрешенных алиасов доменов для нового "
+"администратора (0 для запрета на создание, -1 для снятия ограничений)"
#: limits/app_settings.py:64
msgid ""
"Maximum number of allowed mailboxes for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество разрешенных почтовых ящиков для нового администратора (0 для запрета на создание, -1 для снятия ограничений)"
+msgstr ""
+"Максимальное количество разрешенных почтовых ящиков для нового "
+"администратора (0 для запрета на создание, -1 для снятия ограничений)"
#: limits/app_settings.py:73 limits/app_settings.py:146 limits/constants.py:39
#: limits/constants.py:92
@@ -2444,7 +2589,9 @@ msgstr "Алиасы почтового ящика"
msgid ""
"Maximum number of allowed aliases for a new administrator. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество разрешенных алиасов для нового администратора (0 для запрета на создание, -1 для снятия ограничений)"
+msgstr ""
+"Максимальное количество разрешенных алиасов для нового администратора (0 для "
+"запрета на создание, -1 для снятия ограничений)"
#: limits/app_settings.py:84 limits/constants.py:59
msgid "Quota"
@@ -2454,7 +2601,9 @@ msgstr "Квота"
msgid ""
"The quota a reseller will be allowed to share between the domains he "
"creates. (0 means no quota)"
-msgstr "Квота, которую реселлер сможет распределить между создаваемыми им доменами (0 означает отсутствие квоты)"
+msgstr ""
+"Квота, которую реселлер сможет распределить между создаваемыми им доменами "
+"(0 означает отсутствие квоты)"
#: limits/app_settings.py:98
msgid "Default per-domain limits"
@@ -2470,27 +2619,35 @@ msgstr "Включить или выключить ограничения на
#: limits/app_settings.py:114
msgid ""
-"Maximum number of allowed domain administrators for a new domain. (0 to deny"
-" any creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество администраторов домена для нового домена (0 — запрет на создание, -1 — без ограничений)"
+"Maximum number of allowed domain administrators for a new domain. (0 to deny "
+"any creation, -1 to allow unlimited creations)"
+msgstr ""
+"Максимальное количество администраторов домена для нового домена (0 — запрет "
+"на создание, -1 — без ограничений)"
#: limits/app_settings.py:126
msgid ""
"Maximum number of allowed domain aliases for a new domain. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество алиасов домена для нового домена (0 — запрет на создание, -1 — без ограничений)"
+msgstr ""
+"Максимальное количество алиасов домена для нового домена (0 — запрет на "
+"создание, -1 — без ограничений)"
#: limits/app_settings.py:138
msgid ""
"Maximum number of allowed mailboxes for a new domain. (0 to deny any "
"creation, -1 to allow unlimited creations)"
-msgstr "Максимальное количество почтовых ящиков для нового домена (0 — запрет на создание, -1 — без ограничений)"
+msgstr ""
+"Максимальное количество почтовых ящиков для нового домена (0 — запрет на "
+"создание, -1 — без ограничений)"
#: limits/app_settings.py:149
msgid ""
-"Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
-" -1 to allow unlimited creations)"
-msgstr "Максимальное количество алиасов для нового домена (0 — запрет на создание, -1 — без ограничений)"
+"Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
+"-1 to allow unlimited creations)"
+msgstr ""
+"Максимальное количество алиасов для нового домена (0 — запрет на создание, "
+"-1 — без ограничений)"
#: limits/apps.py:16
msgid "Limits"
@@ -2502,19 +2659,25 @@ msgstr "Максимальное количество создаваемых д
#: limits/constants.py:23
msgid "Maximum number of domain aliases this user can create"
-msgstr "Максимальное количество создаваемых алиасов доменов для этого пользователя"
+msgstr ""
+"Максимальное количество создаваемых алиасов доменов для этого пользователя"
#: limits/constants.py:32
msgid "Maximum number of mailboxes this user can create"
-msgstr "Максимальное количество создаваемых почтовых ящиков для этого пользователя"
+msgstr ""
+"Максимальное количество создаваемых почтовых ящиков для этого пользователя"
#: limits/constants.py:40
msgid "Maximum number of mailbox aliases this user can create"
-msgstr "Максимальное количество создаваемых алиасов почтовых ящиков для этого пользователя"
+msgstr ""
+"Максимальное количество создаваемых алиасов почтовых ящиков для этого "
+"пользователя"
#: limits/constants.py:49
msgid "Maximum number of domain administrators this user can create"
-msgstr "Максимальное количество создаваемых администраторов домена для этого пользователя"
+msgstr ""
+"Максимальное количество создаваемых администраторов домена для этого "
+"пользователя"
#: limits/constants.py:60
msgid "Quota shared between domains of this reseller"
@@ -2530,11 +2693,14 @@ msgstr "Максимальное количество почтовых ящик
#: limits/constants.py:93
msgid "Maximum number of mailbox aliases allowed for this domain."
-msgstr "Максимальное количество алиасов почтовых ящиков, разрешенных для этого домена."
+msgstr ""
+"Максимальное количество алиасов почтовых ящиков, разрешенных для этого "
+"домена."
#: limits/constants.py:102
msgid "Maximum number of domain admins allowed for this domain."
-msgstr "Максимальное количество администраторов домена, разрешенное для этого домена."
+msgstr ""
+"Максимальное количество администраторов домена, разрешенное для этого домена."
#: limits/lib.py:19
#, python-format
@@ -2703,7 +2869,10 @@ msgstr "Генерировать документ только при созда
msgid ""
"Generate a new document only when a new account is created. If set to no, a "
"new document will be created each time a password is updated."
-msgstr "Генерировать документ только после создания новой учётной записи. Если выбрано \"Нет\", документ будет обновляться каждый раз при изменении пароля пользователя."
+msgstr ""
+"Генерировать документ только после создания новой учётной записи. Если "
+"выбрано \"Нет\", документ будет обновляться каждый раз при изменении пароля "
+"пользователя."
#: pdfcredentials/app_settings.py:84
msgid "Customization options"
@@ -2741,7 +2910,9 @@ msgstr "Включить конфигурацию почтовых клиент
msgid ""
"Include required SMTP and IMAP connection information to configure a mail "
"client, a tablet or a phone"
-msgstr "Включить в документ информацию по подключению SMTP и IMAP, необходимую для настройки сторонних почтовых клиентов"
+msgstr ""
+"Включить в документ информацию по подключению SMTP и IMAP, необходимую для "
+"настройки сторонних почтовых клиентов"
#: pdfcredentials/app_settings.py:123 pdfcredentials/documents.py:133
msgid "SMTP server address"
@@ -2802,7 +2973,11 @@ msgid ""
"Dear %s, this document contains the credentials you will need\n"
"to connect to Modoboa. Learn the content and destroy\n"
"the document as soon as possible.\n"
-msgstr "\nУважаемый %s, этот документ содержит данные\nдля входа в Ваш почтовый ящик Modoboa.\nИзучите содержимое и удалите этот документ.\n"
+msgstr ""
+"\n"
+"Уважаемый %s, этот документ содержит данные\n"
+"для входа в Ваш почтовый ящик Modoboa.\n"
+"Изучите содержимое и удалите этот документ.\n"
#: pdfcredentials/documents.py:95
msgid "Web panel:"
@@ -2821,7 +2996,10 @@ msgid ""
"\n"
"Here you can view your emails anytime online, create filters or manage\n"
"your contacts.\n"
-msgstr "\nЗдесь Вы можете просматривать свою почту и\nнастраивать фильтры.\n"
+msgstr ""
+"\n"
+"Здесь Вы можете просматривать свою почту и\n"
+"настраивать фильтры.\n"
#: pdfcredentials/documents.py:126
msgid "Please change your password!"
@@ -2833,7 +3011,9 @@ msgstr "Конфигурация почтовых клиентов:"
#: pdfcredentials/documents.py:153
msgid "Use those settings for your computer, tablet or phone."
-msgstr "Используйте эти настройки для подключения из почтовой программы телефона,\nпланшета или компьютера."
+msgstr ""
+"Используйте эти настройки для подключения из почтовой программы телефона,\n"
+"планшета или компьютера."
#: pdfcredentials/handlers.py:35
msgid ""
@@ -2915,9 +3095,11 @@ msgstr "Путь к карте ключей"
#: rspamd/app_settings.py:21
msgid ""
-"Absolute path of the file which contains paths to DKIM private keys. Must be"
-" readable by _rspamd group or user."
-msgstr "Абсолютный путь к файлу, содержащему пути к закрытым ключам DKIM. Должен быть доступен для чтения группе или пользователю _rspamd."
+"Absolute path of the file which contains paths to DKIM private keys. Must be "
+"readable by _rspamd group or user."
+msgstr ""
+"Абсолютный путь к файлу, содержащему пути к закрытым ключам DKIM. Должен "
+"быть доступен для чтения группе или пользователю _rspamd."
#: rspamd/app_settings.py:30
msgid "Selector map path"
@@ -2927,7 +3109,9 @@ msgstr "Путь селектора карты"
msgid ""
"Absolute path of the file which contains names of DKIM selectors. Must be "
"readable by _rspamd group or user."
-msgstr "Абсолютный путь к файлу, содержащему имена селекторов DKIM. Должен быть доступен для чтения группе или пользователю _rspamd."
+msgstr ""
+"Абсолютный путь к файлу, содержащему имена селекторов DKIM. Должен быть "
+"доступен для чтения группе или пользователю _rspamd."
#: rspamd/app_settings.py:51
msgid "Rspamd dashboard location"
@@ -2935,10 +3119,14 @@ msgstr "Адрес панели Rspamd"
#: rspamd/app_settings.py:53
msgid ""
-"Location of the rspamd dashboard. Can either be a relative URL (eg. "
-"'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
+"Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
+"rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
"guidance on the Super-Admin dashboard."
-msgstr "Расположение панели управления rspamd. Может быть как относительным URL-адресом (например, «/rspamd»), так и полным URL-адресом (например, «https://rspamd.domain.tld/»). Используйте только для справки на панели управления суперадминистратора."
+msgstr ""
+"Расположение панели управления rspamd. Может быть как относительным URL-"
+"адресом (например, «/rspamd»), так и полным URL-адресом (например, «https://"
+"rspamd.domain.tld/»). Используйте только для справки на панели управления "
+"суперадминистратора."
#: rspamd/apps.py:18
msgid "Rspamd"
@@ -3017,7 +3205,7 @@ msgstr "равно"
msgid "is not"
msgstr "не равно"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Тема"
@@ -3118,7 +3306,9 @@ msgstr "Забыли пароль?"
msgid ""
"Your password has been set. You may go ahead and sign "
"in now."
-msgstr "Ваш пароль установлен. Вы можете войти в систему прямо сейчас."
+msgstr ""
+"Ваш пароль установлен. Вы можете войти в систему "
+"a>прямо сейчас."
#: templates/registration/password_reset_confirm.html:8
msgid "Change password"
@@ -3134,7 +3324,9 @@ msgstr "Подтвердить"
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
-msgstr "Ссылка для сброса пароля недействительна, возможно, потому, что она уже использовалась. Пожалуйста, запросите сброс нового пароля."
+msgstr ""
+"Ссылка для сброса пароля недействительна, возможно, потому, что она уже "
+"использовалась. Пожалуйста, запросите сброс нового пароля."
#: templates/registration/password_reset_confirm_code.html:22
msgid "Enter the code you've just received by SMS"
@@ -3154,7 +3346,12 @@ msgid ""
"exists with the email you entered. You should receive them shortly.
"
"If you don't receive an email, please make sure you've entered your "
"primary address, and check your spam folder.
"
-msgstr "Мы отправили вам по электронной почте инструкции по установке пароля, если существует учетная запись с указанным вами адресом электронной почты. Вы должны получить их в ближайшее время.
Если вы не получили электронное письмо, убедитесь, что вы ввели свой основной адрес, и проверьте папку со спамом.
"
+msgstr ""
+"Мы отправили вам по электронной почте инструкции по установке пароля, "
+"если существует учетная запись с указанным вами адресом электронной почты. "
+"Вы должны получить их в ближайшее время.
Если вы не получили "
+"электронное письмо, убедитесь, что вы ввели свой основной адрес, и проверьте "
+"папку со спамом.
"
#: templates/registration/password_reset_email.html:4
#: templates/registration/password_reset_email_v2.html:4
@@ -3162,14 +3359,18 @@ msgstr "Мы отправили вам по электронной почте
msgid ""
"To initiate the password reset process for your %(username)s Modoboa "
"account, click the link below:"
-msgstr "Чтобы начать процесс сброса пароля для вашей учетной записи %(username)s Modoboa, нажмите ссылку ниже:"
+msgstr ""
+"Чтобы начать процесс сброса пароля для вашей учетной записи %(username)s "
+"Modoboa, нажмите ссылку ниже:"
#: templates/registration/password_reset_email.html:10
#: templates/registration/password_reset_email_v2.html:10
msgid ""
"If clicking the link above doesn't work, please copy and paste the URL in a "
"new browser window instead."
-msgstr "Если ссылка выше не работает, скопируйте и вставьте URL-адрес в новое окно браузера."
+msgstr ""
+"Если ссылка выше не работает, скопируйте и вставьте URL-адрес в новое окно "
+"браузера."
#: templates/registration/password_reset_email.html:14
#: templates/registration/password_reset_email_v2.html:14
@@ -3198,9 +3399,12 @@ msgstr "Одноразовый код"
#: templates/registration/twofactor_code_verify.html:35
msgid ""
-"Enter the code from the two-factor app on your mobile device. If you've lost"
-" your device, you may enter one of your recovery codes."
-msgstr "Введите код из приложения двухфакторной аутентификации на вашем мобильном устройстве. Если вы потеряли устройство, вы можете ввести один из кодов восстановления."
+"Enter the code from the two-factor app on your mobile device. If you've lost "
+"your device, you may enter one of your recovery codes."
+msgstr ""
+"Введите код из приложения двухфакторной аутентификации на вашем мобильном "
+"устройстве. Если вы потеряли устройство, вы можете ввести один из кодов "
+"восстановления."
#: templates/registration/twofactor_code_verify.html:42
msgid "Verify code"
@@ -3243,19 +3447,19 @@ msgstr "Максимальный размер одного вложения (м
msgid "SMTP settings"
msgstr "Настройки SMTP"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr "Адрес вашего SMTP-сервера"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "Режим безопасного подключения"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr "Используйте безопасное соединение для доступа к SMTP-серверу"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr "Порт вашего SMTP-сервера"
@@ -3267,95 +3471,101 @@ msgstr "Требуется аутентификация"
msgid "Server needs authentication"
msgstr "Сервер требует авторизации"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Server settings"
+msgid "Scheduling settings"
+msgstr "Настройки сервера"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Отображение сообщений по умолчанию"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr "Для отображения сообщения используется режим по умолчанию"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Разрешить показ HTML ссылок"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Разрешить/Запретить показ HTML ссылок"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Максимальное количество сообщений на страницу"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Частота обновления листинга"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr "Обновлять список каждые (в секундах)"
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Ширина окна папок"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "Ширина окна списка папок"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Папки"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Корзина"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Папка для удаленных сообщений"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Папка отправленных"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Папка для копий отправленных сообщений"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Папка черновиков"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Папка для черновиков"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "Папка для спама"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "Папка, куда следует помещать спам"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr "Написать сообщение"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr "Редактор по умолчанию"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr "Редактор по умолчанию для создания сообщения"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Тест подписи"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Пользовательская подпись"
@@ -3367,43 +3577,69 @@ msgstr "Ответ сервера"
msgid "Failed to remove attachment: "
msgstr "Не удалось удалить вложение:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr "написал:"
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Дата"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr "Исходное сообщение"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Не удалось получить разделитель уровней иерархии"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Входящие"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "Черновики"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "Спам"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Отправленные"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Корзина"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Вложения слишком велики (лимит: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "Профиль пользователя"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Порог перенаправления по умолчанию"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Если приложение не указано. Используется перенаправление по умолчанию."
diff --git a/modoboa/locale/si/LC_MESSAGES/django.po b/modoboa/locale/si/LC_MESSAGES/django.po
index 8c4f91440..297b83d6d 100644
--- a/modoboa/locale/si/LC_MESSAGES/django.po
+++ b/modoboa/locale/si/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-11 18:45+0000\n"
"Last-Translator: හෙළබස, 2022\n"
"Language-Team: Sinhala (https://www.transifex.com/tonio/teams/13749/si/)\n"
@@ -44,14 +44,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -60,7 +60,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -68,13 +68,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -115,39 +114,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -239,141 +238,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -393,6 +402,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -415,8 +453,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -426,11 +464,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -482,35 +520,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -687,17 +696,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -866,11 +875,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1113,7 +1122,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1131,11 +1140,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1214,7 +1223,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1226,24 +1235,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1268,525 +1273,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2109,7 +2106,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2989,7 +2986,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3215,19 +3212,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3239,95 +3236,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3341,43 +3342,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr "LDAP ගිණුම සෑදීමට අසමත් විය: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/sk/LC_MESSAGES/django.po b/modoboa/locale/sk/LC_MESSAGES/django.po
index 99e063a04..c46b89fe5 100644
--- a/modoboa/locale/sk/LC_MESSAGES/django.po
+++ b/modoboa/locale/sk/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -42,14 +42,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -58,7 +58,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -66,13 +66,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -113,39 +112,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -237,141 +236,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -391,6 +400,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -413,8 +451,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -424,11 +462,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -480,35 +518,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -685,17 +694,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -864,11 +873,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1113,7 +1122,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1131,11 +1140,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1214,7 +1223,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1226,24 +1235,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1268,525 +1273,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2107,7 +2104,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2985,7 +2982,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3211,19 +3208,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3235,95 +3232,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3335,43 +3336,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/sk_SK/LC_MESSAGES/django.po b/modoboa/locale/sk_SK/LC_MESSAGES/django.po
index cdd60de2a..265cc60d8 100644
--- a/modoboa/locale/sk_SK/LC_MESSAGES/django.po
+++ b/modoboa/locale/sk_SK/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-11 18:45+0000\n"
"Last-Translator: R .. , 2020\n"
"Language-Team: Slovak (Slovakia) (https://www.transifex.com/tonio/teams/"
@@ -46,14 +46,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -62,7 +62,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -70,13 +70,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -117,39 +116,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -241,141 +240,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -395,6 +404,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -417,8 +455,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -428,11 +466,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -484,35 +522,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -689,17 +698,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -868,11 +877,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1117,7 +1126,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1135,11 +1144,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1218,7 +1227,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1230,24 +1239,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1272,525 +1277,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2123,7 +2120,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3003,7 +3000,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3229,19 +3226,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3253,95 +3250,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3355,43 +3356,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr "Nepodarilo sa vytvoriť účet LDAP: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/sl_SI/LC_MESSAGES/django.po b/modoboa/locale/sl_SI/LC_MESSAGES/django.po
index 38beca3fa..288e8e375 100644
--- a/modoboa/locale/sl_SI/LC_MESSAGES/django.po
+++ b/modoboa/locale/sl_SI/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2016-11-09 16:13+0000\n"
"Last-Translator: Gregor \n"
"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/tonio/modoboa/"
@@ -43,14 +43,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -59,7 +59,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -67,13 +67,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -114,39 +113,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknow migration"
msgid "Unknown status"
@@ -240,141 +239,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
#, fuzzy
#| msgid "IMAP migration"
msgid "Administration"
@@ -396,6 +405,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -418,8 +456,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -429,11 +467,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -485,35 +523,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -695,17 +704,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -892,11 +901,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1150,7 +1159,7 @@ msgstr "Selitev IMAP"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1168,11 +1177,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1255,7 +1264,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1267,24 +1276,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1313,539 +1318,531 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Naslov strežnika"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Vrata strežnika"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
#, fuzzy
#| msgid "Server address"
msgid "Secondary server address"
msgstr "Naslov strežnika"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
#, fuzzy
#| msgid "Server port"
msgid "Secondary server port"
msgstr "Vrata strežnika"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Uporabi zavarovano povezavo"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
#, fuzzy
#| msgid "Use a secured connection to access IMAP server"
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Za dostop do IMAP strežnika, uporabite zavarovano povezavo"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
#, fuzzy
#| msgid "Connection settings"
msgid "LDAP authentication settings"
msgstr "Nastavitve povezave"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
#, fuzzy
#| msgid "Connection settings"
msgid "LDAP synchronization settings"
msgstr "Nastavitve povezave"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Server port"
msgid "Secondary theme color"
msgstr "Vrata strežnika"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
#, fuzzy
#| msgid "Server address"
msgid "Sender address"
msgstr "Naslov strežnika"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2178,7 +2175,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3110,7 +3107,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3342,25 +3339,25 @@ msgstr ""
msgid "SMTP settings"
msgstr "IMAP nastavitve brez povezave"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
#, fuzzy
#| msgid "Address of your IMAP server"
msgid "Address of your SMTP server"
msgstr "Naslov vašega IMAP strežnika"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Uporabi zavarovano povezavo"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use a secured connection to access IMAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "Za dostop do IMAP strežnika, uporabite zavarovano povezavo"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
#, fuzzy
#| msgid "Listening port of your IMAP server"
msgid "Listening port of your SMTP server"
@@ -3378,95 +3375,101 @@ msgstr "Nastavitve povezave"
msgid "Server needs authentication"
msgstr "Nastavitve povezave"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Connection settings"
+msgid "Scheduling settings"
+msgstr "Nastavitve povezave"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3480,43 +3483,59 @@ msgstr "Naslov strežnika"
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/sv/LC_MESSAGES/django.po b/modoboa/locale/sv/LC_MESSAGES/django.po
index 5ebe583a0..ecef6f9c1 100644
--- a/modoboa/locale/sv/LC_MESSAGES/django.po
+++ b/modoboa/locale/sv/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2011-07-01 08:15+0000\n"
"Last-Translator: Olle Gustafsson , "
"2013,2015-2018,2020,2022-2023,2025\n"
@@ -48,14 +48,14 @@ msgid "Cannot be greater than domain quota"
msgstr "Kan inte vara större än domänkvoten"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "Åtkomst nekad."
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Detta fält är obligatoriskt"
@@ -66,7 +66,7 @@ msgstr ""
"Lista över administrerade domäner (endast återförsäljare och "
"domänadministratörer)."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "Inte tillåtet för denna roll."
@@ -74,13 +74,12 @@ msgstr "Inte tillåtet för denna roll."
msgid "Must be equal to mailbox full_address"
msgstr "Måste vara lika med postlådans full_adress"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "Detta fält är obligatoriskt."
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "Lokal domän {} finns inte"
@@ -121,40 +120,40 @@ msgstr "Du kan inte definiera en obegränsad kvot."
msgid "User '%s' already exists"
msgstr "Användare '%s' finns redan"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "Måste vara ett positivt heltal"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl hittades ej, säkerställ att det är installerat."
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "Katalog hittades ej."
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr "Detta fält tillåter bara giltiga IP-adresser (eller nätverk)"
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr "Inaktivera imap-migrering innan du inaktiverar det här alternativet."
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "Definiera minst ett auktoriserat nätverk/adress"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
"Den vänstra delen av en e-postadress kan inte vara längre än 64 tecken."
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr "En brevlåda krävs för att skapa alias."
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr "Okänd status"
@@ -252,19 +251,29 @@ msgstr "Aktivera DNSBL-kontroller"
msgid "Check every domain against major DNSBL providers"
msgstr "Kontrollera varje domän mot stora DNSBL-leverantörer"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr "Anpassad DNS-server"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr "Använd en anpassad DNS-server istället för lokal serverkonfiguration"
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "DKIM-nycklar lagringskatalog"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -274,19 +283,19 @@ msgstr ""
"Se till att den här katalogen tillhör root-användaren och inte kan läsas av "
"omvärlden."
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "Standard DKIM-nyckellängd"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "Standardlängd i bitar för nyligen genererade DKIM-nycklar."
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "Standard domänkvota"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
@@ -294,11 +303,11 @@ msgstr ""
"Standardkvot (i MB) tillämpas på nyskapade domäner utan värde angivet. Ett "
"värde på 0 betyder ingen kvot."
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr "Standardgräns för domänsändning"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
@@ -306,16 +315,16 @@ msgstr ""
"Antal meddelanden som nyskapade domäner tillåts skicka per dag. Lämna tomt "
"utan gräns."
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "Brevlådor"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "Hantera brevlådor på filsystemet"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
@@ -323,11 +332,11 @@ msgstr ""
"Byt namn på eller ta bort postlådor i filsystemet när de byter namn eller "
"tas bort inom Modoboa"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "Standard brevlådekvota"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
@@ -335,11 +344,11 @@ msgstr ""
"Standardpostlådekvot (i MB) tillämpas på nyskapade domäner utan värde "
"angivet. Ett värde på 0 betyder ingen kvot."
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr "Standardgräns för postlådans sändning"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
@@ -347,61 +356,61 @@ msgstr ""
"Antal meddelanden som nyskapade brevlådor tillåts skicka per dag. Lämna tomt "
"utan gräns."
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "Automatisk kontoradering"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "När en brevlåda tas bort, ta också bort det associerade kontot"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "Automatisk domän-/brevlådeskapande"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "Skapa en domän och en postlåda när ett konto skapas automatiskt."
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "Skapa ett alias när en postlåda döps om"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr "Skapa ett alias med den gamla adressen när en postlåda byts namn."
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "alias"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Administration"
@@ -421,6 +430,35 @@ msgstr "Öppnad"
msgid "Closed"
msgstr "Stängd"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr "MX {} listad av DNSBL-leverantör {}"
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr "Domänen har ingen MX-post"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "Domänen {} har ingen MX-post"
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr "Ogiltig MX-post: {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "MX-posten för domänen {0} är ogiltig: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] MX-problem för domän {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] DNSBL-problem för domänen {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "domän alias"
@@ -443,8 +481,8 @@ msgstr "Du får inte importera domäner"
msgid "You are not allowed to import domain aliases."
msgstr "Du får inte importera domänalias."
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr "Ingen DNS-post hittades för %s"
@@ -454,11 +492,11 @@ msgstr "Ingen DNS-post hittades för %s"
msgid "No %(type)s record for %(name)s"
msgstr "Inga %(type)s poster för %(name)s"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "Inga fungerande namnservrar hittades"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "DNS uppslag timeout, det går inte att fråga %s för tillfället"
@@ -512,35 +550,6 @@ msgstr "Misslyckades med att generera DKIM privat nyckel"
msgid "Failed to generate DKIM public key"
msgstr "Det gick inte att generera offentlig DKIM-nyckel"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr "MX {} listad av DNSBL-leverantör {}"
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr "Domänen har ingen MX-post"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "Domänen {} har ingen MX-post"
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr "Ogiltig MX-post: {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "MX-posten för domänen {0} är ogiltig: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] MX-problem för domän {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] DNSBL-problem för domänen {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "Domän hittades ej."
@@ -726,17 +735,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr "Modoboa upptäckte att domänen %(domain)s saknar en giltig MX-post:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "Ingen MX-post för %s"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "Ogiltigt IP-adressformat för %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr "Ingen AAAA-post för %s"
@@ -947,11 +956,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "Visning"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr "Antalet visade e-postmeddelanden per sida"
@@ -1225,7 +1234,7 @@ msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
"Tillåt domänadministratörer att hantera användarkalendrar (läsa och skriva)"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Övrigt"
@@ -1244,11 +1253,11 @@ msgstr ""
msgid "Calendars"
msgstr "Kalendrar"
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr "Server location is not set, please fix it."
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr "Den uppladdade filen är för stor (max: {} byte)"
@@ -1331,7 +1340,7 @@ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
"Misslyckades TFA-inställningar redigeringsförsök från '%s' som användare '%s'"
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr "Ogiltigt lösenordd"
@@ -1343,24 +1352,20 @@ msgstr "2FA är nu aktiverat"
msgid "Local"
msgstr "Lokal"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Användarprofil"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Ogiltig syntax"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Ogiltigt antal omgångar"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Denna kod är ogiltig"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Använd följande kod för att återställa ditt Modoboa lösenord: {}"
@@ -1387,35 +1392,35 @@ msgid "Calendar"
msgstr "Kalender"
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr "Webmail"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Autentisering"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Autentiseringstyp"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Autentiserings backend"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Standard lösenords schema"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Krypteringsschema för brevlåde lösenord"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Antal omgångar"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1423,46 +1428,46 @@ msgstr ""
"Antal omgångar att använda (används endast av sha256crypt och sha512crypt). "
"Måste vara mellan 1000 och 999999999."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Uppdatera lösenordsschema vid inloggning"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
"Uppdatera användarlösenord vid inloggning för att använda standard schema"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Standardlösenord"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Standardlösenord för automatiskt skapade konton."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Slumpmässig längd på lösenord"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Längd på slumpmässigt genererat lösenord"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Längd på slumpmässigt genererat lösenord"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Uppdatera lösenords service URL"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1472,107 +1477,107 @@ msgstr ""
"Det gäller endast icke-lokala användare, dvs. de som skapas automatiskt "
"efter en lyckad extern autentisering (LDAP, SMTP)."
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Meddelande om återställning av lösenord"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
"Ett tillfälligt meddelande som kommer att visas på sidan för återställning "
"av lösenord."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "Aktivera lösenordsåterställning via SMS"
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Aktivera återställning av lösenord via SMS för användare som fyllt i ett "
"telefonnummer."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS provider"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Välj en leverantör för att skicka SMS för lösenordsåterställning"
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr "LDAP"
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Server adress"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "IP adressen eller DNS namn för LDAP server"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Server port"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "TCP port som används av LDAP servern"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "Aktivera sekundär server (reserv)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Aktivera en sekundär LDAP-server som kommer att användas om den primära "
"misslyckas"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "Sekundär serveradress"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "IP-adressen eller DNS-namnet på den sekundära LDAP-servern"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "Sekundär serverport"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "TCP-portnumret som används av LDAP sekundärserver"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Använd en säker anslutning"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "Använd en SSL / STARTTLS-anslutning för att komma åt LDAP-servern"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Berätta om LDAP-servern är en Active Directory"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Administratörsgrupper"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1580,47 +1585,47 @@ msgstr ""
"Användare av dessa LDAP Posix grupper kommer skapas som "
"domänadministratörer. Använd ';' för att separera grupper."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Grupptyp"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Välj LDAP grupptyp att använda med din katalog"
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Grupper sökbas"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Det unika namnet för sökbasen som används för att hitta grupper"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Lösenordsattribut"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Attribut som används för att lagra användarlösenord"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP autentiseringsinställningar"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Autentiseringsmetod"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Välj autentiseringsmetod att använda"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Bind DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1628,28 +1633,28 @@ msgstr ""
"Det unika namnet för att använda vid bindningar till LDAP-servern. Lämna "
"tomt för en anonym bindning"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Bind lösenord"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"Lösenordet ska användas vid bindning till LDAP-servern (med \"Bind DN ')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Användare sökbas"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Det unika namnet för sökbasen som används för att hitta användare"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Sökfilter"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1657,11 +1662,11 @@ msgstr ""
"En valfri filtersträng (t.ex. \"(objectClass = personer) '). För att vara "
"giltigt måste det omges av parenteser."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Anvädar DN mall"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1670,36 +1675,36 @@ msgstr ""
"Mallen som används för att konstruera en användares DN. Den bör innehålla en "
"platshållare (dvs. %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP synkroniseringsinställningar"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "Aktivera export till LDAP"
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
"Aktivera automatisk synkronisering mellan lokal databas och LDAP-katalog"
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Ta bort fjärran LDAP-konto när lokalt konto raderas"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
"Radera LDAP-fjärrkonto när det lokala kontot raderas, annars inaktiveras det."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "DN-mall för kontot"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1708,51 +1713,51 @@ msgstr ""
"Mallen som används för att skapa ett kontos DN. Den ska innehålla en "
"platshållare (ex.%(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "Aktiver import från LDAP"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr "Aktivera kontosynkronisering från LDAP-katalog till lokal databas"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Attribut för användarnamn"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Namnet på LDAP-attributet där användarnamnet finns."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Aktivera Dovecot LDAP-synkronisering"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr "LDAP-autentiseringsinställningar tillämpas på Dovecot-konfigurationen."
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP-konfigurationsfil"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
"Plats för konfigurationsfilen som innehåller Dovecot LDAP-inställningar."
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Kontrollpanel"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom message"
msgid "Custom welcome message"
msgstr "Anpassat meddelande"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
@@ -1761,142 +1766,142 @@ msgstr ""
"Ett tillfälligt meddelande som kommer att visas på sidan för återställning "
"av lösenord."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Användardefinierat RSS-flöde"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
"Visa användardefinierat RSS-flöde för återförsäljare och domänadministratörer"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr ""
"Visa användardefinierat RSS-flöde för återförsäljare och domänadministratörer"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr ""
"Visa användardefinierat RSS-flöde för återförsäljare och domänadministratörer"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Dölj egenskaper widget"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Dölj egenskaper widget för återförsäljare och domänadministratörer"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "Sekundär e-post"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Notifikationer"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Avsändaradress"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "E-postadress som används till att skicka notifikationer."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Publikt API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "Aktivera kommunikation"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "Kontrollera automatiskt om en nyare version finns"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Kontrollera nya versioner"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Skicka ett mejl när nya versioner hittas"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
"Skicka ett e-postmeddelande för att meddela administratörer om nya versioner"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Mottagare"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Mottagare av e-postmeddelanden om nya versioner."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "Skicka statistik"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"Skicka statistik för Modoboas publika API (räknare och använda tillägg)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr "Aktivera spårning av inaktiva konton"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
@@ -1904,11 +1909,11 @@ msgstr ""
"Tillåt administratören att ställa in en tröskel (i dagar) över vilken ett "
"konto anses inaktivt om användaren inte har loggat in"
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Gräns för inaktiva konton"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1916,46 +1921,38 @@ msgstr ""
"Ett konto som inte har loggat in innan denna gräns (antal dagar) kommer "
"anses som inaktivt"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "Toppnotifikationer kontrollintervall"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "Intervall mellan två toppnotifikationskontroller (i sekunder)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maximal ålder för loggpost"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Maximal ålder i dagar för en logg post"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Artiklar per sida"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Antal poster som visas per sida"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Standard topp omdirigering"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr "Standard omdirigering när ingen applikation angetts"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2284,7 +2281,7 @@ msgid "Not resolved"
msgstr "Ej löst"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "Ingen"
@@ -3220,7 +3217,7 @@ msgstr "är"
msgid "is not"
msgstr "är inte"
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Ämne"
@@ -3462,19 +3459,19 @@ msgstr "Maximal bilagastorlek i byte (eller KB, MB, GB om det anges)"
msgid "SMTP settings"
msgstr "SMTP-inställningar"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr "Adressen till din SMTP-server"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr "Säkert anslutningsläge"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr "Använd en säker anslutning för att komma åt SMTP-servern"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr "Lyssningsport för din SMTP-server"
@@ -3486,95 +3483,101 @@ msgstr "Autentisering krävs"
msgid "Server needs authentication"
msgstr "Servern behöver autentisering"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "Server settings"
+msgid "Scheduling settings"
+msgstr "Serverinställningar"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "Standardläge för meddelandevisning"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr "Standardläget som används när ett meddelande visas"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "Aktivera visning av HTML-länkar"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "Aktivera/inaktivera HTML-länkvisning"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "Ställer in det maximala antalet meddelanden som visas på en sida"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "Listans uppdateringsfrekvens"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr "Automatisk uppdateringsfrekvens (i sekunder)"
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "Mappbehållarens bredd"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "Bredden på mapplistans behållare"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr "Mappar"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr "Papperskorgen mapp"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr "Mapp dit raderade meddelanden hamnar"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr "Skickat mapp"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "Katalog där en kopia av skickade meddelanden hamnar"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr "Mapp för Utkast"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "Katalog där utkast sparas"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr "Skräpmapp"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr "Mapp dit skräpmeddelanden ska gå"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr "Skriva meddelanden"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr "Standard redigerare"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr "Standardredigeraren som ska användas när du skriver ett meddelande"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "Signaturtext"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "Användardefinierad e-postsignatur"
@@ -3588,49 +3591,74 @@ msgstr "Server adress"
msgid "Failed to remove attachment: "
msgstr "Det gick inte att ta bort bilagan:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Datum"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "All messages"
msgid "Original message"
msgstr "Alla meddelanden"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "Misslyckades med att hämta hierarkinavgränsaren"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "Inkorg"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr "Utkast"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "Skräp"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "Skickat"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "Papperskorg"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "Bilagan är för stor (gräns: %s)"
+#~ msgid "User profile"
+#~ msgstr "Användarprofil"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Standard topp omdirigering"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr "Standard omdirigering när ingen applikation angetts"
+
#~ msgid "No alarm ID provided"
#~ msgstr "Inget larm-ID angett"
diff --git a/modoboa/locale/tr/LC_MESSAGES/django.po b/modoboa/locale/tr/LC_MESSAGES/django.po
index 82b21dd61..88d8d2fda 100644
--- a/modoboa/locale/tr/LC_MESSAGES/django.po
+++ b/modoboa/locale/tr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2021-12-24 20:48+0000\n"
"Last-Translator: Mustafa OYMAK\n"
"Language-Team: Turkish (http://www.transifex.com/tonio/modoboa/language/"
@@ -44,16 +44,16 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
#, fuzzy
#| msgid "Permission denied"
msgid "Permission denied."
msgstr "İzin reddedildi"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Bu alan gerekli"
@@ -64,7 +64,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "Bayiler ve alan adı yöneticileri için Özellikler Aracı'nı gizle."
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -72,15 +72,14 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
#, fuzzy
#| msgid "This field is required"
msgid "This field is required."
msgstr "Bu alan gerekli"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -123,39 +122,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -263,145 +262,155 @@ msgstr "API erişimini etkinleştir"
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
#, fuzzy
#| msgid "Custom RSS feed"
msgid "Custom DNS server"
msgstr "Özel RSS beslemesi"
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr ""
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr ""
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Automatic account removal"
msgstr "Etkin olmayan hesap eşiği"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
#, fuzzy
#| msgid "Administrator groups"
msgid "Administration"
@@ -425,6 +434,37 @@ msgstr ""
msgid "Closed"
msgstr "Kapat"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "Invalid code"
+msgid "Invalid MX record: {}"
+msgstr "Geçersiz kod"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -447,8 +487,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -458,11 +498,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -517,37 +557,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "Modoboa genel API'si ile iletişimi etkinleştir"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "Invalid code"
-msgid "Invalid MX record: {}"
-msgstr "Geçersiz kod"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -742,17 +751,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "New recovery codes"
msgid "No AAAA record for %s"
@@ -954,11 +963,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
#, fuzzy
#| msgid "Number of displayed items per page"
msgid "Number of displayed emails per page"
@@ -1231,7 +1240,7 @@ msgstr "Alan adı Yöneticisi"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "Bu yöneticinin kullanıcı posta kutularına erişimine izin ver"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Çeşitli"
@@ -1249,11 +1258,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1338,7 +1347,7 @@ msgstr "2FA zaten etkin"
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1352,24 +1361,20 @@ msgstr "2FA etkin değil"
msgid "Local"
msgstr "Yerel"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Kullanıcı profili"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "Geçersiz sözdizimi"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr "Geçersiz tur sayısı"
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr "Bu kod geçersiz"
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr "Modoboa şifrenizi kurtarmak için lütfen aşağıdaki kodu kullanın: {}"
@@ -1398,35 +1403,35 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Kimlik Doğrulama"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Kimlik Doğrulama Türü"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "Kimlik doğrulama için kullanılan arka uç."
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Varsayılan parola şeması."
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Posta kutusunu şifrelemek için kullanılan şema"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "Çevrimler"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1434,45 +1439,45 @@ msgstr ""
"Kullanılacak tur sayısı (Sadece sha256crypt ve sha512crypt kullanılır). 1000 "
"ve 999999999 arasında olmalıdır."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr "Parola şemasını girişte güncelle"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr "Kullanıcı parolasını varsayılan parola şemasına göre girişte güncelle"
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Varsayılan parola"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Otomatik oluşturulan hesaplar için varsayılan parola."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Rastgele parola uzunluğu"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "Rastgele oluşturulmuş parolaların uzunluğu."
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "Rastgele oluşturulmuş parolaların uzunluğu."
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr "Parola servisi URL sayfasını güncelle"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
@@ -1483,105 +1488,105 @@ msgstr ""
"kimlik doğrulamasından sonra otomatik olarak oluşturulanlar gibi. (LDAP, "
"SMTP)"
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr "Parola kurtarma duyurusu"
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr "Parola sıfırlandığında gösterilecek geçici bir mesaj."
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr "SMS ile parola kurtarmayı etkinleştir."
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
"Telefon numarasını belirtmiş kullanıcılar için SMS ile parola kurtarmayı "
"etkinleştir."
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr "SMS sağlayıcı"
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr "Kurtarma parolası göndermek için bir SMS sağlayıcı seçin. "
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Sunucu adresi"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "LDAP sunucusunun IP adresi ya da DNS adı"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Sunucu portu"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "LDAP sunucusunun kullandığı TCP port numarası"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr "İkincil sunucuyu etkinleştir (geri çekil)"
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
"Birincil sunucu başarısız olursa kullanılacak ikincil bir LDAP sunucusunu "
"etkinleştirin"
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr "İkincil sunucu adresi"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "İkincil LDAP sunucusunun IP adresi ya da DNS adı"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr "İkincil sunucu portu"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr "İkincil LDAP sunucusunun kullandığı TCP port numarası"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Güvenli bir bağlantı kullanın"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "LDAP sunucusuna erişmek için bir SSL/STARTTLS bağlantısı kullanın"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "Eğer LDAP sunucu bir Active Directory sunucusu ise belirtin"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Yönetici grupları"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
@@ -1589,47 +1594,47 @@ msgstr ""
"Bu LDAP Posix gruplarının üyeleri, etki alanı yöneticileri olarak "
"oluşturulacaktır. Grupları ayırmak için ';' karakterini kullanın."
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Grup türü"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "Dizininizle kullanılacak LDAP grubu türü."
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "Grup arama tabanı."
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "Grupları bulmak için kullanılan arama tabanının ayırt edici adı"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Atanan parola"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Kullanıcı parolalarını saklamak için kullanılacak nitelik"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr "LDAP kimilk doğrulama ayarları"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Kimlik doğrulama metodu"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Kullanılacak kimlik doğrulama yöntemini seçin"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "DN bağla"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
@@ -1637,28 +1642,28 @@ msgstr ""
"LDAP sunucusuna bağlanırken kullanılacak isim. Anonim bir bağlantı için boş "
"bırakın"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Parolayı bağla."
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
"LDAP sunucusuna bağlanırken kullanılacak parola (Bağlanılacak 'DN' ile)"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "Kullanıcı arama tabanı"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "Kullanıcıları bulmak için kullanılan arama tabanının adı"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Arama filtresi"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
@@ -1666,11 +1671,11 @@ msgstr ""
"İsteğe bağlı bir filtre dizisi (Ör. '(objectClass=person)' gibi). Geçerli "
"olması için parantez içine alınması gereklidir."
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "Kullanıcı DN şablonu."
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
@@ -1679,24 +1684,24 @@ msgstr ""
"Bir kullanıcının DN'i oluşturmak için kullanılan şablon. Bir yer tutucu "
"içermelidir (Ör: %(user)s gibi)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr "LDAP eşitleme ayarları"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr "LDAP'a dışa aktarmayı etkinleştir."
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr "Yerel veritabanı ve LDAP arasında otomatik eşitlemeyi etkinleştir."
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr "Yerel hesap silindiğinde uzak LDAP hesabını sil"
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
@@ -1704,11 +1709,11 @@ msgstr ""
"Yerel hesap silindiğinde uzak LDAP hesabını silin, aksi halde devre dışı "
"bırakılır."
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr "Hesap DN şablonu."
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
@@ -1717,202 +1722,202 @@ msgstr ""
"Bir hesabın DN'ini oluşturmak için kullanılan şablon. Bir yer tutucu "
"içermelidir (Ör: %(user)s gibi)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr "LDAP'tan içe aktarmayı etkinleştir"
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr "LDAP dizininden yerel veritabanına hesap eşitlemeyi etkinleştir"
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr "Atanan kullanıcı adı"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr "Kullanıcı adının bulunabileceği atfedilen LDAP adı."
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr "Dovecot LDAP eşitlemesini etkinleştir"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr "LDAP kimik doğrulama ayarları Dovecot yapılandırmasına uygulanacak"
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr "Dovecot LDAP yapılandırma dosyası"
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr "Dovecot LDAP ayarlarını içeren yapılandırma dosyasının konumu"
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "Gösterge Paneli"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "Custom RSS feed"
msgid "Custom welcome message"
msgstr "Özel RSS beslemesi"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
#, fuzzy
#| msgid ""
#| "A temporary message that will be displayed on the reset password page."
msgid "A welcome message that will be displayed instead the default one"
msgstr "Parola sıfırlandığında gösterilecek geçici bir mesaj."
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "Özel RSS beslemesi"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr "Bayilere ve alan adı yöneticilerine özel RSS beslemesi görüntüleyin"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr "Bayilere ve alan adı yöneticilerine özel RSS beslemesi görüntüleyin"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr "Bayilere ve alan adı yöneticilerine özel RSS beslemesi görüntüleyin"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "Özellikler Aracı'nı gizle"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "Bayiler ve alan adı yöneticileri için Özellikler Aracı'nı gizle."
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "İkincil e-posta"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Bildirimler"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Gönderici adresi"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Bildirimlerin gönderileceği e-posta adresi."
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Genel API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "İletişimi etkinleştir"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
"Daha yeni bir sürümün mevcut olup olmadığını otomatik olarak kontrol eder"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Yeni sürümleri kontrol et"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr "Yeni sürümler bulunduğunda bir e-posta gönder"
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr "Yeni sürümler hakkında yöneticilere bir bilgilendirme iletisi gönder"
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr "Alıcı"
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr "Yeni sürüm bildirim iletilerinin alıcısı."
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "İstatistikleri gönder"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
"İstatistikleri Modoboa genel API'sine gönderin (sayaçlar ve kullanılan "
"uzantılar)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "Etkin olmayan hesap eşiği"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "Etkin olmayan hesap eşiği"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
@@ -1920,47 +1925,38 @@ msgstr ""
"Son giriş tarihi bu eşikten (gün olarak) daha yüksek olan bir hesap etkin "
"değil olarak kabul edilecektir."
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "En önemli bildirimler kontrol aralığı"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "İki üst bildirim kontrolü arasındaki aralık (saniye cinsinden)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maksimum günlük kaydı yaşı"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr "Günlük kaydının gün cinsinden maksimum yaşı"
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Sayfa başına öğe"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr "Sayfa başına görüntülenen öğe sayısı"
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr "Varsayılan üst yönlendirme"
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-"Hiçbir uygulama belirtilmediğinde kullanılan varsayılan yeniden yönlendirme"
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2299,7 +2295,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3259,7 +3255,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Konu"
@@ -3518,23 +3514,23 @@ msgstr ""
msgid "SMTP settings"
msgstr "LDAP ayarları"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Güvenli bir bağlantı kullanın"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "LDAP sunucusuna erişmek için bir SSL/STARTTLS bağlantısı kullanın"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3549,105 +3545,111 @@ msgstr "Kimlik doğrulama metodu"
msgid "Server needs authentication"
msgstr "LDAP kimilk doğrulama ayarları"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "LDAP ayarları"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default mode used when displaying a message"
msgstr ""
"Hiçbir uygulama belirtilmediğinde kullanılan varsayılan yeniden yönlendirme"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "Message"
msgid "Composing messages"
msgstr "İleti"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default top redirection"
msgid "Default editor"
msgstr "Varsayılan üst yönlendirme"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
#, fuzzy
#| msgid "The default redirection used when no application is specified"
msgid "The default editor to use when composing a message"
msgstr ""
"Hiçbir uygulama belirtilmediğinde kullanılan varsayılan yeniden yönlendirme"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3663,45 +3665,72 @@ msgstr "Sunucu adresi"
msgid "Failed to remove attachment: "
msgstr "{} Parola güncelleme başarısız"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "Tarih"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "Message"
msgid "Original message"
msgstr "İleti"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Kullanıcı profili"
+
+#~ msgid "Default top redirection"
+#~ msgstr "Varsayılan üst yönlendirme"
+
+#~ msgid "The default redirection used when no application is specified"
+#~ msgstr ""
+#~ "Hiçbir uygulama belirtilmediğinde kullanılan varsayılan yeniden "
+#~ "yönlendirme"
diff --git a/modoboa/locale/tr_TR/LC_MESSAGES/django.po b/modoboa/locale/tr_TR/LC_MESSAGES/django.po
index 37b291f61..686c8ec15 100644
--- a/modoboa/locale/tr_TR/LC_MESSAGES/django.po
+++ b/modoboa/locale/tr_TR/LC_MESSAGES/django.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2018-11-22 19:31+0000\n"
"Last-Translator: Ediz Duman \n"
"Language-Team: Turkish (Turkey) (http://www.transifex.com/tonio/modoboa/"
@@ -46,14 +46,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "Bu alan gereklidir"
@@ -62,7 +62,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -70,13 +70,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -117,39 +116,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -241,141 +240,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "Yönetim"
@@ -395,6 +404,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -417,8 +455,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -428,11 +466,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -484,35 +522,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -689,17 +698,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -894,11 +903,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1161,7 +1170,7 @@ msgstr "Yönetim"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "Çeşitli"
@@ -1179,11 +1188,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1268,7 +1277,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1282,24 +1291,20 @@ msgstr ""
msgid "Local"
msgstr "Yerel"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "Kullanıcı profili"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1326,547 +1331,539 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "E-posta"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "Yetkilendirme"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "Yetkilendirme türü"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "Varsayılan parola şeması"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "Mailbox parolalarını şifrelemek için kullanılacak şema"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
#, fuzzy
#| msgid "Update password scheme"
msgid "Update password scheme at login"
msgstr "Şifre şemasını güncelle"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "Varsayılan parola"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "Otomatik oluşturulan hesaplar için varsayılan parola."
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "Rastgele şifre uzunluğu"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
#, fuzzy
#| msgid "Update password scheme"
msgid "Update password service URL"
msgstr "Şifre şemasını güncelle"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "Sunucu adresi"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "LDAP sunucusunun adresi (DNS) ya da ip adresi"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "Sunucu portu"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "LDAP sunucu tarafından kullanılan TCP portu"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
#, fuzzy
#| msgid "Server address"
msgid "Secondary server address"
msgstr "Sunucu adresi"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
#, fuzzy
#| msgid "The IP address or the DNS name of the LDAP server"
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "LDAP sunucusunun adresi (DNS) ya da ip adresi"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
#, fuzzy
#| msgid "Server port"
msgid "Secondary server port"
msgstr "Sunucu portu"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
#, fuzzy
#| msgid "The TCP port number used by the LDAP server"
msgid "The TCP port number used by the LDAP secondary server"
msgstr "LDAP sunucu tarafından kullanılan TCP portu"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "Güvenli bir bağlantı kullan"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "LDAP sunucu bir Active Directory ise"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "Yönetici grupları"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "Grup türü"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "Parola özelliği"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "Kullanıcı parolalarını saklamak için kullanılacak özellik"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
#, fuzzy
#| msgid "Authentication method"
msgid "LDAP authentication settings"
msgstr "Yetkilendirme metodu"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "Yetkilendirme metodu"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "Kullanılacak yetkilendirme metodunu seçin"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "Arama filtresi"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
#, fuzzy
#| msgid "LDAP settings"
msgid "LDAP synchronization settings"
msgstr "LDAP ayarları"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
#, fuzzy
#| msgid "Password attribute"
msgid "Username attribute"
msgstr "Parola özelliği"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "gösterge Paneli"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Server port"
msgid "Secondary theme color"
msgstr "Sunucu portu"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "Bildirimler"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "Gönderici adresi"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "Bildirimlerin gönderileceği email adresi"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "Genel API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "Yeni versiyonları kontrol et"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "İstatistikleri gönder"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "Maksimum günlük kayıt yaşı"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "Sayfa başına öğe"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2197,7 +2194,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3109,7 +3106,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "Konu"
@@ -3349,23 +3346,23 @@ msgstr ""
msgid "SMTP settings"
msgstr "LDAP ayarları"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "Güvenli bir bağlantı kullan"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use a secured connection"
msgid "Use a secured connection to access SMTP server"
msgstr "Güvenli bir bağlantı kullan"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3381,97 +3378,103 @@ msgstr "Yetkilendirme metodu"
msgid "Server needs authentication"
msgstr "Yetkilendirme metodu"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "LDAP ayarları"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default password"
msgid "Default editor"
msgstr "Varsayılan parola"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3485,43 +3488,62 @@ msgstr "Sunucu adresi"
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
+
+#~ msgid "User profile"
+#~ msgstr "Kullanıcı profili"
diff --git a/modoboa/locale/uk/LC_MESSAGES/django.po b/modoboa/locale/uk/LC_MESSAGES/django.po
index bc02f2ef7..aec4aac94 100644
--- a/modoboa/locale/uk/LC_MESSAGES/django.po
+++ b/modoboa/locale/uk/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-11 18:45+0000\n"
"Last-Translator: Taras Havryliuk , 2021\n"
"Language-Team: Ukrainian (https://www.transifex.com/tonio/teams/13749/uk/)\n"
@@ -47,14 +47,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -63,7 +63,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -71,13 +71,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -118,39 +117,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -242,141 +241,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -396,6 +405,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -418,8 +456,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -429,11 +467,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -485,35 +523,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -690,17 +699,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -869,11 +878,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1118,7 +1127,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1136,11 +1145,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1219,7 +1228,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1231,24 +1240,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1273,525 +1278,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2124,7 +2121,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -3004,7 +3001,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3230,19 +3227,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3254,95 +3251,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3356,43 +3357,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr "Не вдалося створити обліковий запис LDAP: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/zh/LC_MESSAGES/django.po b/modoboa/locale/zh/LC_MESSAGES/django.po
index bf3a72aa2..f7c95689e 100644
--- a/modoboa/locale/zh/LC_MESSAGES/django.po
+++ b/modoboa/locale/zh/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -41,14 +41,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -57,7 +57,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -65,13 +65,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -112,39 +111,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -236,141 +235,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -390,6 +399,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -412,8 +450,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -423,11 +461,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -479,35 +517,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -684,17 +693,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -863,11 +872,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1109,7 +1118,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1127,11 +1136,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1210,7 +1219,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1222,24 +1231,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1264,525 +1269,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2103,7 +2100,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2981,7 +2978,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3207,19 +3204,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3231,95 +3228,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3331,43 +3332,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr ""
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/zh_CN/LC_MESSAGES/django.po b/modoboa/locale/zh_CN/LC_MESSAGES/django.po
index 51434417e..082f9735b 100644
--- a/modoboa/locale/zh_CN/LC_MESSAGES/django.po
+++ b/modoboa/locale/zh_CN/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2020-05-11 18:45+0000\n"
"Last-Translator: 李 正 <364109980@qq.com>, 2021\n"
"Language-Team: Chinese (China) (https://www.transifex.com/tonio/teams/13749/"
@@ -45,14 +45,14 @@ msgid "Cannot be greater than domain quota"
msgstr ""
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr ""
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr ""
@@ -61,7 +61,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr ""
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr ""
@@ -69,13 +69,12 @@ msgstr ""
msgid "Must be equal to mailbox full_address"
msgstr ""
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr ""
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr ""
@@ -116,39 +115,39 @@ msgstr ""
msgid "User '%s' already exists"
msgstr ""
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr ""
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr ""
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr ""
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr ""
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
msgid "A mailbox is required to create aliases."
msgstr ""
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
msgid "Unknown status"
msgstr ""
@@ -240,141 +239,151 @@ msgstr ""
msgid "Check every domain against major DNSBL providers"
msgstr ""
-#: admin/app_settings.py:116
-msgid "Custom DNS server"
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
msgstr ""
-#: admin/app_settings.py:118
-msgid "Use a custom DNS server instead of local server configuration"
-msgstr ""
-
-#: admin/app_settings.py:126
-msgid "DKIM keys storage directory"
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
msgstr ""
#: admin/app_settings.py:128
+msgid "Custom DNS server"
+msgstr ""
+
+#: admin/app_settings.py:130
+msgid "Use a custom DNS server instead of local server configuration"
+msgstr ""
+
+#: admin/app_settings.py:138
+msgid "DKIM keys storage directory"
+msgstr ""
+
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
"world."
msgstr ""
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr ""
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr ""
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr ""
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
msgid "Default domain sending limit"
msgstr ""
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr ""
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr ""
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr ""
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr ""
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
msgid ""
"Default mailbox quota (in MB) applied to freshly created domains with no "
"value specified. A value of 0 means no quota."
msgstr ""
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
msgid "Default mailbox sending limit"
msgstr ""
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr ""
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr ""
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr ""
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr ""
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr ""
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
msgid "Aliases"
msgstr ""
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr ""
@@ -394,6 +403,35 @@ msgstr ""
msgid "Closed"
msgstr ""
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+msgid "Domain has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr ""
+
+#: admin/dns_checker.py:159
+msgid "Invalid MX record: {}"
+msgstr ""
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr ""
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr ""
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr ""
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr ""
@@ -416,8 +454,8 @@ msgstr ""
msgid "You are not allowed to import domain aliases."
msgstr ""
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, python-format
msgid "No DNS record found for %s"
msgstr ""
@@ -427,11 +465,11 @@ msgstr ""
msgid "No %(type)s record for %(name)s"
msgstr ""
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr ""
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr ""
@@ -483,35 +521,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr ""
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-msgid "Domain has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:195
-msgid "Invalid MX record: {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr ""
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr ""
@@ -688,17 +697,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr ""
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr ""
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr ""
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, python-format
msgid "No AAAA record for %s"
msgstr ""
@@ -867,11 +876,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr ""
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr ""
@@ -1113,7 +1122,7 @@ msgstr ""
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr ""
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr ""
@@ -1131,11 +1140,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1214,7 +1223,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
msgid "Invalid password"
msgstr ""
@@ -1226,24 +1235,20 @@ msgstr ""
msgid "Local"
msgstr ""
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr ""
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr ""
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1268,525 +1273,517 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
msgid "Webmail"
msgstr ""
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr ""
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr ""
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr ""
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr ""
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr ""
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr ""
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
msgstr ""
-#: core/app_settings.py:73
+#: core/app_settings.py:61
msgid "Update password scheme at login"
msgstr ""
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr ""
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr ""
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr ""
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr ""
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
msgid "Enable special characters in randomly generated passwords."
msgstr ""
-#: core/app_settings.py:114
+#: core/app_settings.py:102
msgid "Update password service URL"
msgstr ""
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr ""
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr ""
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr ""
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr ""
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
msgid "Secondary server address"
msgstr ""
-#: core/app_settings.py:202
+#: core/app_settings.py:190
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr ""
-#: core/app_settings.py:209
+#: core/app_settings.py:197
msgid "Secondary server port"
msgstr ""
-#: core/app_settings.py:212
+#: core/app_settings.py:200
msgid "The TCP port number used by the LDAP secondary server"
msgstr ""
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr ""
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr ""
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr ""
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr ""
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr ""
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr ""
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr ""
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr ""
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr ""
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr ""
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr ""
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr ""
-#: core/app_settings.py:276
+#: core/app_settings.py:264
msgid "LDAP authentication settings"
msgstr ""
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr ""
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr ""
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr ""
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr ""
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr ""
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr ""
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr ""
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr ""
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr ""
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr ""
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:350
+#: core/app_settings.py:338
msgid "LDAP synchronization settings"
msgstr ""
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
msgid "Account DN template"
msgstr ""
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, python-format
msgid ""
"The template used to construct an account's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr ""
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
msgid "Username attribute"
msgstr ""
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
msgid "Enable Dovecot LDAP sync"
msgstr ""
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr ""
-#: core/app_settings.py:486
+#: core/app_settings.py:474
msgid "Custom welcome message"
msgstr ""
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr ""
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:506
+#: core/app_settings.py:494
msgid "Display custom RSS feed to super admins"
msgstr ""
-#: core/app_settings.py:509
+#: core/app_settings.py:497
msgid "Display custom RSS feed also to super administrators"
msgstr ""
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr ""
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr ""
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
msgid "Secondary theme color"
msgstr ""
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr ""
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr ""
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr ""
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr ""
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr ""
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr ""
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr ""
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr ""
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr ""
-#: core/app_settings.py:683
+#: core/app_settings.py:671
msgid "Enable inactive account tracking"
msgstr ""
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr ""
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr ""
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr ""
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr ""
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr ""
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr ""
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2104,7 +2101,7 @@ msgid "Not resolved"
msgstr ""
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr ""
@@ -2984,7 +2981,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr ""
@@ -3210,19 +3207,19 @@ msgstr ""
msgid "SMTP settings"
msgstr ""
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr ""
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
msgid "Secured connection mode"
msgstr ""
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
msgid "Use a secured connection to access SMTP server"
msgstr ""
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr ""
@@ -3234,95 +3231,99 @@ msgstr ""
msgid "Server needs authentication"
msgstr ""
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+msgid "Scheduling settings"
+msgstr ""
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr ""
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr ""
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr ""
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr ""
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr ""
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr ""
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr ""
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr ""
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
msgid "Folders"
msgstr ""
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
msgid "Trash folder"
msgstr ""
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
msgid "Folder where deleted messages go"
msgstr ""
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
msgid "Sent folder"
msgstr ""
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr ""
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
msgid "Drafts folder"
msgstr ""
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr ""
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
msgid "Junk folder"
msgstr ""
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
msgid "Folder where junk messages should go"
msgstr ""
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
msgid "Composing messages"
msgstr ""
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
msgid "Default editor"
msgstr ""
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr ""
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr ""
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr ""
@@ -3336,43 +3337,59 @@ msgstr ""
msgid "Failed to remove attachment: "
msgstr "无法创建LDAP帐户: {}"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr ""
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
msgid "Original message"
msgstr ""
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr ""
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr ""
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
msgid "Drafts"
msgstr ""
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr ""
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr ""
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr ""
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr ""
diff --git a/modoboa/locale/zh_TW/LC_MESSAGES/django.po b/modoboa/locale/zh_TW/LC_MESSAGES/django.po
index 2c94f9fdb..bc70fb48f 100644
--- a/modoboa/locale/zh_TW/LC_MESSAGES/django.po
+++ b/modoboa/locale/zh_TW/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-12-02 16:07+0100\n"
+"POT-Creation-Date: 2026-02-04 09:30+0100\n"
"PO-Revision-Date: 2018-07-06 08:26+0000\n"
"Last-Translator: akong \n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/tonio/modoboa/"
@@ -48,14 +48,14 @@ msgid "Cannot be greater than domain quota"
msgstr "不可以超過網域配額"
#: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
-#: admin/api/v2/serializers.py:570 admin/models/alias.py:45
+#: admin/api/v2/serializers.py:571 admin/models/alias.py:45
msgid "Permission denied."
msgstr "權限不足"
#: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
-#: admin/api/v2/serializers.py:491 amavis/serializers.py:39
-#: core/api/v2/serializers.py:255 core/api/v2/serializers.py:257
-#: core/api/v2/serializers.py:266 transport/backends.py:40
+#: admin/api/v2/serializers.py:492 amavis/serializers.py:39
+#: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
+#: core/api/v2/serializers.py:259 transport/backends.py:40
msgid "This field is required"
msgstr "這個欄位是必填的"
@@ -64,7 +64,7 @@ msgid ""
"List of administered domains (resellers and domain administrators only)."
msgstr "管理員網域列表 (只有經銷商和網域管理員)。"
-#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:552
+#: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
msgid "Not allowed for this role."
msgstr "不允許這個身份"
@@ -72,13 +72,12 @@ msgstr "不允許這個身份"
msgid "Must be equal to mailbox full_address"
msgstr "必須跟信箱完整位址一樣"
-#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:604
-#: calendars/serializers.py:175 calendars/serializers.py:177
-#: pdfcredentials/api/v2/serializers.py:91
+#: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
+#: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
msgid "This field is required."
msgstr "這個欄位是必填的"
-#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:621
+#: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
msgid "Local domain {} does not exist"
msgstr "本機網域 {} 不存在"
@@ -121,41 +120,41 @@ msgstr "您不可以定義無限制配額。"
msgid "User '%s' already exists"
msgstr "使用者 '%s' 已存在"
-#: admin/api/v2/serializers.py:255 admin/api/v2/serializers.py:261
+#: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
msgid "Must be a positive integer"
msgstr "必須是正整數"
-#: admin/api/v2/serializers.py:270
+#: admin/api/v2/serializers.py:271
msgid "openssl not found, please make sure it is installed."
msgstr "openssl 找不到,請確認已安裝。"
-#: admin/api/v2/serializers.py:273 pdfcredentials/api/v2/serializers.py:84
+#: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
msgid "Directory not found."
msgstr "目錄不存在"
-#: admin/api/v2/serializers.py:284
+#: admin/api/v2/serializers.py:285
msgid "This field only allows valid IP addresses (or networks)"
msgstr ""
-#: admin/api/v2/serializers.py:297
+#: admin/api/v2/serializers.py:298
msgid "Please disable imap migration before disabling this option."
msgstr ""
-#: admin/api/v2/serializers.py:310
+#: admin/api/v2/serializers.py:311
msgid "Define at least one authorized network / address"
msgstr "定義至少一個已驗證網路/位址"
-#: admin/api/v2/serializers.py:587
+#: admin/api/v2/serializers.py:588
msgid "The left part of an email address can't be more than 64 characters."
msgstr ""
-#: admin/api/v2/serializers.py:609
+#: admin/api/v2/serializers.py:610
#, fuzzy
#| msgid "A mailbox is required"
msgid "A mailbox is required to create aliases."
msgstr "信箱是必要的"
-#: admin/api/v2/serializers.py:782
+#: admin/api/v2/serializers.py:783
#, fuzzy
#| msgid "Unknown"
msgid "Unknown status"
@@ -268,19 +267,29 @@ msgstr "啟用 DNSBL 檢查"
msgid "Check every domain against major DNSBL providers"
msgstr "針對每個 DNSBL 供應商來檢查每個網域"
-#: admin/app_settings.py:116
+#: admin/app_settings.py:117
+msgid "Notify domain admins about DNS issues"
+msgstr ""
+
+#: admin/app_settings.py:120
+msgid ""
+"Send a notification by email to domain administrators when DNS issues are "
+"encountered"
+msgstr ""
+
+#: admin/app_settings.py:128
msgid "Custom DNS server"
msgstr ""
-#: admin/app_settings.py:118
+#: admin/app_settings.py:130
msgid "Use a custom DNS server instead of local server configuration"
msgstr ""
-#: admin/app_settings.py:126
+#: admin/app_settings.py:138
msgid "DKIM keys storage directory"
msgstr "DKIM 金鑰儲存目錄"
-#: admin/app_settings.py:128
+#: admin/app_settings.py:140
msgid ""
"Absolute path of the directory where DKIM private keys will be stored. Make "
"sure this directory belongs to root user and is not readable by the outside "
@@ -289,56 +298,56 @@ msgstr ""
"絕對路徑的目錄將會給 DKIM 私鑰儲存。確認這個目錄屬於 root 使用者並且外面的世"
"界無法讀取。"
-#: admin/app_settings.py:137
+#: admin/app_settings.py:149
msgid "Default DKIM key length"
msgstr "預設 DKIM 金鑰長度"
-#: admin/app_settings.py:139
+#: admin/app_settings.py:151
msgid "Default length in bits for newly generated DKIM keys."
msgstr "預設長度是給新產生的 DKIM 金鑰用。"
-#: admin/app_settings.py:146
+#: admin/app_settings.py:158
msgid "Default domain quota"
msgstr "預設網域配額"
-#: admin/app_settings.py:148
+#: admin/app_settings.py:160
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
msgstr "預設配額(以MB為單位)應用於未指定值的創立網域。值為0表示沒有配額。"
-#: admin/app_settings.py:156
+#: admin/app_settings.py:168
#, fuzzy
#| msgid "Default domain quota"
msgid "Default domain sending limit"
msgstr "預設網域配額"
-#: admin/app_settings.py:158
+#: admin/app_settings.py:170
msgid ""
"Number of messages freshly created domains will be allowed to send per day. "
"Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:170 limits/app_settings.py:61
+#: admin/app_settings.py:182 limits/app_settings.py:61
#: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
msgid "Mailboxes"
msgstr "信箱"
-#: admin/app_settings.py:176
+#: admin/app_settings.py:188
msgid "Handle mailboxes on filesystem"
msgstr "在檔案系統上處理信箱"
-#: admin/app_settings.py:178
+#: admin/app_settings.py:190
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
msgstr "當他要在 Modoboa 上取得更名或移除就會在檔案系統上更名或移除信箱"
-#: admin/app_settings.py:186 admin/models/domain.py:36
+#: admin/app_settings.py:198 admin/models/domain.py:36
msgid "Default mailbox quota"
msgstr "預設信箱配額"
-#: admin/app_settings.py:188
+#: admin/app_settings.py:200
#, fuzzy
#| msgid ""
#| "Default mailbox quota (in MB) applied to freshly created domains with no "
@@ -349,73 +358,73 @@ msgid ""
msgstr ""
"預設信箱配額(以MB為單位)應用於未指定值的建立網域。值為0表示沒有配額。"
-#: admin/app_settings.py:197
+#: admin/app_settings.py:209
#, fuzzy
#| msgid "Default mailbox quota"
msgid "Default mailbox sending limit"
msgstr "預設信箱配額"
-#: admin/app_settings.py:199
+#: admin/app_settings.py:211
msgid ""
"Number of messages freshly created mailboxes will be allowed to send per "
"day. Leave empty for no limit."
msgstr ""
-#: admin/app_settings.py:207
+#: admin/app_settings.py:219
msgid "Automatic account removal"
msgstr "自動刪除帳號"
-#: admin/app_settings.py:209
+#: admin/app_settings.py:221
msgid "When a mailbox is removed, also remove the associated account"
msgstr "當信箱移除時,也會移除關聯的帳號"
-#: admin/app_settings.py:218
+#: admin/app_settings.py:230
msgid "Automatic domain/mailbox creation"
msgstr "自動建立網域/信箱"
-#: admin/app_settings.py:221
+#: admin/app_settings.py:233
msgid "Create a domain and a mailbox when an account is automatically created."
msgstr "當帳號自動建立後會建立網域和一個信箱。"
-#: admin/app_settings.py:230
+#: admin/app_settings.py:242
msgid "Create an alias when a mailbox is renamed"
msgstr "當信箱更名時會建立別名"
-#: admin/app_settings.py:233
+#: admin/app_settings.py:245
msgid "Create an alias using the old address when a mailbox is renamed."
msgstr "當信箱更名時建立別名並使用在舊的位址。"
-#: admin/app_settings.py:245
+#: admin/app_settings.py:257
#, fuzzy
#| msgid "alias"
msgid "Aliases"
msgstr "別名"
-#: admin/app_settings.py:251
+#: admin/app_settings.py:263
msgid "Alias can target any domain"
msgstr ""
-#: admin/app_settings.py:253
+#: admin/app_settings.py:265
msgid "Allow aliases to target any domain, not just the local domains."
msgstr ""
-#: admin/app_settings.py:260
+#: admin/app_settings.py:272
msgid "Alias target block list"
msgstr ""
-#: admin/app_settings.py:262
+#: admin/app_settings.py:274
msgid "A list of domains that aliases cannot target (comma separated)."
msgstr ""
-#: admin/app_settings.py:270
+#: admin/app_settings.py:282
msgid "Alias target allow list"
msgstr ""
-#: admin/app_settings.py:272
+#: admin/app_settings.py:284
msgid "A list of domains that aliases can target (comma separated)."
msgstr ""
-#: admin/app_settings.py:326 core/api/v2/viewsets.py:174
+#: admin/app_settings.py:338 core/api/v2/viewsets.py:174
msgid "Administration"
msgstr "管理員"
@@ -437,6 +446,39 @@ msgstr ""
msgid "Closed"
msgstr "關閉"
+#: admin/dns_checker.py:96
+msgid "MX {} listed by DNSBL provider {}"
+msgstr ""
+
+#: admin/dns_checker.py:138
+#, fuzzy
+#| msgid "Domain {} has no MX record"
+msgid "Domain has no MX record"
+msgstr "網域 {} 沒有 MX 紀錄"
+
+#: admin/dns_checker.py:141
+msgid "Domain {} has no MX record"
+msgstr "網域 {} 沒有 MX 紀錄"
+
+#: admin/dns_checker.py:159
+#, fuzzy
+#| msgid "MX records of {}"
+msgid "Invalid MX record: {}"
+msgstr "MX 紀錄 {}"
+
+#: admin/dns_checker.py:166
+#, python-brace-format
+msgid "MX record for domain {0} is invalid: {1}"
+msgstr "此網域的 MX 紀錄 {0} 是無效的: {1}"
+
+#: admin/dns_checker.py:177
+msgid "[modoboa] MX issue(s) for domain {}"
+msgstr "[modoboa] 此網域的 MX 問題(s) {}"
+
+#: admin/dns_checker.py:224
+msgid "[modoboa] DNSBL issue(s) for domain {}"
+msgstr "[modoboa] 此網域的 DNSBL 問題(s) {}"
+
#: admin/handlers.py:179
msgid "domain alias"
msgstr "網域別名"
@@ -459,8 +501,8 @@ msgstr "您未允許匯入網域"
msgid "You are not allowed to import domain aliases."
msgstr "您未允許匯入網域別名。"
-#: admin/lib.py:227 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
-#: admin/tests/test_mx.py:171
+#: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
+#: admin/tests/test_mx.py:157
#, fuzzy, python-format
#| msgid "No DNS records found for %s"
msgid "No DNS record found for %s"
@@ -472,11 +514,11 @@ msgstr "沒有找到 %s 的 DNS 紀錄"
msgid "No %(type)s record for %(name)s"
msgstr "沒有 %s 的 MX 紀錄"
-#: admin/lib.py:234 admin/tests/test_mx.py:156
+#: admin/lib.py:234 admin/tests/test_mx.py:142
msgid "No working name servers found"
msgstr "沒有找到執行中的名稱伺服器"
-#: admin/lib.py:237 admin/tests/test_mx.py:160
+#: admin/lib.py:237 admin/tests/test_mx.py:146
#, python-format
msgid "DNS resolution timeout, unable to query %s at the moment"
msgstr "DNS 解析逾時,無法查詢 %s 在這個時間點"
@@ -531,39 +573,6 @@ msgstr ""
msgid "Failed to generate DKIM public key"
msgstr "開啟 Modoboa 公用 API 的通訊"
-#: admin/management/commands/subcommands/_mx.py:133
-msgid "MX {} listed by DNSBL provider {}"
-msgstr ""
-
-#: admin/management/commands/subcommands/_mx.py:174
-#, fuzzy
-#| msgid "Domain {} has no MX record"
-msgid "Domain has no MX record"
-msgstr "網域 {} 沒有 MX 紀錄"
-
-#: admin/management/commands/subcommands/_mx.py:177
-msgid "Domain {} has no MX record"
-msgstr "網域 {} 沒有 MX 紀錄"
-
-#: admin/management/commands/subcommands/_mx.py:195
-#, fuzzy
-#| msgid "MX records of {}"
-msgid "Invalid MX record: {}"
-msgstr "MX 紀錄 {}"
-
-#: admin/management/commands/subcommands/_mx.py:202
-#, python-brace-format
-msgid "MX record for domain {0} is invalid: {1}"
-msgstr "此網域的 MX 紀錄 {0} 是無效的: {1}"
-
-#: admin/management/commands/subcommands/_mx.py:213
-msgid "[modoboa] MX issue(s) for domain {}"
-msgstr "[modoboa] 此網域的 MX 問題(s) {}"
-
-#: admin/management/commands/subcommands/_mx.py:269
-msgid "[modoboa] DNSBL issue(s) for domain {}"
-msgstr "[modoboa] 此網域的 DNSBL 問題(s) {}"
-
#: admin/models/alias.py:43
msgid "Domain not found."
msgstr "網域不存在。"
@@ -756,17 +765,17 @@ msgstr ""
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
msgstr "Modoboa 已偵測到網域 %(domain)s 沒有正確的 MX 紀錄:"
-#: admin/tests/test_mx.py:155
+#: admin/tests/test_mx.py:141
#, python-format
msgid "No MX record for %s"
msgstr "沒有 %s 的 MX 紀錄"
-#: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
+#: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
#, python-format
msgid "Invalid IP address format for %(domain)s; %(addr)s"
msgstr "無效的 IP 位址格式 %(domain)s; %(addr)s"
-#: admin/tests/test_mx.py:199
+#: admin/tests/test_mx.py:185
#, fuzzy, python-format
#| msgid "No MX record for %s"
msgid "No AAAA record for %s"
@@ -972,11 +981,11 @@ msgid ""
"database)"
msgstr ""
-#: amavis/app_settings.py:236 webmail/app_settings.py:118
+#: amavis/app_settings.py:236 webmail/app_settings.py:155
msgid "Display"
msgstr "顯示"
-#: amavis/app_settings.py:243 webmail/app_settings.py:144
+#: amavis/app_settings.py:243 webmail/app_settings.py:181
msgid "Number of displayed emails per page"
msgstr "每一頁顯示郵件數量"
@@ -1263,7 +1272,7 @@ msgstr "網域管理員"
msgid "Allow domain administrators to manage user calendars (read and write)"
msgstr "允許這個管理者來存取使用者信箱"
-#: calendars/app_settings.py:60 core/app_settings.py:676
+#: calendars/app_settings.py:60 core/app_settings.py:664
#: rspamd/app_settings.py:45
msgid "Miscellaneous"
msgstr "雜項"
@@ -1281,11 +1290,11 @@ msgstr ""
msgid "Calendars"
msgstr ""
-#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
+#: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
msgid "Server location is not set, please fix it."
msgstr ""
-#: calendars/viewsets.py:197
+#: calendars/viewsets.py:199
msgid "Uploaded file is too big (max: {} bytes)"
msgstr ""
@@ -1372,7 +1381,7 @@ msgstr ""
msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
msgstr ""
-#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:445
+#: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
#, fuzzy
#| msgid "Old password"
msgid "Invalid password"
@@ -1386,24 +1395,20 @@ msgstr ""
msgid "Local"
msgstr "本機"
-#: core/api/v2/serializers.py:194 core/app_settings.py:17
-msgid "User profile"
-msgstr "使用者檔案"
-
-#: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
-#: core/api/v2/serializers.py:228
+#: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
+#: core/api/v2/serializers.py:221
msgid "Invalid syntax"
msgstr "無效語法"
-#: core/api/v2/serializers.py:233
+#: core/api/v2/serializers.py:226
msgid "Invalid rounds number"
msgstr ""
-#: core/api/v2/serializers.py:433 core/forms.py:81
+#: core/api/v2/serializers.py:426 core/forms.py:81
msgid "This code is invalid"
msgstr ""
-#: core/api/v2/serializers.py:503 core/views/auth.py:213 core/views/auth.py:266
+#: core/api/v2/serializers.py:496 core/views/auth.py:213 core/views/auth.py:266
msgid "Please use the following code to recover your Modoboa password: {}"
msgstr ""
@@ -1436,37 +1441,37 @@ msgid "Calendar"
msgstr ""
#: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
-#: webmail/app_settings.py:258 webmail/app_settings.py:265
+#: webmail/app_settings.py:295 webmail/app_settings.py:302
#, fuzzy
#| msgid "E-mail"
msgid "Webmail"
msgstr "網頁郵件"
-#: core/app_settings.py:37
+#: core/app_settings.py:25
msgid "Authentication"
msgstr "驗證"
-#: core/app_settings.py:43
+#: core/app_settings.py:31
msgid "Authentication type"
msgstr "驗證類型"
-#: core/app_settings.py:45
+#: core/app_settings.py:33
msgid "The backend used for authentication"
msgstr "此背景程式已用於驗證"
-#: core/app_settings.py:52
+#: core/app_settings.py:40
msgid "Default password scheme"
msgstr "預設密碼方案"
-#: core/app_settings.py:54
+#: core/app_settings.py:42
msgid "Scheme used to crypt mailbox passwords"
msgstr "方案已使用於加密信箱密碼"
-#: core/app_settings.py:61
+#: core/app_settings.py:49
msgid "Rounds"
msgstr "輪"
-#: core/app_settings.py:63
+#: core/app_settings.py:51
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
@@ -1474,281 +1479,281 @@ msgstr ""
"重複幾輪產生 (只能用於 sha256crypt 和 sha512crypt). 必須介於 1000 到 "
"999999999, 包括."
-#: core/app_settings.py:73
+#: core/app_settings.py:61
#, fuzzy
#| msgid "Default password scheme"
msgid "Update password scheme at login"
msgstr "預設密碼方案"
-#: core/app_settings.py:76
+#: core/app_settings.py:64
msgid "Update user password at login to use the default password scheme"
msgstr ""
-#: core/app_settings.py:84
+#: core/app_settings.py:72
msgid "Default password"
msgstr "預設密碼"
-#: core/app_settings.py:86
+#: core/app_settings.py:74
msgid "Default password for automatically created accounts."
msgstr "預設密碼是給自動產生帳號用。"
-#: core/app_settings.py:93
+#: core/app_settings.py:81
msgid "Random password length"
msgstr "隨機密碼長度"
-#: core/app_settings.py:95
+#: core/app_settings.py:83
msgid "Length of randomly generated passwords."
msgstr "隨機產生密碼的長度。"
-#: core/app_settings.py:103
+#: core/app_settings.py:91
msgid "Allow special characters for random password"
msgstr ""
-#: core/app_settings.py:106
+#: core/app_settings.py:94
#, fuzzy
#| msgid "Length of randomly generated passwords."
msgid "Enable special characters in randomly generated passwords."
msgstr "隨機產生密碼的長度。"
-#: core/app_settings.py:114
+#: core/app_settings.py:102
#, fuzzy
#| msgid "Default password scheme"
msgid "Update password service URL"
msgstr "預設密碼方案"
-#: core/app_settings.py:116
+#: core/app_settings.py:104
msgid ""
"The URL of an external page where users will be able to update their "
"password. It applies only to non local users, ie. those automatically "
"created after a successful external authentication (LDAP, SMTP)."
msgstr ""
-#: core/app_settings.py:126
+#: core/app_settings.py:114
msgid "Password recovery announcement"
msgstr ""
-#: core/app_settings.py:128
+#: core/app_settings.py:116
msgid "A temporary message that will be displayed on the reset password page."
msgstr ""
-#: core/app_settings.py:137
+#: core/app_settings.py:125
msgid "Enable password recovery by SMS"
msgstr ""
-#: core/app_settings.py:140
+#: core/app_settings.py:128
msgid "Enable password recovery by SMS for users who filled a phone number."
msgstr ""
-#: core/app_settings.py:148
+#: core/app_settings.py:136
msgid "SMS provider"
msgstr ""
-#: core/app_settings.py:151
+#: core/app_settings.py:139
msgid "Choose a provider to send password recovery SMS"
msgstr ""
-#: core/app_settings.py:163
+#: core/app_settings.py:151
msgid "LDAP"
msgstr ""
-#: core/app_settings.py:169 sievefilters/app_settings.py:18
+#: core/app_settings.py:157 sievefilters/app_settings.py:18
#: sievefilters/app_settings.py:51 webmail/app_settings.py:36
-#: webmail/app_settings.py:73
+#: webmail/app_settings.py:73 webmail/app_settings.py:119
msgid "Server address"
msgstr "伺服器位址"
-#: core/app_settings.py:171
+#: core/app_settings.py:159
msgid "The IP address or the DNS name of the LDAP server"
msgstr "LDAP 伺服器的 IP 或 DNS 名稱"
-#: core/app_settings.py:178 sievefilters/app_settings.py:25
+#: core/app_settings.py:166 sievefilters/app_settings.py:25
#: sievefilters/app_settings.py:67 webmail/app_settings.py:54
-#: webmail/app_settings.py:91
+#: webmail/app_settings.py:91 webmail/app_settings.py:137
msgid "Server port"
msgstr "伺服器連接埠"
-#: core/app_settings.py:180
+#: core/app_settings.py:168
msgid "The TCP port number used by the LDAP server"
msgstr "LDAP 伺服器所使用的 TCP 連接埠"
-#: core/app_settings.py:188
+#: core/app_settings.py:176
msgid "Enable secondary server (fallback)"
msgstr ""
-#: core/app_settings.py:191
+#: core/app_settings.py:179
msgid ""
"Enable a secondary LDAP server which will be used if the primary one fails"
msgstr ""
-#: core/app_settings.py:199
+#: core/app_settings.py:187
#, fuzzy
#| msgid "Server address"
msgid "Secondary server address"
msgstr "伺服器地址"
-#: core/app_settings.py:202
+#: core/app_settings.py:190
#, fuzzy
#| msgid "The IP address or the DNS name of the LDAP server"
msgid "The IP address or the DNS name of the seondary LDAP server"
msgstr "LDAP 伺服器的 IP 或 DNS 名稱"
-#: core/app_settings.py:209
+#: core/app_settings.py:197
#, fuzzy
#| msgid "Server port"
msgid "Secondary server port"
msgstr "伺服器連接埠"
-#: core/app_settings.py:212
+#: core/app_settings.py:200
#, fuzzy
#| msgid "The TCP port number used by the LDAP server"
msgid "The TCP port number used by the LDAP secondary server"
msgstr "LDAP 伺服器所使用的 TCP 連接埠"
-#: core/app_settings.py:219 sievefilters/app_settings.py:58
+#: core/app_settings.py:207 sievefilters/app_settings.py:58
#: webmail/app_settings.py:45
msgid "Use a secured connection"
msgstr "使用安全的連線"
-#: core/app_settings.py:221
+#: core/app_settings.py:209
msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgstr "使用 SSL/STARTTLS 連線到 LDAP 伺服器"
-#: core/app_settings.py:228
+#: core/app_settings.py:216
msgid "Active Directory"
msgstr "Active Directory"
-#: core/app_settings.py:230
+#: core/app_settings.py:218
msgid "Tell if the LDAP server is an Active Directory one"
msgstr "判斷 LDAP 伺服器是否是 Active Directory 伺服器"
-#: core/app_settings.py:237
+#: core/app_settings.py:225
msgid "Administrator groups"
msgstr "管理者群組"
-#: core/app_settings.py:239
+#: core/app_settings.py:227
msgid ""
"Members of those LDAP Posix groups will be created as domain administrators. "
"Use ';' characters to separate groups."
msgstr "這些 LDAP 群組的成員將會建立為網域管理者。使用 ';' 字元來分開群組"
-#: core/app_settings.py:248
+#: core/app_settings.py:236
msgid "Group type"
msgstr "群組類型"
-#: core/app_settings.py:250
+#: core/app_settings.py:238
msgid "The LDAP group type to use with your directory."
msgstr "此 LDAP 群組類型會使用您的目錄"
-#: core/app_settings.py:257
+#: core/app_settings.py:245
msgid "Groups search base"
msgstr "群組搜尋基準"
-#: core/app_settings.py:259
+#: core/app_settings.py:247
msgid "The distinguished name of the search base used to find groups"
msgstr "搜尋基準使用醒目的名稱來找到群組"
-#: core/app_settings.py:267
+#: core/app_settings.py:255
msgid "Password attribute"
msgstr "密碼屬性"
-#: core/app_settings.py:269
+#: core/app_settings.py:257
msgid "The attribute used to store user passwords"
msgstr "此屬性使用在儲存使用者密碼"
-#: core/app_settings.py:276
+#: core/app_settings.py:264
#, fuzzy
#| msgid "Authentication method"
msgid "LDAP authentication settings"
msgstr "身份驗證方法"
-#: core/app_settings.py:284
+#: core/app_settings.py:272
msgid "Authentication method"
msgstr "身份驗證方法"
-#: core/app_settings.py:287
+#: core/app_settings.py:275
msgid "Choose the authentication method to use"
msgstr "選擇驗證模組來使用"
-#: core/app_settings.py:294 core/app_settings.py:357
+#: core/app_settings.py:282 core/app_settings.py:345
msgid "Bind DN"
msgstr "Bind DN"
-#: core/app_settings.py:296 core/app_settings.py:359
+#: core/app_settings.py:284 core/app_settings.py:347
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
msgstr "當對應到 LDAP 伺服器請使用醒目的名稱。保留空白為匿名 bind"
-#: core/app_settings.py:305 core/app_settings.py:367
+#: core/app_settings.py:293 core/app_settings.py:355
msgid "Bind password"
msgstr "Bind 密碼"
-#: core/app_settings.py:307 core/app_settings.py:369
+#: core/app_settings.py:295 core/app_settings.py:357
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
msgstr "此密碼使用於當綁定到 LDAP 伺服器 (有 'Bind DN')"
-#: core/app_settings.py:317 core/app_settings.py:422
+#: core/app_settings.py:305 core/app_settings.py:410
msgid "Users search base"
msgstr "使用者搜尋基準"
-#: core/app_settings.py:319 core/app_settings.py:424
+#: core/app_settings.py:307 core/app_settings.py:412
msgid "The distinguished name of the search base used to find users"
msgstr "搜尋基準使用醒目的名稱來找到使用者"
-#: core/app_settings.py:328 core/app_settings.py:433
+#: core/app_settings.py:316 core/app_settings.py:421
msgid "Search filter"
msgstr "搜尋過濾器"
-#: core/app_settings.py:330 core/app_settings.py:435
+#: core/app_settings.py:318 core/app_settings.py:423
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
msgstr ""
"過濾字串的選 (例如 '(objectClass=person)'). 要能正常使用,這必須括在括號內。"
-#: core/app_settings.py:339
+#: core/app_settings.py:327
msgid "User DN template"
msgstr "使用者 DN 範本"
-#: core/app_settings.py:341
+#: core/app_settings.py:329
#, python-format
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
msgstr "此範本已使用結構化使用者的 DN. 他應該包含一個佔位符 (例如 %(user)s)"
-#: core/app_settings.py:350
+#: core/app_settings.py:338
#, fuzzy
#| msgid "LDAP settings"
msgid "LDAP synchronization settings"
msgstr "LDAP 設定"
-#: core/app_settings.py:378
+#: core/app_settings.py:366
msgid "Enable export to LDAP"
msgstr ""
-#: core/app_settings.py:380
+#: core/app_settings.py:368
msgid ""
"Enable automatic synchronization between local database and LDAP directory"
msgstr ""
-#: core/app_settings.py:389
+#: core/app_settings.py:377
msgid "Delete remote LDAP account when local account is deleted"
msgstr ""
-#: core/app_settings.py:392
+#: core/app_settings.py:380
msgid ""
"Delete remote LDAP account when local account is deleted, otherwise it will "
"be disabled."
msgstr ""
-#: core/app_settings.py:401
+#: core/app_settings.py:389
#, fuzzy
#| msgid "User DN template"
msgid "Account DN template"
msgstr "使用者 DN 範本"
-#: core/app_settings.py:403
+#: core/app_settings.py:391
#, fuzzy, python-format
#| msgid ""
#| "The template used to construct a user's DN. It should contain one "
@@ -1758,245 +1763,237 @@ msgid ""
"placeholder (ie. %(user)s)"
msgstr "此範本已使用結構化使用者的 DN. 他應該包含一個佔位符 (例如 %(user)s)"
-#: core/app_settings.py:412
+#: core/app_settings.py:400
msgid "Enable import from LDAP"
msgstr ""
-#: core/app_settings.py:414
+#: core/app_settings.py:402
msgid "Enable account synchronization from LDAP directory to local database"
msgstr ""
-#: core/app_settings.py:444
+#: core/app_settings.py:432
#, fuzzy
#| msgid "Password attribute"
msgid "Username attribute"
msgstr "密碼屬性"
-#: core/app_settings.py:446
+#: core/app_settings.py:434
msgid "The name of the LDAP attribute where the username can be found."
msgstr ""
-#: core/app_settings.py:455
+#: core/app_settings.py:443
#, fuzzy
#| msgid "Enable communication"
msgid "Enable Dovecot LDAP sync"
msgstr "啟用通訊"
-#: core/app_settings.py:457
+#: core/app_settings.py:445
msgid "LDAP authentication settings will be applied to Dovecot configuration."
msgstr ""
-#: core/app_settings.py:465
+#: core/app_settings.py:453
msgid "Dovecot LDAP config file"
msgstr ""
-#: core/app_settings.py:467
+#: core/app_settings.py:455
msgid ""
"Location of the configuration file which contains Dovecot LDAP settings."
msgstr ""
-#: core/app_settings.py:480
+#: core/app_settings.py:468
msgid "Dashboard"
msgstr "儀表板"
-#: core/app_settings.py:486
+#: core/app_settings.py:474
#, fuzzy
#| msgid "spam messages"
msgid "Custom welcome message"
msgstr "垃圾郵件"
-#: core/app_settings.py:488
+#: core/app_settings.py:476
msgid "A welcome message that will be displayed instead the default one"
msgstr ""
-#: core/app_settings.py:495
+#: core/app_settings.py:483
msgid "Custom RSS feed"
msgstr "自訂 RSS 來源"
-#: core/app_settings.py:497
+#: core/app_settings.py:485
msgid "Display custom RSS feed to resellers and domain administrators"
msgstr "顯示自訂的 RSS 來源給經銷商和網域管理者"
-#: core/app_settings.py:506
+#: core/app_settings.py:494
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed to super admins"
msgstr "顯示自訂的 RSS 來源給經銷商和網域管理者"
-#: core/app_settings.py:509
+#: core/app_settings.py:497
#, fuzzy
#| msgid "Display custom RSS feed to resellers and domain administrators"
msgid "Display custom RSS feed also to super administrators"
msgstr "顯示自訂的 RSS 來源給經銷商和網域管理者"
-#: core/app_settings.py:517
+#: core/app_settings.py:505
msgid "Hide features widget"
msgstr "隱藏功能物件"
-#: core/app_settings.py:519
+#: core/app_settings.py:507
msgid "Hide features widget for resellers and domain administrators"
msgstr "隱藏功能物件給經銷商和網域管理者"
-#: core/app_settings.py:531
+#: core/app_settings.py:519
msgid "Theme"
msgstr ""
-#: core/app_settings.py:537
+#: core/app_settings.py:525
msgid "Primary theme color"
msgstr ""
-#: core/app_settings.py:539
+#: core/app_settings.py:527
msgid ""
"Primary color of the theme (hexadecimal code), used as the background color "
"of the left menu for example"
msgstr ""
-#: core/app_settings.py:548
+#: core/app_settings.py:536
msgid "Primary theme color (lighter version)"
msgstr ""
-#: core/app_settings.py:551 core/app_settings.py:563
+#: core/app_settings.py:539 core/app_settings.py:551
msgid "Primary color of the theme (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:560
+#: core/app_settings.py:548
msgid "Primary theme color (darker version)"
msgstr ""
-#: core/app_settings.py:571
+#: core/app_settings.py:559
#, fuzzy
#| msgid "Secondary email"
msgid "Secondary theme color"
msgstr "次要電子郵件"
-#: core/app_settings.py:573
+#: core/app_settings.py:561
msgid ""
"Secondary color of the theme (hexadecimal code), used as the background "
"color of some buttons for example"
msgstr ""
-#: core/app_settings.py:581
+#: core/app_settings.py:569
msgid "Labels theme color"
msgstr ""
-#: core/app_settings.py:583
+#: core/app_settings.py:571
msgid "Theme color for labels (hexadecimal code)"
msgstr ""
-#: core/app_settings.py:595
+#: core/app_settings.py:583
msgid "Notifications"
msgstr "通知"
-#: core/app_settings.py:601
+#: core/app_settings.py:589
msgid "Sender address"
msgstr "伺服器位址"
-#: core/app_settings.py:603
+#: core/app_settings.py:591
msgid "Email address used to send notifications."
msgstr "郵件地址用於寄送通知。"
-#: core/app_settings.py:614
+#: core/app_settings.py:602
msgid "Public API"
msgstr "公用 API"
-#: core/app_settings.py:620
+#: core/app_settings.py:608
msgid "Enable communication"
msgstr "啟用通訊"
-#: core/app_settings.py:622 core/app_settings.py:632
+#: core/app_settings.py:610 core/app_settings.py:620
msgid "Automatically checks if a newer version is available"
msgstr "假如有新的版本就自動檢查"
-#: core/app_settings.py:629
+#: core/app_settings.py:617
msgid "Check new versions"
msgstr "檢查新的版本"
-#: core/app_settings.py:640
+#: core/app_settings.py:628
msgid "Send an email when new versions are found"
msgstr ""
-#: core/app_settings.py:644
+#: core/app_settings.py:632
msgid "Send an email to notify admins about new versions"
msgstr ""
-#: core/app_settings.py:651 sievefilters/constants.py:25
+#: core/app_settings.py:639 sievefilters/constants.py:25
msgid "Recipient"
msgstr ""
-#: core/app_settings.py:654
+#: core/app_settings.py:642
msgid "Recipient of new versions notification emails."
msgstr ""
-#: core/app_settings.py:661
+#: core/app_settings.py:649
msgid "Send statistics"
msgstr "寄送狀態"
-#: core/app_settings.py:664
+#: core/app_settings.py:652
msgid "Send statistics to Modoboa public API (counters and used extensions)"
msgstr "寄送狀態到 Modoboa 公用 API (計數器及已使用的外掛)"
-#: core/app_settings.py:683
+#: core/app_settings.py:671
#, fuzzy
#| msgid "Inactive account threshold"
msgid "Enable inactive account tracking"
msgstr "未啟用帳號上限"
-#: core/app_settings.py:686
+#: core/app_settings.py:674
msgid ""
"Allow the administrator to set a threshold (in days) beyond which an account "
"is considered inactive if the user hasn't logged in"
msgstr ""
-#: core/app_settings.py:695
+#: core/app_settings.py:683
msgid "Inactive account threshold"
msgstr "未啟用帳號上限"
-#: core/app_settings.py:698
+#: core/app_settings.py:686
msgid ""
"An account with a last login date greater than this threshold (in days) will "
"be considered as inactive"
msgstr "這個帳號最後一次登錄日期超過這個上限 (在幾天) 將考慮停用"
-#: core/app_settings.py:707
+#: core/app_settings.py:695
msgid "Top notifications check interval"
msgstr "檢查提醒間隔"
-#: core/app_settings.py:710
+#: core/app_settings.py:698
msgid "Interval between two top notification checks (in seconds)"
msgstr "兩次檢查提醒間隔 (在幾秒)"
-#: core/app_settings.py:717
+#: core/app_settings.py:705
msgid "Maximum log record age"
msgstr "最大日誌紀錄時間"
-#: core/app_settings.py:719
+#: core/app_settings.py:707
msgid "The maximum age in days of a log record"
msgstr ""
-#: core/app_settings.py:727
+#: core/app_settings.py:715
msgid "Retention time in message history"
msgstr ""
-#: core/app_settings.py:730
+#: core/app_settings.py:718
msgid "Retention time (in days) of a message in the message history section"
msgstr ""
-#: core/app_settings.py:737
+#: core/app_settings.py:725
msgid "Items per page"
msgstr "每頁的條目數量"
-#: core/app_settings.py:739
+#: core/app_settings.py:727
msgid "Number of displayed items per page"
msgstr ""
-#: core/app_settings.py:746
-msgid "Default top redirection"
-msgstr ""
-
-#: core/app_settings.py:748
-msgid "The default redirection used when no application is specified"
-msgstr ""
-
#: core/checks.py:15
msgid ""
"You have USE_TZ set to False, this may result in issues during transitions "
@@ -2328,7 +2325,7 @@ msgid "Not resolved"
msgstr "未定義"
#: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
-#: webmail/constants.py:18
+#: webmail/constants.py:38
msgid "None"
msgstr "沒有"
@@ -3271,7 +3268,7 @@ msgstr ""
msgid "is not"
msgstr ""
-#: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
+#: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
msgid "Subject"
msgstr "主旨"
@@ -3521,23 +3518,23 @@ msgstr "最大附件大小的位元組 (假如有指定可以是 KB, MB, GB)"
msgid "SMTP settings"
msgstr "SMTP 設定"
-#: webmail/app_settings.py:75
+#: webmail/app_settings.py:75 webmail/app_settings.py:121
msgid "Address of your SMTP server"
msgstr "您的 SMTP 伺服器位址"
-#: webmail/app_settings.py:82
+#: webmail/app_settings.py:82 webmail/app_settings.py:128
#, fuzzy
#| msgid "Use a secured connection"
msgid "Secured connection mode"
msgstr "安全連線模式"
-#: webmail/app_settings.py:84
+#: webmail/app_settings.py:84 webmail/app_settings.py:130
#, fuzzy
#| msgid "Use an SSL/STARTTLS connection to access the LDAP server"
msgid "Use a secured connection to access SMTP server"
msgstr "使用安全的連線來存取 SMTP 伺服器"
-#: webmail/app_settings.py:93
+#: webmail/app_settings.py:93 webmail/app_settings.py:139
msgid "Listening port of your SMTP server"
msgstr "您的 SMTP 伺服器的連接埠"
@@ -3552,113 +3549,119 @@ msgstr "必須驗證"
msgid "Server needs authentication"
msgstr "伺服器需要驗證"
-#: webmail/app_settings.py:124
+#: webmail/app_settings.py:113
+#, fuzzy
+#| msgid "LDAP settings"
+msgid "Scheduling settings"
+msgstr "LDAP 設定"
+
+#: webmail/app_settings.py:161
msgid "Default message display mode"
msgstr "預設訊息顯示模式"
-#: webmail/app_settings.py:126
+#: webmail/app_settings.py:163
msgid "The default mode used when displaying a message"
msgstr "當正在顯示訊息時會使用預設模式"
-#: webmail/app_settings.py:133
+#: webmail/app_settings.py:170
msgid "Enable HTML links display"
msgstr "啟用 HTMK 顯示連結"
-#: webmail/app_settings.py:136
+#: webmail/app_settings.py:173
msgid "Enable/Disable HTML links display"
msgstr "啟用/停用 HTMK 顯示連結"
-#: webmail/app_settings.py:147
+#: webmail/app_settings.py:184
msgid "Sets the maximum number of messages displayed in a page"
msgstr "設定最大每一頁顯示郵件數量"
-#: webmail/app_settings.py:154
+#: webmail/app_settings.py:191
msgid "Listing refresh rate"
msgstr "列出重整頻率"
-#: webmail/app_settings.py:156
+#: webmail/app_settings.py:193
msgid "Automatic listing refresh rate (in secconds)"
msgstr ""
-#: webmail/app_settings.py:163
+#: webmail/app_settings.py:200
msgid "Folder container's width"
msgstr "資料夾寬度"
-#: webmail/app_settings.py:165
+#: webmail/app_settings.py:202
msgid "The width of the folder list container"
msgstr "資料夾列表寬度"
-#: webmail/app_settings.py:176
+#: webmail/app_settings.py:213
#, fuzzy
#| msgid "Create aliases"
msgid "Folders"
msgstr "資料夾"
-#: webmail/app_settings.py:182
+#: webmail/app_settings.py:219
#, fuzzy
#| msgid "Create aliases"
msgid "Trash folder"
msgstr "垃圾筒"
-#: webmail/app_settings.py:184
+#: webmail/app_settings.py:221
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where deleted messages go"
msgstr "已刪除郵件的資料夾"
-#: webmail/app_settings.py:191
+#: webmail/app_settings.py:228
#, fuzzy
#| msgid "Create aliases"
msgid "Sent folder"
msgstr "寄件夾"
-#: webmail/app_settings.py:193
+#: webmail/app_settings.py:230
msgid "Folder where copies of sent messages go"
msgstr "已寄出郵件的資料夾"
-#: webmail/app_settings.py:200
+#: webmail/app_settings.py:237
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts folder"
msgstr "草稿"
-#: webmail/app_settings.py:201
+#: webmail/app_settings.py:238
msgid "Folder where drafts go"
msgstr "草稿郵件的資料夾"
-#: webmail/app_settings.py:207
+#: webmail/app_settings.py:244
#, fuzzy
#| msgid "Create aliases"
msgid "Junk folder"
msgstr "垃圾信資料夾"
-#: webmail/app_settings.py:209
+#: webmail/app_settings.py:246
#, fuzzy
#| msgid "rejected messages"
msgid "Folder where junk messages should go"
msgstr "垃圾郵件的資料夾"
-#: webmail/app_settings.py:220
+#: webmail/app_settings.py:257
#, fuzzy
#| msgid "sent messages"
msgid "Composing messages"
msgstr "編寫郵件"
-#: webmail/app_settings.py:226
+#: webmail/app_settings.py:263
#, fuzzy
#| msgid "Default subject"
msgid "Default editor"
msgstr "預設編輯器"
-#: webmail/app_settings.py:228
+#: webmail/app_settings.py:265
msgid "The default editor to use when composing a message"
msgstr "當編寫郵件時會使用預設編輯器"
-#: webmail/app_settings.py:235
+#: webmail/app_settings.py:272
msgid "Signature text"
msgstr "簽名文字"
-#: webmail/app_settings.py:237
+#: webmail/app_settings.py:274
msgid "User defined email signature"
msgstr "使用者定義郵件簽名"
@@ -3673,47 +3676,66 @@ msgstr "伺服器位址"
msgid "Failed to remove attachment: "
msgstr "移除附件失敗:"
-#: webmail/lib/imapemail.py:272
+#: webmail/lib/imapemail.py:270
msgid "wrote:"
msgstr ""
-#: webmail/lib/imapemail.py:306
+#: webmail/lib/imapemail.py:304
msgid "Date"
msgstr "日期"
-#: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
+#: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
#, fuzzy
#| msgid "sent messages"
msgid "Original message"
msgstr "已發訊息"
-#: webmail/lib/imaputils.py:221
+#: webmail/lib/imaputils.py:222
msgid "Failed to retrieve hierarchy delimiter"
msgstr "無法檢查層次分隔"
-#: webmail/lib/imaputils.py:472
+#: webmail/lib/imaputils.py:478
msgid "Inbox"
msgstr "收件夾"
-#: webmail/lib/imaputils.py:476
+#: webmail/lib/imaputils.py:482
#, fuzzy
#| msgid "Create aliases"
msgid "Drafts"
msgstr "草稿"
-#: webmail/lib/imaputils.py:481
+#: webmail/lib/imaputils.py:487
msgid "Junk"
msgstr "垃圾信"
-#: webmail/lib/imaputils.py:486
+#: webmail/lib/imaputils.py:492
msgid "Sent"
msgstr "寄件夾"
-#: webmail/lib/imaputils.py:491
+#: webmail/lib/imaputils.py:500
+msgid "Scheduled"
+msgstr ""
+
+#: webmail/lib/imaputils.py:507
msgid "Trash"
msgstr "垃圾筒"
-#: webmail/viewsets.py:357
+#: webmail/serializers.py:220
+msgid "Moving scheduled messages is forbidden"
+msgstr ""
+
+#: webmail/serializers.py:253
+msgid "Only datetime in the future is allowed"
+msgstr ""
+
+#: webmail/serializers.py:258
+msgid "Provived datetime must be one minute in the future at least"
+msgstr ""
+
+#: webmail/viewsets.py:359
#, python-format
msgid "Attachment is too big (limit: %s)"
msgstr "附件太大 (限制: %s)"
+
+#~ msgid "User profile"
+#~ msgstr "使用者檔案"