modoboa 2.6.4__py3-none-any.whl → 2.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. modoboa/admin/api/v2/serializers.py +1 -0
  2. modoboa/admin/app_settings.py +12 -0
  3. modoboa/admin/{management/commands/subcommands/_mx.py → dns_checker.py} +41 -111
  4. modoboa/admin/jobs.py +86 -0
  5. modoboa/admin/management/commands/modo.py +0 -2
  6. modoboa/admin/tests/test_mailbox_operations.py +4 -4
  7. modoboa/admin/tests/test_mx.py +68 -56
  8. modoboa/amavis/jobs.py +11 -0
  9. modoboa/amavis/tests/test_jobs.py +18 -0
  10. modoboa/amavis/tests/test_viewsets.py +2 -3
  11. modoboa/autoconfig/templates/autoconfig/autoconfig.xml +2 -2
  12. modoboa/autoconfig/templates/autoconfig/autodiscover.xml +14 -0
  13. modoboa/autoconfig/tests.py +2 -1
  14. modoboa/autoconfig/views.py +11 -3
  15. modoboa/autoreply/models.py +4 -4
  16. modoboa/calendars/backends/caldav_.py +17 -13
  17. modoboa/calendars/jobs.py +7 -0
  18. modoboa/calendars/mocks.py +4 -1
  19. modoboa/calendars/serializers.py +14 -9
  20. modoboa/calendars/tests.py +10 -9
  21. modoboa/calendars/viewsets.py +3 -1
  22. modoboa/contacts/migrations/0008_addressbook_syncing.py +18 -0
  23. modoboa/contacts/models.py +1 -0
  24. modoboa/contacts/serializers.py +5 -2
  25. modoboa/contacts/tasks.py +9 -3
  26. modoboa/contacts/tests.py +32 -6
  27. modoboa/contacts/viewsets.py +7 -1
  28. modoboa/core/api/v2/serializers.py +0 -7
  29. modoboa/core/api/v2/tests.py +0 -10
  30. modoboa/core/app_settings.py +0 -22
  31. modoboa/core/commands/deploy.py +13 -0
  32. modoboa/core/commands/templates/cron_config.py.tpl +33 -0
  33. modoboa/core/commands/templates/settings.py.tpl +21 -0
  34. modoboa/core/jobs.py +34 -0
  35. modoboa/core/management/commands/load_initial_data.py +1 -1
  36. modoboa/core/password_hashers/base.py +4 -1
  37. modoboa/core/tests/test_core.py +0 -14
  38. modoboa/core/tests/test_jobs.py +40 -0
  39. modoboa/frontend_dist/assets/{AccountAliasForm-tLHotdIR.js → AccountAliasForm-DO6DwfjE.js} +1 -1
  40. modoboa/frontend_dist/assets/{AccountEditView-DnQIIg47.js → AccountEditView-CCuN9mGB.js} +1 -1
  41. modoboa/frontend_dist/assets/AccountLayout-Ge7fzuZg.js +1 -0
  42. modoboa/frontend_dist/assets/AccountPasswordSubForm-PkFPblkR.js +1 -0
  43. modoboa/frontend_dist/assets/AccountView-dgseekZ8.js +1 -0
  44. modoboa/frontend_dist/assets/AddressBook-DZWOHOJj.js +1 -0
  45. modoboa/frontend_dist/assets/AdminLayout-itB_mmH_.js +1 -0
  46. modoboa/frontend_dist/assets/AlarmsView-King6zb6.js +1 -0
  47. modoboa/frontend_dist/assets/{AliasEditView-n75NEN_s.js → AliasEditView-CTjrXYPf.js} +1 -1
  48. modoboa/frontend_dist/assets/AliasRecipientForm-CI7bXqVp.js +1 -0
  49. modoboa/frontend_dist/assets/{AliasView-DFIvPeIm.js → AliasView-BN13MNN_.js} +1 -1
  50. modoboa/frontend_dist/assets/AuditTrailView-C1jQwgoo.js +1 -0
  51. modoboa/frontend_dist/assets/CalendarView-juHVIHU5.css +1 -0
  52. modoboa/frontend_dist/assets/CalendarView-rRSzqxrH.js +1 -0
  53. modoboa/frontend_dist/assets/ChoiceField-DCr12shR.js +1 -0
  54. modoboa/frontend_dist/assets/ComposeEmailForm-BmtKwFb1.js +2 -0
  55. modoboa/frontend_dist/assets/ComposeEmailForm-CVNDl-Mq.css +1 -0
  56. modoboa/frontend_dist/assets/ComposeEmailView-JW22Phrb.js +1 -0
  57. modoboa/frontend_dist/assets/ConfirmDialog-CWpdwSQ6.js +1 -0
  58. modoboa/frontend_dist/assets/ConnectedLayout-BP8pO27H.js +1 -0
  59. modoboa/frontend_dist/assets/{ConnectedLayout-C6HNXWkp.css → ConnectedLayout-Ddpb_6yT.css} +1 -1
  60. modoboa/frontend_dist/assets/CreationForm-CzelJsVQ.js +1 -0
  61. modoboa/frontend_dist/assets/DashboardView-BBkBodVj.js +1 -0
  62. modoboa/frontend_dist/assets/{DomainAdminList-BjtfbhRj.js → DomainAdminList-DD7p3i6F.js} +1 -1
  63. modoboa/frontend_dist/assets/{DomainEditView-Cq5Ea4RW.js → DomainEditView-DoIoNYC4.js} +1 -1
  64. modoboa/frontend_dist/assets/{DomainTransportForm-DAXJGNLA.js → DomainTransportForm-CbiJF9z5.js} +1 -1
  65. modoboa/frontend_dist/assets/{DomainView-BfpK7U14.js → DomainView-BXvznFYz.js} +3 -3
  66. modoboa/frontend_dist/assets/DomainsView-ffYjiffp.js +1 -0
  67. modoboa/frontend_dist/assets/EmailField-KhhJYA4D.js +1 -0
  68. modoboa/frontend_dist/assets/EmailSchedulingForm-CQL5Vfdr.js +1 -0
  69. modoboa/frontend_dist/assets/EmailView-Bq2bHZBO.js +1 -0
  70. modoboa/frontend_dist/assets/EmptyLayout-NrTftp18.js +1 -0
  71. modoboa/frontend_dist/assets/FiltersView-SOQy0U_3.js +1 -0
  72. modoboa/frontend_dist/assets/ForwardEmailView-kEPDjWUw.js +1 -0
  73. modoboa/frontend_dist/assets/{HtmlEditor-D753fIAJ.js → HtmlEditor-CyBl5wj2.js} +15 -15
  74. modoboa/frontend_dist/assets/IdentitiesView-CZFf4oR9.js +1 -0
  75. modoboa/frontend_dist/assets/InformationView-CAtneAqM.js +1 -0
  76. modoboa/frontend_dist/assets/{LoadingData-Tm56XNwj.js → LoadingData-C2txD49L.js} +1 -1
  77. modoboa/frontend_dist/assets/{LoginCallbackView-DjCHUgz5.js → LoginCallbackView-DAvty3CI.js} +1 -1
  78. modoboa/frontend_dist/assets/{LoginView-D0r4XBEl.js → LoginView-DHYITkn4.js} +1 -1
  79. modoboa/frontend_dist/assets/MailboxView-BNg2v7mi.css +1 -0
  80. modoboa/frontend_dist/assets/MailboxView-DHg5A78D.js +5 -0
  81. modoboa/frontend_dist/assets/MenuItems-C9p70bSC.js +1 -0
  82. modoboa/frontend_dist/assets/{MessageView-BWh9BqzS.js → MessageView-CrrEJpNI.js} +1 -1
  83. modoboa/frontend_dist/assets/MessagesView-CyecRd4I.js +1 -0
  84. modoboa/frontend_dist/assets/MigrationsView-DXGKKz2h.js +1 -0
  85. modoboa/frontend_dist/assets/{ParametersForm-y02-GM0r.js → ParametersForm-DFKYkPAs.js} +1 -1
  86. modoboa/frontend_dist/assets/ParametersView-B1wT5oyt.js +1 -0
  87. modoboa/frontend_dist/assets/ParametersView-CfvVzKea.js +1 -0
  88. modoboa/frontend_dist/assets/ProviderEditView-De-8ggBp.js +1 -0
  89. modoboa/frontend_dist/assets/ProviderGeneralForm-DO-IpJMQ.js +1 -0
  90. modoboa/frontend_dist/assets/ProvidersView-Bhk7sCz4.js +1 -0
  91. modoboa/frontend_dist/assets/QuarantineLayout-C1YszNmP.js +1 -0
  92. modoboa/frontend_dist/assets/QuarantineView-cElD_rS-.js +1 -0
  93. modoboa/frontend_dist/assets/ReplyEmailView-BvuOZdLl.js +1 -0
  94. modoboa/frontend_dist/assets/ResourcesForm-FWxrmVwo.js +1 -0
  95. modoboa/frontend_dist/assets/SelfServiceLayout-JHRvfvQf.js +1 -0
  96. modoboa/frontend_dist/assets/SettingsView-SIsKAXtQ.css +1 -0
  97. modoboa/frontend_dist/assets/SettingsView-s2l2Xl1L.js +6 -0
  98. modoboa/frontend_dist/assets/StatisticsView-FiidWvad.js +1 -0
  99. modoboa/frontend_dist/assets/TimeSerieChart-CdqUHiO_.js +1 -0
  100. modoboa/frontend_dist/assets/TimeSerieChart-nLIFGI0y.css +1 -0
  101. modoboa/frontend_dist/assets/UserLayout-DyvI8duf.js +1 -0
  102. modoboa/frontend_dist/assets/{VAlert-CNys_LUS.js → VAlert-MDbeolOo.js} +1 -1
  103. modoboa/frontend_dist/assets/VApp-DM1KLQfQ.js +1 -0
  104. modoboa/frontend_dist/assets/VAutocomplete-C9NL5_uo.css +1 -0
  105. modoboa/frontend_dist/assets/VAutocomplete-CQsWYWNX.js +1 -0
  106. modoboa/frontend_dist/assets/VAvatar-CXV_FqpP.js +1 -0
  107. modoboa/frontend_dist/assets/VBadge-7tDx7aI3.js +1 -0
  108. modoboa/frontend_dist/assets/{VCard-BoH6kjPa.js → VCard-CBtX8JF-.js} +1 -1
  109. modoboa/frontend_dist/assets/VCheckbox-zY1MApOy.js +1 -0
  110. modoboa/frontend_dist/assets/{VCheckboxBtn-Ccl786Rg.js → VCheckboxBtn-B0mIT3E0.js} +1 -1
  111. modoboa/frontend_dist/assets/VColorPicker-BbCHvk6K.js +1 -0
  112. modoboa/frontend_dist/assets/{VColorPicker-B_lVDaYR.css → VColorPicker-C9m8L-6U.css} +1 -1
  113. modoboa/frontend_dist/assets/{VContainer-DKMcKasC.js → VContainer-Cn-vKB3s.js} +1 -1
  114. modoboa/frontend_dist/assets/VDataTable-CNT9KOSp.js +1 -0
  115. modoboa/frontend_dist/assets/VDataTableServer-_yn4Ry6U.js +1 -0
  116. modoboa/frontend_dist/assets/VDataTableVirtual-Csxh3Gp6.js +1 -0
  117. modoboa/frontend_dist/assets/VDatePicker-_OUDqShN.css +1 -0
  118. modoboa/frontend_dist/assets/VDatePicker-iFu13xIP.js +2 -0
  119. modoboa/frontend_dist/assets/VDialog-lKtBdqnp.js +1 -0
  120. modoboa/frontend_dist/assets/VExpansionPanels-CaIvk9iF.js +1 -0
  121. modoboa/frontend_dist/assets/VFileInput-C7J_qVmk.js +1 -0
  122. modoboa/frontend_dist/assets/VForm-fdQ5d-CH.js +1 -0
  123. modoboa/frontend_dist/assets/VInput-BwHvhzAe.js +1 -0
  124. modoboa/frontend_dist/assets/VMenu-BpmJf4X2.js +1 -0
  125. modoboa/frontend_dist/assets/VMenu-C5A_5Hs5.css +1 -0
  126. modoboa/frontend_dist/assets/VPicker-B7cB3kJg.css +1 -0
  127. modoboa/frontend_dist/assets/VPicker-BZho70wU.js +1 -0
  128. modoboa/frontend_dist/assets/VProgressCircular-DRw_-iNj.js +1 -0
  129. modoboa/frontend_dist/assets/VRadioGroup--eiP5xtJ.js +1 -0
  130. modoboa/frontend_dist/assets/{VRow-CuVZGqBj.js → VRow-83Qnr5iB.js} +1 -1
  131. modoboa/frontend_dist/assets/VSelect-BcmGFGif.js +1 -0
  132. modoboa/frontend_dist/assets/{VSelectionControl-uKY9Zull.js → VSelectionControl-Cqi1xt-q.js} +1 -1
  133. modoboa/frontend_dist/assets/VSheet-C3MaHhtw.js +1 -0
  134. modoboa/frontend_dist/assets/VSpacer-CuSkdJZL.js +1 -0
  135. modoboa/frontend_dist/assets/VSwitch-XumUl685.js +1 -0
  136. modoboa/frontend_dist/assets/{VTable-gDsAUSLX.js → VTable-f7wcr2AZ.js} +1 -1
  137. modoboa/frontend_dist/assets/VTabs-CDfdejXj.css +1 -0
  138. modoboa/frontend_dist/assets/VTabs-y4wNP4im.js +1 -0
  139. modoboa/frontend_dist/assets/VTextField-BPIvtrn4.js +1 -0
  140. modoboa/frontend_dist/assets/VTextField-DjbYGlzs.css +1 -0
  141. modoboa/frontend_dist/assets/VTextarea-B6bGYcC3.js +1 -0
  142. modoboa/frontend_dist/assets/VTextarea-f6vTjzFy.css +1 -0
  143. modoboa/frontend_dist/assets/VToolbar-BYDPtwf0.css +1 -0
  144. modoboa/frontend_dist/assets/VToolbar-CB6wwtYc.js +1 -0
  145. modoboa/frontend_dist/assets/VWindowItem-CDtLLEkg.js +1 -0
  146. modoboa/frontend_dist/assets/WebmailLayout-CQQAolnl.css +1 -0
  147. modoboa/frontend_dist/assets/WebmailLayout-tosQSHLS.js +1 -0
  148. modoboa/frontend_dist/assets/{accounts-DqbBlaLK.js → accounts-KUsk6LHW.js} +1 -1
  149. modoboa/frontend_dist/assets/{admin-D36m_nXq.js → admin-BW9cZW0P.js} +1 -1
  150. modoboa/frontend_dist/assets/{aliases-BtyF8GC8.js → aliases-Ge0hjIsH.js} +1 -1
  151. modoboa/frontend_dist/assets/{amavis-DySmsCJQ.js → amavis-BbFeFfsk.js} +1 -1
  152. modoboa/frontend_dist/assets/{amavis-B4QhM5Fa.js → amavis-DtuzP_CS.js} +1 -1
  153. modoboa/frontend_dist/assets/{contacts-Df8ptuMn.js → contacts-DMJlQTe0.js} +1 -1
  154. modoboa/frontend_dist/assets/{domains-CSxtTvUh.js → domains-Du64lcXT.js} +1 -1
  155. modoboa/frontend_dist/assets/domains.store-1U61jeCV.js +1 -0
  156. modoboa/frontend_dist/assets/events-BM3in65C.js +1 -0
  157. modoboa/frontend_dist/assets/filter-Dihm6o59.js +1 -0
  158. modoboa/frontend_dist/assets/importExport-HGcNGWOm.js +1 -0
  159. modoboa/frontend_dist/assets/{index-B9q1vO3K.css → index-B1EK3MQe.css} +1 -1
  160. modoboa/frontend_dist/assets/{index-Bp9Fb67E.js → index-Dv00bmw9.js} +1 -1
  161. modoboa/frontend_dist/assets/index-jui3edpn.js +1001 -0
  162. modoboa/frontend_dist/assets/{language.store-_-zrrEiS.js → language.store-OcfdXL_-.js} +1 -1
  163. modoboa/frontend_dist/assets/languages-CF8hxo7x.js +1 -0
  164. modoboa/frontend_dist/assets/{layout-CjSP_k58.js → layout-DOO7TRTJ.js} +1 -1
  165. modoboa/frontend_dist/assets/{layout.store-CF5WRevH.js → layout.store-C0g-piJn.js} +1 -1
  166. modoboa/frontend_dist/assets/{logos-95XYS6uH.js → logos-Dz2Gzei-.js} +1 -1
  167. modoboa/frontend_dist/assets/{logs-CyU_PIDh.js → logs-CLm32Weu.js} +1 -1
  168. modoboa/frontend_dist/assets/{parameters-BxAXBXU1.js → parameters-DMIAQ7cd.js} +1 -1
  169. modoboa/frontend_dist/assets/{parameters.store-CATOSoQZ.js → parameters.store-DLnFzCwV.js} +1 -1
  170. modoboa/frontend_dist/assets/{permissions-cSkGqV3M.js → permissions-CrpE0b4w.js} +1 -1
  171. modoboa/frontend_dist/assets/{ssrBoot-05WtbG6H.js → ssrBoot-B7cr7q9U.js} +1 -1
  172. modoboa/frontend_dist/assets/{tag-BmV84V2s.js → tag-WF93n81Q.js} +1 -1
  173. modoboa/frontend_dist/assets/{theme-myV4ekXo.js → theme-_0oOYChG.js} +1 -1
  174. modoboa/frontend_dist/assets/transports-CS61syt-.js +1 -0
  175. modoboa/frontend_dist/assets/webmail-CYDXU0DS.js +1 -0
  176. modoboa/frontend_dist/assets/webmail.store-BvHCQSjM.js +1 -0
  177. modoboa/frontend_dist/index.html +2 -2
  178. modoboa/imap_migration/api/v2/serializers.py +13 -0
  179. modoboa/imap_migration/models.py +3 -3
  180. modoboa/imap_migration/templates/imap_migration/offlineimap.conf +2 -2
  181. modoboa/imap_migration/tests.py +28 -0
  182. modoboa/lib/cryptutils.py +2 -2
  183. modoboa/lib/sysutils.py +1 -1
  184. modoboa/lib/tests/__init__.py +0 -1
  185. modoboa/locale/br/LC_MESSAGES/django.mo +0 -0
  186. modoboa/locale/br/LC_MESSAGES/django.po +753 -317
  187. modoboa/locale/cs/LC_MESSAGES/django.po +671 -309
  188. modoboa/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  189. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +801 -378
  190. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  191. modoboa/locale/de/LC_MESSAGES/django.po +1116 -455
  192. modoboa/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/de_DE/LC_MESSAGES/django.po +745 -318
  194. modoboa/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  195. modoboa/locale/el_GR/LC_MESSAGES/django.po +825 -393
  196. modoboa/locale/en/LC_MESSAGES/django.po +669 -309
  197. modoboa/locale/es/LC_MESSAGES/django.mo +0 -0
  198. modoboa/locale/es/LC_MESSAGES/django.po +810 -390
  199. modoboa/locale/es_MX/LC_MESSAGES/django.po +669 -309
  200. modoboa/locale/fi/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/fi/LC_MESSAGES/django.po +756 -316
  202. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  203. modoboa/locale/fr/LC_MESSAGES/django.po +674 -313
  204. modoboa/locale/hu/LC_MESSAGES/django.po +669 -309
  205. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/it/LC_MESSAGES/django.po +807 -380
  207. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  208. modoboa/locale/ja_JP/LC_MESSAGES/django.po +951 -419
  209. modoboa/locale/ka/LC_MESSAGES/django.po +669 -309
  210. modoboa/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  211. modoboa/locale/nl_NL/LC_MESSAGES/django.po +807 -387
  212. modoboa/locale/no/LC_MESSAGES/django.po +669 -309
  213. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/pl_PL/LC_MESSAGES/django.po +826 -396
  215. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  216. modoboa/locale/pt_BR/LC_MESSAGES/django.po +830 -392
  217. modoboa/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  218. modoboa/locale/pt_PT/LC_MESSAGES/django.po +788 -371
  219. modoboa/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  220. modoboa/locale/ro_RO/LC_MESSAGES/django.po +763 -316
  221. modoboa/locale/ru/LC_MESSAGES/django.mo +0 -0
  222. modoboa/locale/ru/LC_MESSAGES/django.po +1336 -1046
  223. modoboa/locale/si/LC_MESSAGES/django.po +669 -309
  224. modoboa/locale/sk/LC_MESSAGES/django.po +671 -309
  225. modoboa/locale/sk_SK/LC_MESSAGES/django.po +671 -309
  226. modoboa/locale/sl_SI/LC_MESSAGES/django.po +695 -315
  227. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  228. modoboa/locale/sv/LC_MESSAGES/django.po +819 -387
  229. modoboa/locale/tr/LC_MESSAGES/django.mo +0 -0
  230. modoboa/locale/tr/LC_MESSAGES/django.po +737 -315
  231. modoboa/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  232. modoboa/locale/tr_TR/LC_MESSAGES/django.po +711 -310
  233. modoboa/locale/uk/LC_MESSAGES/django.po +671 -309
  234. modoboa/locale/zh/LC_MESSAGES/django.po +668 -309
  235. modoboa/locale/zh_CN/LC_MESSAGES/django.po +668 -309
  236. modoboa/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  237. modoboa/locale/zh_TW/LC_MESSAGES/django.po +747 -316
  238. modoboa/maillog/jobs.py +11 -0
  239. modoboa/maillog/tests/test_views.py +5 -4
  240. modoboa/parameters/api/v2/tests.py +1 -1
  241. modoboa/policyd/management/commands/policy_daemon.py +5 -1
  242. modoboa/policyd/tests.py +4 -2
  243. modoboa/rspamd/tests.py +20 -0
  244. modoboa/templates/registration/twofactor_code_verify.html +1 -1
  245. modoboa/webmail/app_settings.py +37 -0
  246. modoboa/webmail/constants.py +21 -1
  247. modoboa/webmail/factories.py +19 -0
  248. modoboa/webmail/jobs.py +27 -0
  249. modoboa/webmail/lib/__init__.py +0 -2
  250. modoboa/webmail/lib/imapemail.py +9 -11
  251. modoboa/webmail/lib/imapheader.py +25 -13
  252. modoboa/webmail/lib/imaputils.py +51 -13
  253. modoboa/webmail/lib/sendmail.py +88 -105
  254. modoboa/webmail/lib/utils.py +109 -0
  255. modoboa/webmail/migrations/0001_initial.py +90 -0
  256. modoboa/webmail/migrations/__init__.py +0 -0
  257. modoboa/webmail/mocks.py +12 -3
  258. modoboa/webmail/models.py +102 -0
  259. modoboa/webmail/serializers.py +84 -4
  260. modoboa/webmail/tests/data.py +21 -0
  261. modoboa/webmail/tests/test_lib_imaputils.py +33 -0
  262. modoboa/webmail/tests/test_viewsets.py +108 -0
  263. modoboa/webmail/urls.py +5 -0
  264. modoboa/webmail/viewsets.py +39 -9
  265. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/METADATA +16 -13
  266. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/RECORD +271 -254
  267. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/WHEEL +1 -1
  268. modoboa/admin/management/commands/handle_mailbox_operations.py +0 -103
  269. modoboa/core/management/commands/cleanlogs.py +0 -53
  270. modoboa/frontend_dist/assets/AccountLayout-B2HptJzY.js +0 -1
  271. modoboa/frontend_dist/assets/AccountPasswordSubForm-DpADntAL.js +0 -1
  272. modoboa/frontend_dist/assets/AccountView-CJBGh9Oe.js +0 -1
  273. modoboa/frontend_dist/assets/AddressBook-CrFqzlzZ.js +0 -1
  274. modoboa/frontend_dist/assets/AdminLayout-BbCt7YxX.js +0 -1
  275. modoboa/frontend_dist/assets/AlarmsView-CIlt_IKQ.js +0 -1
  276. modoboa/frontend_dist/assets/AliasRecipientForm-jjj5yJJw.js +0 -1
  277. modoboa/frontend_dist/assets/AuditTrailView-sWnED3E9.js +0 -1
  278. modoboa/frontend_dist/assets/CalendarView-DSCBIvef.js +0 -1
  279. modoboa/frontend_dist/assets/ChoiceField-RDT6XcnX.js +0 -1
  280. modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +0 -1
  281. modoboa/frontend_dist/assets/ComposeEmailForm-G3sXQAwI.js +0 -1
  282. modoboa/frontend_dist/assets/ComposeEmailView-Ce1CtFjD.js +0 -1
  283. modoboa/frontend_dist/assets/ConfirmDialog-Du7aqKbR.js +0 -1
  284. modoboa/frontend_dist/assets/ConnectedLayout-BHWaBAzH.js +0 -1
  285. modoboa/frontend_dist/assets/CreationForm-CjtILq0_.js +0 -1
  286. modoboa/frontend_dist/assets/DashboardView-DFNwusDZ.js +0 -1
  287. modoboa/frontend_dist/assets/DomainsView-CYxLy-3Y.js +0 -1
  288. modoboa/frontend_dist/assets/EmailField-DmPc4pyP.js +0 -1
  289. modoboa/frontend_dist/assets/EmailView-BE3vYZtJ.js +0 -1
  290. modoboa/frontend_dist/assets/EmptyLayout-DMwKNHfI.js +0 -1
  291. modoboa/frontend_dist/assets/FiltersView-Dps3_fAh.js +0 -1
  292. modoboa/frontend_dist/assets/ForwardEmailView-C0I00eXf.js +0 -1
  293. modoboa/frontend_dist/assets/IdentitiesView-CoGBVhZx.js +0 -1
  294. modoboa/frontend_dist/assets/InformationView-eB2ayeLD.js +0 -1
  295. modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +0 -1
  296. modoboa/frontend_dist/assets/MailboxView-DNokO2WZ.js +0 -5
  297. modoboa/frontend_dist/assets/MenuItems-dl38msRA.js +0 -1
  298. modoboa/frontend_dist/assets/MessagesView-BZ7NUOwo.js +0 -1
  299. modoboa/frontend_dist/assets/MigrationsView-DcOVgmcH.js +0 -1
  300. modoboa/frontend_dist/assets/ParametersView-B6abt-LH.js +0 -1
  301. modoboa/frontend_dist/assets/ParametersView-v0YS6WU4.js +0 -1
  302. modoboa/frontend_dist/assets/ProviderEditView-BaL9mKxJ.js +0 -1
  303. modoboa/frontend_dist/assets/ProviderGeneralForm-eoHMDO5v.js +0 -1
  304. modoboa/frontend_dist/assets/ProvidersView-Zu-G35u7.js +0 -1
  305. modoboa/frontend_dist/assets/QuarantineLayout-BHiiksnP.js +0 -1
  306. modoboa/frontend_dist/assets/QuarantineView-BOXSobRz.js +0 -1
  307. modoboa/frontend_dist/assets/ReplyEmailView-JmSiNWPy.js +0 -1
  308. modoboa/frontend_dist/assets/ResourcesForm-D0YBapCG.js +0 -1
  309. modoboa/frontend_dist/assets/SelfServiceLayout-DUmQzUDk.js +0 -1
  310. modoboa/frontend_dist/assets/SettingsView-DIvKGRBY.css +0 -1
  311. modoboa/frontend_dist/assets/SettingsView-DMuaKagM.js +0 -6
  312. modoboa/frontend_dist/assets/StatisticsView-CyY_CNcI.js +0 -1
  313. modoboa/frontend_dist/assets/TimeSerieChart-BTDBH33K.js +0 -1
  314. modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +0 -1
  315. modoboa/frontend_dist/assets/UserLayout-DwxcQr4L.js +0 -1
  316. modoboa/frontend_dist/assets/VApp-B0vRc3-6.js +0 -1
  317. modoboa/frontend_dist/assets/VAutocomplete-Huaz_-hf.js +0 -1
  318. modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +0 -1
  319. modoboa/frontend_dist/assets/VAvatar-JdJfoK0C.js +0 -1
  320. modoboa/frontend_dist/assets/VBadge-Cg5iu5LG.js +0 -1
  321. modoboa/frontend_dist/assets/VCheckbox-CCLOJFKF.js +0 -1
  322. modoboa/frontend_dist/assets/VColorPicker-452uc3tY.js +0 -1
  323. modoboa/frontend_dist/assets/VDataTable-BkLLfcQK.js +0 -1
  324. modoboa/frontend_dist/assets/VDataTableServer-B_6fWBA3.js +0 -1
  325. modoboa/frontend_dist/assets/VDataTableVirtual-Ike7oqcC.js +0 -1
  326. modoboa/frontend_dist/assets/VDialog-DIUeAIpw.js +0 -1
  327. modoboa/frontend_dist/assets/VExpansionPanels-BeMgiS7A.js +0 -1
  328. modoboa/frontend_dist/assets/VFileInput-Dvj95FL5.js +0 -1
  329. modoboa/frontend_dist/assets/VForm-DkphQD3e.js +0 -1
  330. modoboa/frontend_dist/assets/VInput-CbqehdOu.js +0 -1
  331. modoboa/frontend_dist/assets/VMenu-B6SCtOwT.js +0 -1
  332. modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +0 -1
  333. modoboa/frontend_dist/assets/VPicker-BUx70Wjg.js +0 -1
  334. modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +0 -1
  335. modoboa/frontend_dist/assets/VProgressCircular-DTDGzl2O.js +0 -1
  336. modoboa/frontend_dist/assets/VRadioGroup-CS9ULZ1c.js +0 -1
  337. modoboa/frontend_dist/assets/VSelect-D5IXDPEX.js +0 -1
  338. modoboa/frontend_dist/assets/VSheet-HeHw6g5_.js +0 -1
  339. modoboa/frontend_dist/assets/VSpacer-BUxSSJbH.js +0 -1
  340. modoboa/frontend_dist/assets/VSwitch-Dh_dserW.js +0 -1
  341. modoboa/frontend_dist/assets/VTabs-5XSICLQP.js +0 -1
  342. modoboa/frontend_dist/assets/VTabs-NzpINroH.css +0 -1
  343. modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +0 -1
  344. modoboa/frontend_dist/assets/VTextField-QXQFhKxm.js +0 -1
  345. modoboa/frontend_dist/assets/VTextarea-Bdy4UKmV.js +0 -1
  346. modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +0 -1
  347. modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +0 -1
  348. modoboa/frontend_dist/assets/VToolbar-CyrYSqJZ.js +0 -1
  349. modoboa/frontend_dist/assets/VWindowItem-kZpArwK1.js +0 -1
  350. modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +0 -1
  351. modoboa/frontend_dist/assets/WebmailLayout-CNUHODnw.js +0 -1
  352. modoboa/frontend_dist/assets/domains.store-D4ZqCQ-O.js +0 -1
  353. modoboa/frontend_dist/assets/filter-DHKXX97M.js +0 -1
  354. modoboa/frontend_dist/assets/global.store-DYMmGKpn.js +0 -1
  355. modoboa/frontend_dist/assets/importExport-C-adpHJX.js +0 -1
  356. modoboa/frontend_dist/assets/index-B1bntsLR.js +0 -995
  357. modoboa/frontend_dist/assets/languages-CxjoT69j.js +0 -1
  358. modoboa/frontend_dist/assets/transports-ChdHV5hX.js +0 -1
  359. modoboa/frontend_dist/assets/webmail-B7MNMkv_.js +0 -1
  360. modoboa/frontend_dist/assets/webmail.store-Cm-h6hhE.js +0 -1
  361. {modoboa-2.6.4.data → modoboa-2.7.0.data}/scripts/modoboa-admin.py +0 -0
  362. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/entry_points.txt +0 -0
  363. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/licenses/LICENSE +0 -0
  364. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/top_level.txt +0 -0
@@ -3,7 +3,7 @@
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
4
  #
5
5
  # Translators:
6
- # Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2025
6
+ # Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2026
7
7
  # Christophe CHAUVET <christophe.chauvet@gmail.com>, 2018
8
8
  # Icarus Flight, 2022
9
9
  # Icarus Flight, 2022
@@ -15,9 +15,9 @@ msgid ""
15
15
  msgstr ""
16
16
  "Project-Id-Version: Modoboa\n"
17
17
  "Report-Msgid-Bugs-To: \n"
18
- "POT-Creation-Date: 2025-08-28 09:41+0200\n"
18
+ "POT-Creation-Date: 2026-02-04 09:30+0100\n"
19
19
  "PO-Revision-Date: 2011-07-01 08:15+0000\n"
20
- "Last-Translator: Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2025\n"
20
+ "Last-Translator: Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2026\n"
21
21
  "Language-Team: French (http://app.transifex.com/tonio/modoboa/language/fr/)\n"
22
22
  "MIME-Version: 1.0\n"
23
23
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -48,14 +48,14 @@ msgid "Cannot be greater than domain quota"
48
48
  msgstr "Ne peut pas être supérieur au quota du domaine"
49
49
 
50
50
  #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
51
- #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
51
+ #: admin/api/v2/serializers.py:571 admin/models/alias.py:45
52
52
  msgid "Permission denied."
53
53
  msgstr "Permission refusée."
54
54
 
55
55
  #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
56
- #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
57
- #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
58
- #: transport/backends.py:40
56
+ #: admin/api/v2/serializers.py:492 amavis/serializers.py:39
57
+ #: core/api/v2/serializers.py:248 core/api/v2/serializers.py:250
58
+ #: core/api/v2/serializers.py:259 transport/backends.py:40
59
59
  msgid "This field is required"
60
60
  msgstr "Ce champ est requis"
61
61
 
@@ -64,7 +64,7 @@ msgid ""
64
64
  "List of administered domains (resellers and domain administrators only)."
65
65
  msgstr "Liste des domaines administrés (revendeurs et administrateurs de domaine seulement)."
66
66
 
67
- #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
67
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:553
68
68
  msgid "Not allowed for this role."
69
69
  msgstr "Non autorisé pour ce rôle."
70
70
 
@@ -72,13 +72,12 @@ msgstr "Non autorisé pour ce rôle."
72
72
  msgid "Must be equal to mailbox full_address"
73
73
  msgstr "Doit être égale au champ full_address dans mailbox"
74
74
 
75
- #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
76
- #: calendars/serializers.py:175 calendars/serializers.py:177
77
- #: pdfcredentials/api/v2/serializers.py:91
75
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:605
76
+ #: calendars/serializers.py:182 pdfcredentials/api/v2/serializers.py:91
78
77
  msgid "This field is required."
79
78
  msgstr "Ce champ est requis."
80
79
 
81
- #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
80
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:622
82
81
  msgid "Local domain {} does not exist"
83
82
  msgstr "Le domaine local {} n'existe pas"
84
83
 
@@ -86,7 +85,7 @@ msgstr "Le domaine local {} n'existe pas"
86
85
  msgid "A list of recipient"
87
86
  msgstr "Une liste de destinataire"
88
87
 
89
- #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
88
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:313
90
89
  msgid "This alias already exists"
91
90
  msgstr "Cet alias existe déjà"
92
91
 
@@ -119,47 +118,47 @@ msgstr "Vous ne pouvez pas définir de quota illimité"
119
118
  msgid "User '%s' already exists"
120
119
  msgstr "L'utilisateur '%s' existe déjà"
121
120
 
122
- #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
121
+ #: admin/api/v2/serializers.py:256 admin/api/v2/serializers.py:262
123
122
  msgid "Must be a positive integer"
124
123
  msgstr "Doit être un entier positif"
125
124
 
126
- #: admin/api/v2/serializers.py:265
125
+ #: admin/api/v2/serializers.py:271
127
126
  msgid "openssl not found, please make sure it is installed."
128
127
  msgstr "impossible de trouver openssl, veuillez vous assurer vous qu'il est installé."
129
128
 
130
- #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
129
+ #: admin/api/v2/serializers.py:274 pdfcredentials/api/v2/serializers.py:84
131
130
  msgid "Directory not found."
132
131
  msgstr "Répertoire introuvable."
133
132
 
134
- #: admin/api/v2/serializers.py:279
133
+ #: admin/api/v2/serializers.py:285
135
134
  msgid "This field only allows valid IP addresses (or networks)"
136
135
  msgstr "Ce champ n'autorise que des adresses IP correctes (ou des réseaux)"
137
136
 
138
- #: admin/api/v2/serializers.py:292
137
+ #: admin/api/v2/serializers.py:298
139
138
  msgid "Please disable imap migration before disabling this option."
140
139
  msgstr "Veuillez désactiver la migration IMAP avant de désactiver cette option"
141
140
 
142
- #: admin/api/v2/serializers.py:305
141
+ #: admin/api/v2/serializers.py:311
143
142
  msgid "Define at least one authorized network / address"
144
143
  msgstr "Définissez au moins un réseau / une adresse autorisé"
145
144
 
146
- #: admin/api/v2/serializers.py:581
145
+ #: admin/api/v2/serializers.py:588
147
146
  msgid "The left part of an email address can't be more than 64 characters."
148
147
  msgstr "La partie gauche d'un courriel ne peut pas faire plus de 64 caractères."
149
148
 
150
- #: admin/api/v2/serializers.py:603
149
+ #: admin/api/v2/serializers.py:610
151
150
  msgid "A mailbox is required to create aliases."
152
151
  msgstr "Une boîte aux lettres est requises pour créer des alias"
153
152
 
154
- #: admin/api/v2/serializers.py:772
153
+ #: admin/api/v2/serializers.py:783
155
154
  msgid "Unknown status"
156
155
  msgstr "Statut inconnu"
157
156
 
158
- #: admin/api/v2/viewsets.py:84
157
+ #: admin/api/v2/viewsets.py:95
159
158
  msgid "You don't have access to this domain"
160
159
  msgstr "Vous n'avez pas accès à ce domaine"
161
160
 
162
- #: admin/api/v2/viewsets.py:87
161
+ #: admin/api/v2/viewsets.py:98
163
162
  msgid "You can't delete your own domain"
164
163
  msgstr "Vous ne pouvez pas supprimer votre propre domaine"
165
164
 
@@ -243,114 +242,152 @@ msgstr "Activer les vérifications DNSBL"
243
242
  msgid "Check every domain against major DNSBL providers"
244
243
  msgstr "Vérifie chaque domaine auprès des fournisseurs de DNSBL"
245
244
 
246
- #: admin/app_settings.py:116
245
+ #: admin/app_settings.py:117
246
+ msgid "Notify domain admins about DNS issues"
247
+ msgstr "Notifier les administrateurs de domaine à propos des problèmes DNS"
248
+
249
+ #: admin/app_settings.py:120
250
+ msgid ""
251
+ "Send a notification by email to domain administrators when DNS issues are "
252
+ "encountered"
253
+ msgstr "Envoyer une notification email aux administrateurs de domaine quand des problèmes DNS sont rencontrés"
254
+
255
+ #: admin/app_settings.py:128
247
256
  msgid "Custom DNS server"
248
257
  msgstr "Serveur DNS personnalisé"
249
258
 
250
- #: admin/app_settings.py:118
259
+ #: admin/app_settings.py:130
251
260
  msgid "Use a custom DNS server instead of local server configuration"
252
261
  msgstr "Utiliser un serveur DNS personnalisé à la place de la configuration par défaut du serveur"
253
262
 
254
- #: admin/app_settings.py:126
263
+ #: admin/app_settings.py:138
255
264
  msgid "DKIM keys storage directory"
256
265
  msgstr "Répertoire de stockage des clés DKIM"
257
266
 
258
- #: admin/app_settings.py:128
267
+ #: admin/app_settings.py:140
259
268
  msgid ""
260
269
  "Absolute path of the directory where DKIM private keys will be stored. Make "
261
270
  "sure this directory belongs to root user and is not readable by the outside "
262
271
  "world."
263
272
  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."
264
273
 
265
- #: admin/app_settings.py:137
274
+ #: admin/app_settings.py:149
266
275
  msgid "Default DKIM key length"
267
276
  msgstr "Taille par défaut d'une clé DKIM"
268
277
 
269
- #: admin/app_settings.py:139
278
+ #: admin/app_settings.py:151
270
279
  msgid "Default length in bits for newly generated DKIM keys."
271
280
  msgstr "Taille par défaut en octets des clés DKIM nouvellement générées."
272
281
 
273
- #: admin/app_settings.py:146
282
+ #: admin/app_settings.py:158
274
283
  msgid "Default domain quota"
275
284
  msgstr "Quota de domaine par défaut"
276
285
 
277
- #: admin/app_settings.py:148
286
+ #: admin/app_settings.py:160
278
287
  msgid ""
279
288
  "Default quota (in MB) applied to freshly created domains with no value "
280
289
  "specified. A value of 0 means no quota."
281
290
  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é."
282
291
 
283
- #: admin/app_settings.py:156
292
+ #: admin/app_settings.py:168
284
293
  msgid "Default domain sending limit"
285
294
  msgstr "Limite d'envoi par défaut du domaine"
286
295
 
287
- #: admin/app_settings.py:158
296
+ #: admin/app_settings.py:170
288
297
  msgid ""
289
298
  "Number of messages freshly created domains will be allowed to send per day. "
290
299
  "Leave empty for no limit."
291
300
  msgstr "Nombre maximal de messages que les nouveaux domaines seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
292
301
 
293
- #: admin/app_settings.py:170 limits/app_settings.py:61
302
+ #: admin/app_settings.py:182 limits/app_settings.py:61
294
303
  #: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
295
304
  msgid "Mailboxes"
296
305
  msgstr "Boites"
297
306
 
298
- #: admin/app_settings.py:176
307
+ #: admin/app_settings.py:188
299
308
  msgid "Handle mailboxes on filesystem"
300
309
  msgstr "Gérer les boites sur le système de fichiers"
301
310
 
302
- #: admin/app_settings.py:178
311
+ #: admin/app_settings.py:190
303
312
  msgid ""
304
313
  "Rename or remove mailboxes on the filesystem when they get renamed or "
305
314
  "removed within Modoboa"
306
315
  msgstr "Renommer ou supprimer les boites sur le système de fichiers quand elles sont renommées ou supprimées dans Modoboa"
307
316
 
308
- #: admin/app_settings.py:186 admin/models/domain.py:36
317
+ #: admin/app_settings.py:198 admin/models/domain.py:36
309
318
  msgid "Default mailbox quota"
310
319
  msgstr "Quota par défaut pour une boîte aux lettres"
311
320
 
312
- #: admin/app_settings.py:188
321
+ #: admin/app_settings.py:200
313
322
  msgid ""
314
323
  "Default mailbox quota (in MB) applied to freshly created domains with no "
315
324
  "value specified. A value of 0 means no quota."
316
325
  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."
317
326
 
318
- #: admin/app_settings.py:197
327
+ #: admin/app_settings.py:209
319
328
  msgid "Default mailbox sending limit"
320
329
  msgstr "Limite d'envoi par défaut d'une boîte aux lettres"
321
330
 
322
- #: admin/app_settings.py:199
331
+ #: admin/app_settings.py:211
323
332
  msgid ""
324
333
  "Number of messages freshly created mailboxes will be allowed to send per "
325
334
  "day. Leave empty for no limit."
326
335
  msgstr "Nombre maximal de messages que les nouveaux comptes seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
327
336
 
328
- #: admin/app_settings.py:207
337
+ #: admin/app_settings.py:219
329
338
  msgid "Automatic account removal"
330
339
  msgstr "Suppression automatique de compte"
331
340
 
332
- #: admin/app_settings.py:209
341
+ #: admin/app_settings.py:221
333
342
  msgid "When a mailbox is removed, also remove the associated account"
334
343
  msgstr "Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en même temps"
335
344
 
336
- #: admin/app_settings.py:218
345
+ #: admin/app_settings.py:230
337
346
  msgid "Automatic domain/mailbox creation"
338
347
  msgstr "Création automatique de domaine/boite aux lettres"
339
348
 
340
- #: admin/app_settings.py:221
349
+ #: admin/app_settings.py:233
341
350
  msgid ""
342
351
  "Create a domain and a mailbox when an account is automatically created."
343
352
  msgstr "Créer un domaine et une boite aux lettres quand un compte est créé automatiquement."
344
353
 
345
- #: admin/app_settings.py:230
354
+ #: admin/app_settings.py:242
346
355
  msgid "Create an alias when a mailbox is renamed"
347
356
  msgstr "Créer un alias quand une boite aux lettres est renommée"
348
357
 
349
- #: admin/app_settings.py:233
358
+ #: admin/app_settings.py:245
350
359
  msgid "Create an alias using the old address when a mailbox is renamed."
351
360
  msgstr "Créer un alias en utilisant l'ancienne adresse quand une boite aux lettres est renommée."
352
361
 
353
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
362
+ #: admin/app_settings.py:257
363
+ msgid "Aliases"
364
+ msgstr "Alias"
365
+
366
+ #: admin/app_settings.py:263
367
+ msgid "Alias can target any domain"
368
+ msgstr "Les alias peuvent cibler n'importe quel domaine"
369
+
370
+ #: admin/app_settings.py:265
371
+ msgid "Allow aliases to target any domain, not just the local domains."
372
+ msgstr "Autoriser les alias à cibler n'importe quel domaine, pas uniquement les domaines locaux."
373
+
374
+ #: admin/app_settings.py:272
375
+ msgid "Alias target block list"
376
+ msgstr "Cibles interdites pour les alias"
377
+
378
+ #: admin/app_settings.py:274
379
+ msgid "A list of domains that aliases cannot target (comma separated)."
380
+ msgstr "Une liste de domaines que les alias ne peuvent pas cibler (séparés par une virgule)."
381
+
382
+ #: admin/app_settings.py:282
383
+ msgid "Alias target allow list"
384
+ msgstr "Cibles autorisées pour les alias"
385
+
386
+ #: admin/app_settings.py:284
387
+ msgid "A list of domains that aliases can target (comma separated)."
388
+ msgstr "Une liste de domaines que les alias peuvent cibler (séparés par une virgule)."
389
+
390
+ #: admin/app_settings.py:338 core/api/v2/viewsets.py:174
354
391
  msgid "Administration"
355
392
  msgstr "Administration"
356
393
 
@@ -370,6 +407,35 @@ msgstr "Ouverte"
370
407
  msgid "Closed"
371
408
  msgstr "Fermée"
372
409
 
410
+ #: admin/dns_checker.py:96
411
+ msgid "MX {} listed by DNSBL provider {}"
412
+ msgstr "Le MX {} est listé par le fournisseur de DNSBL {}"
413
+
414
+ #: admin/dns_checker.py:138
415
+ msgid "Domain has no MX record"
416
+ msgstr "Le domaine n'a pas d'enregistrement MX"
417
+
418
+ #: admin/dns_checker.py:141
419
+ msgid "Domain {} has no MX record"
420
+ msgstr "Le domaine {} n'a pas d'enregistrement MX"
421
+
422
+ #: admin/dns_checker.py:159
423
+ msgid "Invalid MX record: {}"
424
+ msgstr "Enregistrement MX incorrect : {}"
425
+
426
+ #: admin/dns_checker.py:166
427
+ #, python-brace-format
428
+ msgid "MX record for domain {0} is invalid: {1}"
429
+ msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
430
+
431
+ #: admin/dns_checker.py:177
432
+ msgid "[modoboa] MX issue(s) for domain {}"
433
+ msgstr "[modoboa] problème(s) de MX pour le domaine {}"
434
+
435
+ #: admin/dns_checker.py:224
436
+ msgid "[modoboa] DNSBL issue(s) for domain {}"
437
+ msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
438
+
373
439
  #: admin/handlers.py:179
374
440
  msgid "domain alias"
375
441
  msgstr "alias de domaine"
@@ -379,58 +445,54 @@ msgstr "alias de domaine"
379
445
  msgid "Account import failed (%s): domain does not exist"
380
446
  msgstr "L'import du compte a échoué (%s): le domaine n'existe pas"
381
447
 
382
- #: admin/handlers.py:242 admin/models/mailbox.py:342
383
- msgid "Mailbox {} already exists"
384
- msgstr "La boite {} existe déjà"
385
-
386
- #: admin/handlers.py:251
448
+ #: admin/handlers.py:246
387
449
  #, python-format
388
450
  msgid "Account import failed (%s): wrong quota value"
389
451
  msgstr "L'import du compte a échoué (%s): mauvais quota"
390
452
 
391
- #: admin/lib.py:121
453
+ #: admin/lib.py:126
392
454
  msgid "You are not allowed to import domains"
393
455
  msgstr "Vous n'êtes pas autorisé à importer des domaines"
394
456
 
395
- #: admin/lib.py:130
457
+ #: admin/lib.py:135
396
458
  msgid "You are not allowed to import domain aliases."
397
459
  msgstr "Vous n'êtes pas autorisé à importer des alias de domaine."
398
460
 
399
- #: admin/lib.py:222 admin/tests/test_mx.py:153 admin/tests/test_mx.py:166
400
- #: admin/tests/test_mx.py:171
461
+ #: admin/lib.py:227 admin/tests/test_mx.py:139 admin/tests/test_mx.py:152
462
+ #: admin/tests/test_mx.py:157
401
463
  #, python-format
402
464
  msgid "No DNS record found for %s"
403
465
  msgstr "Aucun enregistrement DNS trouvé pour %s."
404
466
 
405
- #: admin/lib.py:225
467
+ #: admin/lib.py:230
406
468
  #, python-format
407
469
  msgid "No %(type)s record for %(name)s"
408
470
  msgstr "Aucun enregistrement %(type)s trouvé pour %(name)s"
409
471
 
410
- #: admin/lib.py:229 admin/tests/test_mx.py:156
472
+ #: admin/lib.py:234 admin/tests/test_mx.py:142
411
473
  msgid "No working name servers found"
412
474
  msgstr "Aucun serveur de noms fonctionnel trouvé"
413
475
 
414
- #: admin/lib.py:232 admin/tests/test_mx.py:160
476
+ #: admin/lib.py:237 admin/tests/test_mx.py:146
415
477
  #, python-format
416
478
  msgid "DNS resolution timeout, unable to query %s at the moment"
417
479
  msgstr "Timeout de résolution DNS, impossible de requêter %s pour l'instant"
418
480
 
419
- #: admin/lib.py:236
481
+ #: admin/lib.py:241
420
482
  msgid "DNS name is too long: {}"
421
483
  msgstr "Nom DNS trop long : {}"
422
484
 
423
- #: admin/lib.py:267
485
+ #: admin/lib.py:272
424
486
  #, python-brace-format
425
487
  msgid "Invalid IP address format for {domain}; {addr}"
426
488
  msgstr "Format d'adresse IP incorrect pour {domain}; {addr}"
427
489
 
428
- #: admin/lib.py:360
490
+ #: admin/lib.py:365
429
491
  #, python-format
430
492
  msgid "Object already exists: %s"
431
493
  msgstr "L'objet existe déjà : %s"
432
494
 
433
- #: admin/lib.py:364
495
+ #: admin/lib.py:369
434
496
  #, python-format
435
497
  msgid "%d objects imported successfully"
436
498
  msgstr "%d objets importés avec succès"
@@ -463,77 +525,52 @@ msgstr "Echec lors de la génération de la clé privée DKIM"
463
525
  msgid "Failed to generate DKIM public key"
464
526
  msgstr "Echec lors de la génération de la clé publique DKIM"
465
527
 
466
- #: admin/management/commands/subcommands/_mx.py:133
467
- msgid "MX {} listed by DNSBL provider {}"
468
- msgstr "Le MX {} est listé par le fournisseur de DNSBL {}"
469
-
470
- #: admin/management/commands/subcommands/_mx.py:174
471
- msgid "Domain has no MX record"
472
- msgstr "Le domaine n'a pas d'enregistrement MX"
473
-
474
- #: admin/management/commands/subcommands/_mx.py:177
475
- msgid "Domain {} has no MX record"
476
- msgstr "Le domaine {} n'a pas d'enregistrement MX"
477
-
478
- #: admin/management/commands/subcommands/_mx.py:195
479
- msgid "Invalid MX record: {}"
480
- msgstr "Enregistrement MX incorrect : {}"
481
-
482
- #: admin/management/commands/subcommands/_mx.py:202
483
- #, python-brace-format
484
- msgid "MX record for domain {0} is invalid: {1}"
485
- msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
486
-
487
- #: admin/management/commands/subcommands/_mx.py:213
488
- msgid "[modoboa] MX issue(s) for domain {}"
489
- msgstr "[modoboa] problème(s) de MX pour le domaine {}"
490
-
491
- #: admin/management/commands/subcommands/_mx.py:269
492
- msgid "[modoboa] DNSBL issue(s) for domain {}"
493
- msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
494
-
495
- #: admin/models/alias.py:42
528
+ #: admin/models/alias.py:43
496
529
  msgid "Domain not found."
497
530
  msgstr "Domaine introuvable."
498
531
 
499
- #: admin/models/alias.py:97 admin/models/mailbox.py:85
532
+ #: admin/models/alias.py:117 admin/models/mailbox.py:85
500
533
  msgid "address"
501
534
  msgstr "Adresse"
502
535
 
503
- #: admin/models/alias.py:99
536
+ #: admin/models/alias.py:119
504
537
  msgid "The alias address."
505
538
  msgstr "L'adresse de l'alias"
506
539
 
507
- #: admin/models/alias.py:103 admin/models/domain.py:45
540
+ #: admin/models/alias.py:123 admin/models/domain.py:45
508
541
  #: admin/models/domain_alias.py:45 autoreply/models.py:25
509
542
  msgid "enabled"
510
543
  msgstr "Activé"
511
544
 
512
- #: admin/models/alias.py:104 admin/models/domain_alias.py:46
545
+ #: admin/models/alias.py:124 admin/models/domain_alias.py:46
513
546
  msgid "Check to activate this alias"
514
547
  msgstr "Cocher pour activer cet alias"
515
548
 
516
- #: admin/models/alias.py:108
549
+ #: admin/models/alias.py:128
517
550
  msgid "Description"
518
551
  msgstr "Description"
519
552
 
520
- #: admin/models/alias.py:109
553
+ #: admin/models/alias.py:129
521
554
  msgid "Expire at"
522
555
  msgstr "Expire le"
523
556
 
524
- #: admin/models/alias.py:150
557
+ #: admin/models/alias.py:170
525
558
  msgid "alias"
526
559
  msgstr "alias"
527
560
 
528
- #: admin/models/alias.py:183
561
+ #: admin/models/alias.py:203
529
562
  msgid "Invalid address"
530
563
  msgstr "Adresse invalide"
531
564
 
532
- #: admin/models/alias.py:202
565
+ #: admin/models/alias.py:206
566
+ msgid "Target domain not allowed"
567
+ msgstr "Domaine cible non autorisé"
568
+
569
+ #: admin/models/alias.py:224
533
570
  msgid "Local recipient {}@{} not found"
534
571
  msgstr "Destinataire local {}@{} introuvable"
535
572
 
536
- #: admin/models/alias.py:251
573
+ #: admin/models/alias.py:273
537
574
  msgid "Invalid line: {}"
538
575
  msgstr "Ligne incorrecte : {}"
539
576
 
@@ -641,6 +678,10 @@ msgstr "{} : quota du domaine dépassé"
641
678
  msgid "Domain does not exist"
642
679
  msgstr "Domaine inexistant"
643
680
 
681
+ #: admin/models/mailbox.py:342
682
+ msgid "Mailbox {} already exists"
683
+ msgstr "La boite {} existe déjà"
684
+
644
685
  #: admin/templates/admin/notifications/domain_in_dnsbl.html:3
645
686
  #, python-format
646
687
  msgid ""
@@ -660,21 +701,333 @@ msgstr "La réputation de ce domaine sera affectée et il est probable que les e
660
701
  msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
661
702
  msgstr "Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX valide :"
662
703
 
663
- #: admin/tests/test_mx.py:155
704
+ #: admin/tests/test_mx.py:141
664
705
  #, python-format
665
706
  msgid "No MX record for %s"
666
707
  msgstr "Aucun enregistrement MX trouvé pour %s"
667
708
 
668
- #: admin/tests/test_mx.py:176 admin/tests/test_mx.py:182
709
+ #: admin/tests/test_mx.py:162 admin/tests/test_mx.py:168
669
710
  #, python-format
670
711
  msgid "Invalid IP address format for %(domain)s; %(addr)s"
671
712
  msgstr "Format d'adresse IP incorrect pour %(domain)s; %(addr)s"
672
713
 
673
- #: admin/tests/test_mx.py:199
714
+ #: admin/tests/test_mx.py:185
674
715
  #, python-format
675
716
  msgid "No AAAA record for %s"
676
717
  msgstr "Aucun enregistrement AAAA trouvé pour %s"
677
718
 
719
+ #: amavis/app_settings.py:11
720
+ msgid "Amavis settings"
721
+ msgstr "Paramètres Amavis"
722
+
723
+ #: amavis/app_settings.py:17
724
+ msgid "Localpart is case sensitive"
725
+ msgstr "La phrase est sensible à la casse"
726
+
727
+ #: amavis/app_settings.py:19
728
+ msgid "Value should match amavisd.conf variable $localpart_is_case_sensitive"
729
+ msgstr "La valeur doit correspondre à la variable $localpart_is_case_sensitive dans amavisd.conf"
730
+
731
+ #: amavis/app_settings.py:27
732
+ msgid "Recipient delimiter"
733
+ msgstr "Séparateur de destinataire"
734
+
735
+ #: amavis/app_settings.py:29
736
+ msgid "Value should match amavisd.conf variable $recipient_delimiter"
737
+ msgstr "La valeur doit correspondre à la variable $recipient_delimiter de amavisd.conf"
738
+
739
+ #: amavis/app_settings.py:41
740
+ msgid "Quarantine settings"
741
+ msgstr "Paramètres de quarantaine"
742
+
743
+ #: amavis/app_settings.py:47
744
+ msgid "Maximum message age"
745
+ msgstr "Age maximal des messages"
746
+
747
+ #: amavis/app_settings.py:49
748
+ msgid "Quarantine messages maximum age (in days) before deletion"
749
+ msgstr "Age maximum (en jours) des messages en quarantaine avant suppression"
750
+
751
+ #: amavis/app_settings.py:60
752
+ msgid "Message releasing"
753
+ msgstr "Libération de message"
754
+
755
+ #: amavis/app_settings.py:66
756
+ msgid "Remove released messages"
757
+ msgstr "Supprimer les messages libérés"
758
+
759
+ #: amavis/app_settings.py:68
760
+ msgid "Remove messages marked as released while cleaning up the database"
761
+ msgstr "Supprimer les messages marqués comme relâchés pendant le nettoyage de la base de données"
762
+
763
+ #: amavis/app_settings.py:76
764
+ msgid "Amavis connection mode"
765
+ msgstr "Mode de connexion à Amavis"
766
+
767
+ #: amavis/app_settings.py:78
768
+ msgid "Mode used to access the PDP server"
769
+ msgstr "Mode utilisé pour accéder au serveur PDP"
770
+
771
+ #: amavis/app_settings.py:85
772
+ msgid "PDP server address"
773
+ msgstr "Adresse du serveur PDP"
774
+
775
+ #: amavis/app_settings.py:87
776
+ msgid "PDP server address (if inet mode)"
777
+ msgstr "Adresse du serveur PDP (en mode inet)"
778
+
779
+ #: amavis/app_settings.py:95
780
+ msgid "PDP server port"
781
+ msgstr "Port du serveur PDP"
782
+
783
+ #: amavis/app_settings.py:97
784
+ msgid "PDP server port (if inet mode)"
785
+ msgstr "Port du serveur PDP (en mode inet)"
786
+
787
+ #: amavis/app_settings.py:105
788
+ msgid "PDP server socket"
789
+ msgstr "Socket du serveur PDP"
790
+
791
+ #: amavis/app_settings.py:107
792
+ msgid "Path to the PDP server socket (if unix mode)"
793
+ msgstr "Emplacement de la socket du serveur PDP (en mode unix)"
794
+
795
+ #: amavis/app_settings.py:115
796
+ msgid "Allow direct release"
797
+ msgstr "Autoriser la libération directe"
798
+
799
+ #: amavis/app_settings.py:117
800
+ msgid "Allow users to directly release their messages"
801
+ msgstr "Autoriser les utilisateurs à relâcher directement leurs messages"
802
+
803
+ #: amavis/app_settings.py:124
804
+ msgid "Enable self-service mode"
805
+ msgstr "Activer le mode 'libre service'"
806
+
807
+ #: amavis/app_settings.py:126
808
+ msgid "Activate the 'self-service' mode"
809
+ msgstr "Activer le mode 'libre service'"
810
+
811
+ #: amavis/app_settings.py:133
812
+ msgid "Notifications sender"
813
+ msgstr "Emetteur des notifications"
814
+
815
+ #: amavis/app_settings.py:135
816
+ msgid "The e-mail address used to send notitications"
817
+ msgstr "L'adresse e-mail utilisée pour envoyer les notifications"
818
+
819
+ #: amavis/app_settings.py:146
820
+ msgid "Manual learning"
821
+ msgstr "Apprentissage manuel"
822
+
823
+ #: amavis/app_settings.py:152
824
+ msgid "Enable manual learning"
825
+ msgstr "Activer l'apprentissage manuel"
826
+
827
+ #: amavis/app_settings.py:154
828
+ msgid "Allow super administrators to manually train Spamassassin"
829
+ msgstr "Autorise les super administrateurs à entrainer manuellement Spamassassin"
830
+
831
+ #: amavis/app_settings.py:161
832
+ msgid "Is Spamassassin local?"
833
+ msgstr "Spamassassin est il local?"
834
+
835
+ #: amavis/app_settings.py:163
836
+ msgid "Tell if Spamassassin is running on the same server than modoboa"
837
+ msgstr "Indique si Spamassassin tourne sur le même serveur que Modoboa"
838
+
839
+ #: amavis/app_settings.py:171
840
+ msgid "Default user"
841
+ msgstr "Utilisateur par défaut"
842
+
843
+ #: amavis/app_settings.py:173
844
+ msgid "Name of the user owning the default bayesian database"
845
+ msgstr "Nom de l'utilisateur possédant la base bayesienne par défaut"
846
+
847
+ #: amavis/app_settings.py:181
848
+ msgid "Spamd address"
849
+ msgstr "Adresse de spamd"
850
+
851
+ #: amavis/app_settings.py:183
852
+ msgid "The IP address where spamd can be reached"
853
+ msgstr "L'adresse IP à laquelle spamd peut etre joint"
854
+
855
+ #: amavis/app_settings.py:191
856
+ msgid "Spamd port"
857
+ msgstr "Port de spamd"
858
+
859
+ #: amavis/app_settings.py:193
860
+ msgid "The TCP port spamd is listening on"
861
+ msgstr "Le port TCP sur lequel écoute spamd"
862
+
863
+ #: amavis/app_settings.py:202
864
+ msgid "Enable per-domain manual learning"
865
+ msgstr "Activer l'apprentissage manuel niveau domaine"
866
+
867
+ #: amavis/app_settings.py:205
868
+ msgid ""
869
+ "Allow domain administrators to train Spamassassin (within dedicated per-"
870
+ "domain databases)"
871
+ msgstr "Autorise les administrateurs de domaine à entrainer Spamassassin (au sein de bases dédiées par domaine)"
872
+
873
+ #: amavis/app_settings.py:215
874
+ msgid "Enable per-user manual learning"
875
+ msgstr "Activer l'apprentissage manuel par utilisateur"
876
+
877
+ #: amavis/app_settings.py:218
878
+ msgid ""
879
+ "Allow simple users to personally train Spamassassin (within a dedicated "
880
+ "database)"
881
+ msgstr "Autorise les utilisateur à entrainer personnellement Spamassassin (au sein d'une base dédiée)"
882
+
883
+ #: amavis/app_settings.py:236 webmail/app_settings.py:155
884
+ msgid "Display"
885
+ msgstr "Affichage"
886
+
887
+ #: amavis/app_settings.py:243 webmail/app_settings.py:181
888
+ msgid "Number of displayed emails per page"
889
+ msgstr "Nombre de messages affichés par page"
890
+
891
+ #: amavis/app_settings.py:246
892
+ msgid "Set the maximum number of messages displayed in a page"
893
+ msgstr "Définir le nombre maximal de messages affichés dans une page"
894
+
895
+ #: amavis/app_settings.py:266 amavis/app_settings.py:273
896
+ msgid "Amavis"
897
+ msgstr "Amavis"
898
+
899
+ #: amavis/checks/settings_checks.py:8
900
+ msgid ""
901
+ "AMAVIS_DEFAULT_DATABASE_ENCODING does not match the character encoding used "
902
+ "by the Amavis database."
903
+ msgstr "AMAVIS_DEFAULT_DATABASE_ENCODING ne correspond pas à l'encodage de caractère utilisé par la base de données Amavis."
904
+
905
+ #: amavis/checks/settings_checks.py:12
906
+ msgid ""
907
+ "Check your database character encoding and set/update "
908
+ "AMAVIS_DEFAULT_DATABASE_ENCODING."
909
+ msgstr "Vérifiez l'encodage de caractère utilisé par votre base de données et renseignez / mettez à jour AMAVIS_DEFAULT_DATABASE_ENCODING."
910
+
911
+ #: amavis/checks/settings_checks.py:19
912
+ msgid "Modoboa Amavis has not been tested using the selected database engine."
913
+ msgstr "Modoboa Amavis n'a pas été testé avec le moteur de base de données selectionné."
914
+
915
+ #: amavis/checks/settings_checks.py:20
916
+ msgid "Try using PostgreSQL, MySQL or MariaDB."
917
+ msgstr "Essayez avec PostgreSQL, MySQL ou MariaDB."
918
+
919
+ #: amavis/handlers.py:141
920
+ msgid "Pending requests"
921
+ msgstr "Requêtes en attente"
922
+
923
+ #: amavis/lib.py:59
924
+ #, python-format
925
+ msgid "Connection to amavis failed: %s"
926
+ msgstr "La connexion avec amavis a échoué : %s"
927
+
928
+ #: amavis/lib.py:133
929
+ msgid "Failed to find {} binary"
930
+ msgstr "Impossible de trouver le binaire {}"
931
+
932
+ #: amavis/lib.py:148
933
+ msgid "No recipient found"
934
+ msgstr "Aucun destinataire trouvé"
935
+
936
+ #: amavis/lib.py:159
937
+ msgid "Local domain not found"
938
+ msgstr "Domaine local non trouvé"
939
+
940
+ #: amavis/management/commands/amnotify.py:59
941
+ msgid "[modoboa] Pending release requests"
942
+ msgstr "[modoboa] requêtes de libération en attente"
943
+
944
+ #: amavis/models.py:101
945
+ msgid "Virus filter"
946
+ msgstr "Filtrage des virus"
947
+
948
+ #: amavis/models.py:105 amavis/models.py:119 amavis/models.py:133
949
+ msgid "yes"
950
+ msgstr "oui"
951
+
952
+ #: amavis/models.py:106 amavis/models.py:120 amavis/models.py:134
953
+ msgid "no"
954
+ msgstr "non"
955
+
956
+ #: amavis/models.py:107 amavis/models.py:121 amavis/models.py:135
957
+ msgid "default"
958
+ msgstr "défaut"
959
+
960
+ #: amavis/models.py:111
961
+ msgid "Bypass virus checks or not. Choose 'default' to use global settings."
962
+ msgstr "Désactiver le filtrage des virus ou non. Choisir 'défaut' pour utiliser les paramètres globaux."
963
+
964
+ #: amavis/models.py:115
965
+ msgid "Spam filter"
966
+ msgstr "Filtrage du spam"
967
+
968
+ #: amavis/models.py:125
969
+ msgid "Bypass spam checks or not. Choose 'default' to use global settings."
970
+ msgstr "Désactiver le filtrage du spam ou non. Choisir 'défaut' pour utiliser les paramètres globaux."
971
+
972
+ #: amavis/models.py:129
973
+ msgid "Banned filter"
974
+ msgstr "Filtrage des messages bannis"
975
+
976
+ #: amavis/models.py:139
977
+ msgid "Bypass banned checks or not. Choose 'default' to use global settings."
978
+ msgstr "Désactiver le filtrage des messages bannis ou non. Choisir 'défaut' pour utiliser les paramètres globaux."
979
+
980
+ #: amavis/models.py:170
981
+ msgid "Spam marker"
982
+ msgstr "Marquage du spam"
983
+
984
+ #: amavis/models.py:176
985
+ msgid ""
986
+ "Modify spam subject using the specified text. Choose 'default' to use global"
987
+ " settings."
988
+ msgstr "Modifier le sujet du spam en utilisant le texte spécifié. Choisir 'défaut' pour utiliser les paramètres globaux."
989
+
990
+ #: amavis/templates/amavis/notifications/pending_requests.html:3
991
+ #, python-format
992
+ msgid "%(counter)s release request is pending for action."
993
+ msgid_plural "%(counter)s release requests are pending for action."
994
+ msgstr[0] "%(counter)s demande de déblocage est en attente d'une action"
995
+ msgstr[1] "%(counter)s demandes de déblocage sont en attente d'une action"
996
+ msgstr[2] "%(counter)s demandes de déblocage sont en attente d'une action"
997
+
998
+ #: amavis/templates/amavis/notifications/pending_requests.html:8
999
+ msgid "Sketch:"
1000
+ msgstr "Aperçu :"
1001
+
1002
+ #: amavis/templates/amavis/notifications/pending_requests.html:10
1003
+ msgid "From:"
1004
+ msgstr "De :"
1005
+
1006
+ #: amavis/templates/amavis/notifications/pending_requests.html:11
1007
+ msgid "To:"
1008
+ msgstr "A :"
1009
+
1010
+ #: amavis/templates/amavis/notifications/pending_requests.html:12
1011
+ msgid "Date:"
1012
+ msgstr "Date :"
1013
+
1014
+ #: amavis/templates/amavis/notifications/pending_requests.html:13
1015
+ msgid "Subject:"
1016
+ msgstr "Sujet :"
1017
+
1018
+ #: amavis/templates/amavis/notifications/pending_requests.html:14
1019
+ msgid "Act on this message:"
1020
+ msgstr "Agir sur ce message :"
1021
+
1022
+ #: amavis/templates/amavis/notifications/pending_requests.html:16
1023
+ #, python-format
1024
+ msgid "Please visit %(listingurl)s for a full listing."
1025
+ msgstr "Veuillez visiter %(listingurl)s pour une liste complète."
1026
+
1027
+ #: amavis/viewsets.py:122
1028
+ msgid "Invalid request"
1029
+ msgstr "Requête invalide"
1030
+
678
1031
  #: autoreply/api/v2/serializers.py:27
679
1032
  msgid "Value can't be less than 1 day"
680
1033
  msgstr "La valeur ne peut pas être inférieure à 1 jour"
@@ -775,7 +1128,7 @@ msgstr "Autoriser l'administration des calendriers"
775
1128
  msgid "Allow domain administrators to manage user calendars (read and write)"
776
1129
  msgstr "Autoriser les administrateurs de domaine à gérer les calendriers des utilisateurs (lecture et écriture)"
777
1130
 
778
- #: calendars/app_settings.py:60 core/app_settings.py:676
1131
+ #: calendars/app_settings.py:60 core/app_settings.py:664
779
1132
  #: rspamd/app_settings.py:45
780
1133
  msgid "Miscellaneous"
781
1134
  msgstr "Divers"
@@ -789,15 +1142,15 @@ msgid ""
789
1142
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
790
1143
  msgstr "Taille maximale en octets des fichiers ICS importés (ou KB, MB, GB si précisé)"
791
1144
 
792
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
1145
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:205
793
1146
  msgid "Calendars"
794
1147
  msgstr "Calendriers"
795
1148
 
796
- #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:38
1149
+ #: calendars/models.py:48 calendars/models.py:65 contacts/models.py:39
797
1150
  msgid "Server location is not set, please fix it."
798
1151
  msgstr "L'emplacement du serveur n'est pas renseigné, veuillez corriger"
799
1152
 
800
- #: calendars/viewsets.py:197
1153
+ #: calendars/viewsets.py:199
801
1154
  msgid "Uploaded file is too big (max: {} bytes)"
802
1155
  msgstr "Le fichier téléchargé est trop gros (max : {} octets)"
803
1156
 
@@ -823,7 +1176,7 @@ msgstr "Fréquence de synchronisation"
823
1176
  msgid "Interval in seconds between 2 synchronization requests"
824
1177
  msgstr "Intervalle en secondes entre 2 requêtes de synchronisation"
825
1178
 
826
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
1179
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:195
827
1180
  msgid "Contacts"
828
1181
  msgstr "Contacts"
829
1182
 
@@ -871,12 +1224,12 @@ msgstr "Code PIN non valide"
871
1224
  msgid "2FA is already enabled"
872
1225
  msgstr "2FA est déjà activf"
873
1226
 
874
- #: core/api/v1/serializers.py:86
1227
+ #: core/api/v1/serializers.py:87
875
1228
  #, python-format
876
1229
  msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
877
1230
  msgstr "Echec de modification des paramètres TFA depuis '%(addr)s' en tant qu'utilisateur '%(user)s'"
878
1231
 
879
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
1232
+ #: core/api/v1/serializers.py:93 core/api/v2/serializers.py:438
880
1233
  msgid "Invalid password"
881
1234
  msgstr "Mot de passe incorrect"
882
1235
 
@@ -888,25 +1241,21 @@ msgstr "Authentification 2 facteurs non activée"
888
1241
  msgid "Local"
889
1242
  msgstr "Locale"
890
1243
 
891
- #: core/api/v2/serializers.py:194 core/app_settings.py:17
892
- msgid "User profile"
893
- msgstr "Profil utilisateur"
894
-
895
- #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
896
- #: core/api/v2/serializers.py:228
1244
+ #: core/api/v2/serializers.py:206 core/api/v2/serializers.py:214
1245
+ #: core/api/v2/serializers.py:221
897
1246
  msgid "Invalid syntax"
898
1247
  msgstr "Syntaxe invalide"
899
1248
 
900
- #: core/api/v2/serializers.py:233
1249
+ #: core/api/v2/serializers.py:226
901
1250
  msgid "Invalid rounds number"
902
1251
  msgstr "Nombre invalide de tours"
903
1252
 
904
- #: core/api/v2/serializers.py:433 core/forms.py:81
1253
+ #: core/api/v2/serializers.py:426 core/forms.py:81
905
1254
  msgid "This code is invalid"
906
1255
  msgstr "Ce code n'est pas valide"
907
1256
 
908
- #: core/api/v2/serializers.py:503 core/views/auth.py:194
909
- #: core/views/auth.py:247
1257
+ #: core/api/v2/serializers.py:496 core/views/auth.py:213
1258
+ #: core/views/auth.py:266
910
1259
  msgid "Please use the following code to recover your Modoboa password: {}"
911
1260
  msgstr "Veuillez utiliser le code suivant pour récupérer votre mot de passe Modoboa : {}"
912
1261
 
@@ -914,534 +1263,534 @@ msgstr "Veuillez utiliser le code suivant pour récupérer votre mot de passe Mo
914
1263
  msgid "Administration console"
915
1264
  msgstr "Interface d'administration"
916
1265
 
917
- #: core/api/v2/viewsets.py:187
1266
+ #: core/api/v2/viewsets.py:184 dmarc/models.py:11
1267
+ msgid "Quarantine"
1268
+ msgstr "Quarantaine"
1269
+
1270
+ #: core/api/v2/viewsets.py:186
1271
+ msgid "Amavis quarantine"
1272
+ msgstr "Quarantaine amavis"
1273
+
1274
+ #: core/api/v2/viewsets.py:197
918
1275
  msgid "Address book"
919
1276
  msgstr "Carnet d'adresse"
920
1277
 
921
- #: core/api/v2/viewsets.py:197
1278
+ #: core/api/v2/viewsets.py:207
922
1279
  msgid "Calendar"
923
1280
  msgstr "Calendrier"
924
1281
 
925
- #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
926
- #: webmail/app_settings.py:258 webmail/app_settings.py:265
1282
+ #: core/api/v2/viewsets.py:215 core/api/v2/viewsets.py:217
1283
+ #: webmail/app_settings.py:295 webmail/app_settings.py:302
927
1284
  msgid "Webmail"
928
1285
  msgstr "Webmail"
929
1286
 
930
- #: core/app_settings.py:37
1287
+ #: core/app_settings.py:25
931
1288
  msgid "Authentication"
932
1289
  msgstr "Authentification"
933
1290
 
934
- #: core/app_settings.py:43
1291
+ #: core/app_settings.py:31
935
1292
  msgid "Authentication type"
936
1293
  msgstr "Type d'authentification"
937
1294
 
938
- #: core/app_settings.py:45
1295
+ #: core/app_settings.py:33
939
1296
  msgid "The backend used for authentication"
940
1297
  msgstr "Le backend utilisé pour l'authentification"
941
1298
 
942
- #: core/app_settings.py:52
1299
+ #: core/app_settings.py:40
943
1300
  msgid "Default password scheme"
944
1301
  msgstr "Méthode de chiffrement par défaut"
945
1302
 
946
- #: core/app_settings.py:54
1303
+ #: core/app_settings.py:42
947
1304
  msgid "Scheme used to crypt mailbox passwords"
948
1305
  msgstr "Méthode utilisée pour chiffrer les mots de passe des boites aux lettres"
949
1306
 
950
- #: core/app_settings.py:61
1307
+ #: core/app_settings.py:49
951
1308
  msgid "Rounds"
952
1309
  msgstr "Tours"
953
1310
 
954
- #: core/app_settings.py:63
1311
+ #: core/app_settings.py:51
955
1312
  msgid ""
956
1313
  "Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
957
1314
  "between 1000 and 999999999, inclusive."
958
1315
  msgstr "Nombre de tours à utiliser (sha256crypt et sha512crypt uniquement). Doit être compris entre 1000 et 999999999 inclue."
959
1316
 
960
- #: core/app_settings.py:73
1317
+ #: core/app_settings.py:61
961
1318
  msgid "Update password scheme at login"
962
1319
  msgstr "Mettre à jour la méthode de chiffrement du mot de passe à la connexion"
963
1320
 
964
- #: core/app_settings.py:76
1321
+ #: core/app_settings.py:64
965
1322
  msgid "Update user password at login to use the default password scheme"
966
1323
  msgstr "Mise à jour du mot de passe utilisateur lors d'une connexion pour utiliser la méthode de chiffrement par défaut"
967
1324
 
968
- #: core/app_settings.py:84
1325
+ #: core/app_settings.py:72
969
1326
  msgid "Default password"
970
1327
  msgstr "Mot de passe par défaut"
971
1328
 
972
- #: core/app_settings.py:86
1329
+ #: core/app_settings.py:74
973
1330
  msgid "Default password for automatically created accounts."
974
1331
  msgstr "Mot de passe par défaut pour les comptes créés automatiquement."
975
1332
 
976
- #: core/app_settings.py:93
1333
+ #: core/app_settings.py:81
977
1334
  msgid "Random password length"
978
1335
  msgstr "Taille d'un mot de passe aléatoire"
979
1336
 
980
- #: core/app_settings.py:95
1337
+ #: core/app_settings.py:83
981
1338
  msgid "Length of randomly generated passwords."
982
1339
  msgstr "Taille des mots de passe générés aléatoirement."
983
1340
 
984
- #: core/app_settings.py:103
1341
+ #: core/app_settings.py:91
985
1342
  msgid "Allow special characters for random password"
986
1343
  msgstr "Autoriser les caractères spéciaux pour les mots de passe aléatoires"
987
1344
 
988
- #: core/app_settings.py:106
1345
+ #: core/app_settings.py:94
989
1346
  msgid "Enable special characters in randomly generated passwords."
990
1347
  msgstr "Activer les caractères spéciaux dans les mots de passe générés aléatoirement."
991
1348
 
992
- #: core/app_settings.py:114
1349
+ #: core/app_settings.py:102
993
1350
  msgid "Update password service URL"
994
1351
  msgstr "URL de service de mise à jour du mot de passe"
995
1352
 
996
- #: core/app_settings.py:116
1353
+ #: core/app_settings.py:104
997
1354
  msgid ""
998
1355
  "The URL of an external page where users will be able to update their "
999
1356
  "password. It applies only to non local users, ie. those automatically "
1000
1357
  "created after a successful external authentication (LDAP, SMTP)."
1001
1358
  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)."
1002
1359
 
1003
- #: core/app_settings.py:126
1360
+ #: core/app_settings.py:114
1004
1361
  msgid "Password recovery announcement"
1005
1362
  msgstr "Annonce pour la récupération de mot de passe"
1006
1363
 
1007
- #: core/app_settings.py:128
1364
+ #: core/app_settings.py:116
1008
1365
  msgid "A temporary message that will be displayed on the reset password page."
1009
1366
  msgstr "Un message temporaire qui sera affiché sur la page de récupération de mot de passe"
1010
1367
 
1011
- #: core/app_settings.py:137
1368
+ #: core/app_settings.py:125
1012
1369
  msgid "Enable password recovery by SMS"
1013
1370
  msgstr "Activer la récupération de mot de passe par SMS"
1014
1371
 
1015
- #: core/app_settings.py:140
1372
+ #: core/app_settings.py:128
1016
1373
  msgid "Enable password recovery by SMS for users who filled a phone number."
1017
1374
  msgstr "Activer la récupération de mot de passe par SMS pour les utilisateurs ayant renseigné un numéro de téléphone"
1018
1375
 
1019
- #: core/app_settings.py:148
1376
+ #: core/app_settings.py:136
1020
1377
  msgid "SMS provider"
1021
1378
  msgstr "Fournisseur SMS"
1022
1379
 
1023
- #: core/app_settings.py:151
1380
+ #: core/app_settings.py:139
1024
1381
  msgid "Choose a provider to send password recovery SMS"
1025
1382
  msgstr "Choisir un fournisseur pour envoyer les SMS de récupération de mot de passe"
1026
1383
 
1027
- #: core/app_settings.py:163
1384
+ #: core/app_settings.py:151
1028
1385
  msgid "LDAP"
1029
1386
  msgstr "LDAP"
1030
1387
 
1031
- #: core/app_settings.py:169 sievefilters/app_settings.py:18
1388
+ #: core/app_settings.py:157 sievefilters/app_settings.py:18
1032
1389
  #: sievefilters/app_settings.py:51 webmail/app_settings.py:36
1033
- #: webmail/app_settings.py:73
1390
+ #: webmail/app_settings.py:73 webmail/app_settings.py:119
1034
1391
  msgid "Server address"
1035
1392
  msgstr "Adresse du serveur"
1036
1393
 
1037
- #: core/app_settings.py:171
1394
+ #: core/app_settings.py:159
1038
1395
  msgid "The IP address or the DNS name of the LDAP server"
1039
1396
  msgstr "L'adresse IP ou le nom DNS du serveur LDAP"
1040
1397
 
1041
- #: core/app_settings.py:178 sievefilters/app_settings.py:25
1398
+ #: core/app_settings.py:166 sievefilters/app_settings.py:25
1042
1399
  #: sievefilters/app_settings.py:67 webmail/app_settings.py:54
1043
- #: webmail/app_settings.py:91
1400
+ #: webmail/app_settings.py:91 webmail/app_settings.py:137
1044
1401
  msgid "Server port"
1045
1402
  msgstr "Port utilisé par le serveur"
1046
1403
 
1047
- #: core/app_settings.py:180
1404
+ #: core/app_settings.py:168
1048
1405
  msgid "The TCP port number used by the LDAP server"
1049
1406
  msgstr "Le port TCP utilisé par le serveur LDAP"
1050
1407
 
1051
- #: core/app_settings.py:188
1408
+ #: core/app_settings.py:176
1052
1409
  msgid "Enable secondary server (fallback)"
1053
1410
  msgstr "Activer le serveur secondaire (secours)"
1054
1411
 
1055
- #: core/app_settings.py:191
1412
+ #: core/app_settings.py:179
1056
1413
  msgid ""
1057
1414
  "Enable a secondary LDAP server which will be used if the primary one fails"
1058
1415
  msgstr "Activer un serveur LDAP secondaire qui sera utilisé si le principal est en échec"
1059
1416
 
1060
- #: core/app_settings.py:199
1417
+ #: core/app_settings.py:187
1061
1418
  msgid "Secondary server address"
1062
1419
  msgstr "Adresse du serveur secondaire"
1063
1420
 
1064
- #: core/app_settings.py:202
1421
+ #: core/app_settings.py:190
1065
1422
  msgid "The IP address or the DNS name of the seondary LDAP server"
1066
1423
  msgstr "L'adresse IP ou le nom DNS du serveur LDAP secondaire"
1067
1424
 
1068
- #: core/app_settings.py:209
1425
+ #: core/app_settings.py:197
1069
1426
  msgid "Secondary server port"
1070
1427
  msgstr "Port du serveur secondaire"
1071
1428
 
1072
- #: core/app_settings.py:212
1429
+ #: core/app_settings.py:200
1073
1430
  msgid "The TCP port number used by the LDAP secondary server"
1074
1431
  msgstr "Le numéro du port TCP utilisé par le serveur LDAP secondaire"
1075
1432
 
1076
- #: core/app_settings.py:219 sievefilters/app_settings.py:58
1433
+ #: core/app_settings.py:207 sievefilters/app_settings.py:58
1077
1434
  #: webmail/app_settings.py:45
1078
1435
  msgid "Use a secured connection"
1079
1436
  msgstr "Utiliser une connexion sécurisée"
1080
1437
 
1081
- #: core/app_settings.py:221
1438
+ #: core/app_settings.py:209
1082
1439
  msgid "Use an SSL/STARTTLS connection to access the LDAP server"
1083
1440
  msgstr "Utiliser une connexion SSL/STARTTLS pour accéder au serveur LDAP"
1084
1441
 
1085
- #: core/app_settings.py:228
1442
+ #: core/app_settings.py:216
1086
1443
  msgid "Active Directory"
1087
1444
  msgstr "Active Directory"
1088
1445
 
1089
- #: core/app_settings.py:230
1446
+ #: core/app_settings.py:218
1090
1447
  msgid "Tell if the LDAP server is an Active Directory one"
1091
1448
  msgstr "Indiquer si le serveur LDAP est un Active Directory ou pas"
1092
1449
 
1093
- #: core/app_settings.py:237
1450
+ #: core/app_settings.py:225
1094
1451
  msgid "Administrator groups"
1095
1452
  msgstr "Groupes administrateurs"
1096
1453
 
1097
- #: core/app_settings.py:239
1454
+ #: core/app_settings.py:227
1098
1455
  msgid ""
1099
1456
  "Members of those LDAP Posix groups will be created as domain administrators."
1100
1457
  " Use ';' characters to separate groups."
1101
1458
  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."
1102
1459
 
1103
- #: core/app_settings.py:248
1460
+ #: core/app_settings.py:236
1104
1461
  msgid "Group type"
1105
1462
  msgstr "Type de groupe"
1106
1463
 
1107
- #: core/app_settings.py:250
1464
+ #: core/app_settings.py:238
1108
1465
  msgid "The LDAP group type to use with your directory."
1109
1466
  msgstr "Le type de groupe LDAP à utiliser avec votre annuaire."
1110
1467
 
1111
- #: core/app_settings.py:257
1468
+ #: core/app_settings.py:245
1112
1469
  msgid "Groups search base"
1113
1470
  msgstr "Base de recherche des groupes"
1114
1471
 
1115
- #: core/app_settings.py:259
1472
+ #: core/app_settings.py:247
1116
1473
  msgid "The distinguished name of the search base used to find groups"
1117
1474
  msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les groupes"
1118
1475
 
1119
- #: core/app_settings.py:267
1476
+ #: core/app_settings.py:255
1120
1477
  msgid "Password attribute"
1121
1478
  msgstr "Attribut 'mot de passe'"
1122
1479
 
1123
- #: core/app_settings.py:269
1480
+ #: core/app_settings.py:257
1124
1481
  msgid "The attribute used to store user passwords"
1125
1482
  msgstr "L'attribut utilisé pour stocker les mots de passe"
1126
1483
 
1127
- #: core/app_settings.py:276
1484
+ #: core/app_settings.py:264
1128
1485
  msgid "LDAP authentication settings"
1129
1486
  msgstr "Paramètres d'authentification LDAP"
1130
1487
 
1131
- #: core/app_settings.py:284
1488
+ #: core/app_settings.py:272
1132
1489
  msgid "Authentication method"
1133
1490
  msgstr "Méthode d'authentification"
1134
1491
 
1135
- #: core/app_settings.py:287
1492
+ #: core/app_settings.py:275
1136
1493
  msgid "Choose the authentication method to use"
1137
1494
  msgstr "Choisir la méthode d'authentification à utiliser"
1138
1495
 
1139
- #: core/app_settings.py:294 core/app_settings.py:357
1496
+ #: core/app_settings.py:282 core/app_settings.py:345
1140
1497
  msgid "Bind DN"
1141
1498
  msgstr "ND de connexion"
1142
1499
 
1143
- #: core/app_settings.py:296 core/app_settings.py:359
1500
+ #: core/app_settings.py:284 core/app_settings.py:347
1144
1501
  msgid ""
1145
1502
  "The distinguished name to use when binding to the LDAP server. Leave empty "
1146
1503
  "for an anonymous bind"
1147
1504
  msgstr "Le nom distinctif à utiliser pour les connections au serveur LDAP. Laisser vide pour une connexion anonyme"
1148
1505
 
1149
- #: core/app_settings.py:305 core/app_settings.py:367
1506
+ #: core/app_settings.py:293 core/app_settings.py:355
1150
1507
  msgid "Bind password"
1151
1508
  msgstr "Mot de passe de connexion"
1152
1509
 
1153
- #: core/app_settings.py:307 core/app_settings.py:369
1510
+ #: core/app_settings.py:295 core/app_settings.py:357
1154
1511
  msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
1155
1512
  msgstr "Le mot de passe à utiliser pour les connections au serveur LDAP (avec 'ND de connexion')"
1156
1513
 
1157
- #: core/app_settings.py:317 core/app_settings.py:422
1514
+ #: core/app_settings.py:305 core/app_settings.py:410
1158
1515
  msgid "Users search base"
1159
1516
  msgstr "Base de recherche des utilisateurs"
1160
1517
 
1161
- #: core/app_settings.py:319 core/app_settings.py:424
1518
+ #: core/app_settings.py:307 core/app_settings.py:412
1162
1519
  msgid "The distinguished name of the search base used to find users"
1163
1520
  msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les utilisateurs"
1164
1521
 
1165
- #: core/app_settings.py:328 core/app_settings.py:433
1522
+ #: core/app_settings.py:316 core/app_settings.py:421
1166
1523
  msgid "Search filter"
1167
1524
  msgstr "Filtre de recherche"
1168
1525
 
1169
- #: core/app_settings.py:330 core/app_settings.py:435
1526
+ #: core/app_settings.py:318 core/app_settings.py:423
1170
1527
  msgid ""
1171
1528
  "An optional filter string (e.g. '(objectClass=person)'). In order to be "
1172
1529
  "valid, it must be enclosed in parentheses."
1173
1530
  msgstr "Un filtre de recherche optionel (ex. '(objectClass=person)'). Pour être valide, il doit être entouré de parenthèses."
1174
1531
 
1175
- #: core/app_settings.py:339
1532
+ #: core/app_settings.py:327
1176
1533
  msgid "User DN template"
1177
1534
  msgstr "Modèle de nom distinctif utilisateur"
1178
1535
 
1179
- #: core/app_settings.py:341
1536
+ #: core/app_settings.py:329
1180
1537
  #, python-format
1181
1538
  msgid ""
1182
1539
  "The template used to construct a user's DN. It should contain one "
1183
1540
  "placeholder (ie. %(user)s)"
1184
1541
  msgstr "Le modèle utilisé pour construire le nom distinctif d'un utilisateur. Il doit contenir un espace réservé (ex. %(user)s)"
1185
1542
 
1186
- #: core/app_settings.py:350
1543
+ #: core/app_settings.py:338
1187
1544
  msgid "LDAP synchronization settings"
1188
1545
  msgstr "Paramètres de synchronisation LDAP"
1189
1546
 
1190
- #: core/app_settings.py:378
1547
+ #: core/app_settings.py:366
1191
1548
  msgid "Enable export to LDAP"
1192
1549
  msgstr "Activer l'export LDAP"
1193
1550
 
1194
- #: core/app_settings.py:380
1551
+ #: core/app_settings.py:368
1195
1552
  msgid ""
1196
1553
  "Enable automatic synchronization between local database and LDAP directory"
1197
1554
  msgstr "Activer la synchronisation automatique entre la base de données locale et l'annuaire LDAP"
1198
1555
 
1199
- #: core/app_settings.py:389
1556
+ #: core/app_settings.py:377
1200
1557
  msgid "Delete remote LDAP account when local account is deleted"
1201
1558
  msgstr "Supprimer un compte LDAP distant lorsqu'un compte local est supprimé"
1202
1559
 
1203
- #: core/app_settings.py:392
1560
+ #: core/app_settings.py:380
1204
1561
  msgid ""
1205
1562
  "Delete remote LDAP account when local account is deleted, otherwise it will "
1206
1563
  "be disabled."
1207
1564
  msgstr "Supprimer un compte LDAP distant lorsqu'un compte local supprimé, autrement il sera désactivé."
1208
1565
 
1209
- #: core/app_settings.py:401
1566
+ #: core/app_settings.py:389
1210
1567
  msgid "Account DN template"
1211
1568
  msgstr "Modèle des DN de compte"
1212
1569
 
1213
- #: core/app_settings.py:403
1570
+ #: core/app_settings.py:391
1214
1571
  #, python-format
1215
1572
  msgid ""
1216
1573
  "The template used to construct an account's DN. It should contain one "
1217
1574
  "placeholder (ie. %(user)s)"
1218
1575
  msgstr "Le modèle utilisé pour construite un DN de compte (nom unique). Il doit contenir un emplacement (c'est à dire 1%(user)s)"
1219
1576
 
1220
- #: core/app_settings.py:412
1577
+ #: core/app_settings.py:400
1221
1578
  msgid "Enable import from LDAP"
1222
1579
  msgstr "Activer l'import LDAP"
1223
1580
 
1224
- #: core/app_settings.py:414
1581
+ #: core/app_settings.py:402
1225
1582
  msgid "Enable account synchronization from LDAP directory to local database"
1226
1583
  msgstr "Activer la synchronisation des comptes entre un annuaire LDAP et la base de données locale"
1227
1584
 
1228
- #: core/app_settings.py:444
1585
+ #: core/app_settings.py:432
1229
1586
  msgid "Username attribute"
1230
1587
  msgstr "Attribut nom d'utilisateur"
1231
1588
 
1232
- #: core/app_settings.py:446
1589
+ #: core/app_settings.py:434
1233
1590
  msgid "The name of the LDAP attribute where the username can be found."
1234
1591
  msgstr "Le nom de l'attribut LDAP dans lequel le nom d'utilisateur peut être trouvé."
1235
1592
 
1236
- #: core/app_settings.py:455
1593
+ #: core/app_settings.py:443
1237
1594
  msgid "Enable Dovecot LDAP sync"
1238
1595
  msgstr "Activer la synchronisation LDAP pour Dovecot"
1239
1596
 
1240
- #: core/app_settings.py:457
1597
+ #: core/app_settings.py:445
1241
1598
  msgid "LDAP authentication settings will be applied to Dovecot configuration."
1242
1599
  msgstr "Les paramètres d'authentification LDAP seront appliqués à la configuration de Dovecot."
1243
1600
 
1244
- #: core/app_settings.py:465
1601
+ #: core/app_settings.py:453
1245
1602
  msgid "Dovecot LDAP config file"
1246
1603
  msgstr "Fichier de configuration Dovecot pour LDAP"
1247
1604
 
1248
- #: core/app_settings.py:467
1605
+ #: core/app_settings.py:455
1249
1606
  msgid ""
1250
1607
  "Location of the configuration file which contains Dovecot LDAP settings."
1251
1608
  msgstr "Emplacement du fichier de configuration qui contient les paramètres LDAP de Dovecot"
1252
1609
 
1253
- #: core/app_settings.py:480
1610
+ #: core/app_settings.py:468
1254
1611
  msgid "Dashboard"
1255
1612
  msgstr "Tableau de bord"
1256
1613
 
1257
- #: core/app_settings.py:486
1614
+ #: core/app_settings.py:474
1258
1615
  msgid "Custom welcome message"
1259
1616
  msgstr "Message d'accueil personnalisé"
1260
1617
 
1261
- #: core/app_settings.py:488
1618
+ #: core/app_settings.py:476
1262
1619
  msgid "A welcome message that will be displayed instead the default one"
1263
1620
  msgstr "Un message d'accueil qui sera affiché à la place de celui par défaut"
1264
1621
 
1265
- #: core/app_settings.py:495
1622
+ #: core/app_settings.py:483
1266
1623
  msgid "Custom RSS feed"
1267
1624
  msgstr "Flux RSS personnalisé"
1268
1625
 
1269
- #: core/app_settings.py:497
1626
+ #: core/app_settings.py:485
1270
1627
  msgid "Display custom RSS feed to resellers and domain administrators"
1271
1628
  msgstr "Afficher un flux RSS personnalisé aux revendeurs et administrateurs de domaine"
1272
1629
 
1273
- #: core/app_settings.py:506
1630
+ #: core/app_settings.py:494
1274
1631
  msgid "Display custom RSS feed to super admins"
1275
1632
  msgstr "Afficher le flux RSS personnalisé aux super admins"
1276
1633
 
1277
- #: core/app_settings.py:509
1634
+ #: core/app_settings.py:497
1278
1635
  msgid "Display custom RSS feed also to super administrators"
1279
1636
  msgstr "Afficher le flux RSS personnalisé aussi aux super administrateurs"
1280
1637
 
1281
- #: core/app_settings.py:517
1638
+ #: core/app_settings.py:505
1282
1639
  msgid "Hide features widget"
1283
1640
  msgstr "Masquer le widget des fonctionnalités"
1284
1641
 
1285
- #: core/app_settings.py:519
1642
+ #: core/app_settings.py:507
1286
1643
  msgid "Hide features widget for resellers and domain administrators"
1287
1644
  msgstr "Masquer le widget des fonctionnalités pour les revendeurs et les administrateurs de domaine"
1288
1645
 
1289
- #: core/app_settings.py:531
1646
+ #: core/app_settings.py:519
1290
1647
  msgid "Theme"
1291
1648
  msgstr "Thème"
1292
1649
 
1293
- #: core/app_settings.py:537
1650
+ #: core/app_settings.py:525
1294
1651
  msgid "Primary theme color"
1295
1652
  msgstr "Couleur principale du thème"
1296
1653
 
1297
- #: core/app_settings.py:539
1654
+ #: core/app_settings.py:527
1298
1655
  msgid ""
1299
1656
  "Primary color of the theme (hexadecimal code), used as the background color "
1300
1657
  "of the left menu for example"
1301
1658
  msgstr "Couleur principale du thème (code hexadécimal), utilisée par exemple comme couleur de fond dans le menu de gauche"
1302
1659
 
1303
- #: core/app_settings.py:548
1660
+ #: core/app_settings.py:536
1304
1661
  msgid "Primary theme color (lighter version)"
1305
1662
  msgstr "Couleur principale du thème (version plus claire)"
1306
1663
 
1307
- #: core/app_settings.py:551 core/app_settings.py:563
1664
+ #: core/app_settings.py:539 core/app_settings.py:551
1308
1665
  msgid "Primary color of the theme (hexadecimal code)"
1309
1666
  msgstr "Couleur principale du thème (code hexadécimal)"
1310
1667
 
1311
- #: core/app_settings.py:560
1668
+ #: core/app_settings.py:548
1312
1669
  msgid "Primary theme color (darker version)"
1313
1670
  msgstr "Couleur principale du thème (version plus sombre)"
1314
1671
 
1315
- #: core/app_settings.py:571
1672
+ #: core/app_settings.py:559
1316
1673
  msgid "Secondary theme color"
1317
1674
  msgstr "Couleur secondaire du thème"
1318
1675
 
1319
- #: core/app_settings.py:573
1676
+ #: core/app_settings.py:561
1320
1677
  msgid ""
1321
1678
  "Secondary color of the theme (hexadecimal code), used as the background "
1322
1679
  "color of some buttons for example"
1323
1680
  msgstr "Couleur secondaire du thème (code hexadécimal), utilisée par exemple comme couleur de fond de certains boutons"
1324
1681
 
1325
- #: core/app_settings.py:581
1682
+ #: core/app_settings.py:569
1326
1683
  msgid "Labels theme color"
1327
1684
  msgstr "Couleur des libellés du thème"
1328
1685
 
1329
- #: core/app_settings.py:583
1686
+ #: core/app_settings.py:571
1330
1687
  msgid "Theme color for labels (hexadecimal code)"
1331
1688
  msgstr "Couleur du thème pour les libellés (code hexadécimal)"
1332
1689
 
1333
- #: core/app_settings.py:595
1690
+ #: core/app_settings.py:583
1334
1691
  msgid "Notifications"
1335
1692
  msgstr "Notifications"
1336
1693
 
1337
- #: core/app_settings.py:601
1694
+ #: core/app_settings.py:589
1338
1695
  msgid "Sender address"
1339
1696
  msgstr "Adresse d'envoi"
1340
1697
 
1341
- #: core/app_settings.py:603
1698
+ #: core/app_settings.py:591
1342
1699
  msgid "Email address used to send notifications."
1343
1700
  msgstr "Adresse utilisée pour envoyer les notifications."
1344
1701
 
1345
- #: core/app_settings.py:614
1702
+ #: core/app_settings.py:602
1346
1703
  msgid "Public API"
1347
1704
  msgstr "API publique"
1348
1705
 
1349
- #: core/app_settings.py:620
1706
+ #: core/app_settings.py:608
1350
1707
  msgid "Enable communication"
1351
1708
  msgstr "Activer la communication"
1352
1709
 
1353
- #: core/app_settings.py:622 core/app_settings.py:632
1710
+ #: core/app_settings.py:610 core/app_settings.py:620
1354
1711
  msgid "Automatically checks if a newer version is available"
1355
1712
  msgstr "Vérifie automatiquement si une nouvelle version est disponible"
1356
1713
 
1357
- #: core/app_settings.py:629
1714
+ #: core/app_settings.py:617
1358
1715
  msgid "Check new versions"
1359
1716
  msgstr "Vérifier les nouvelles versions"
1360
1717
 
1361
- #: core/app_settings.py:640
1718
+ #: core/app_settings.py:628
1362
1719
  msgid "Send an email when new versions are found"
1363
1720
  msgstr "Envoyer un email quand de nouvelles versions sont trouvées"
1364
1721
 
1365
- #: core/app_settings.py:644
1722
+ #: core/app_settings.py:632
1366
1723
  msgid "Send an email to notify admins about new versions"
1367
1724
  msgstr "Envoyer un email pour notifier les administrateurs à propos des nouvelles versions"
1368
1725
 
1369
- #: core/app_settings.py:651 sievefilters/constants.py:25
1726
+ #: core/app_settings.py:639 sievefilters/constants.py:25
1370
1727
  msgid "Recipient"
1371
1728
  msgstr "Destinataire"
1372
1729
 
1373
- #: core/app_settings.py:654
1730
+ #: core/app_settings.py:642
1374
1731
  msgid "Recipient of new versions notification emails."
1375
1732
  msgstr "Destinataire des emails de notification pour les nouvelles versions"
1376
1733
 
1377
- #: core/app_settings.py:661
1734
+ #: core/app_settings.py:649
1378
1735
  msgid "Send statistics"
1379
1736
  msgstr "Envoyer des statistiques"
1380
1737
 
1381
- #: core/app_settings.py:664
1738
+ #: core/app_settings.py:652
1382
1739
  msgid "Send statistics to Modoboa public API (counters and used extensions)"
1383
1740
  msgstr "Envoyer des statistiques à l'API publique de Modoboa (compteurs et extensions utilisées)"
1384
1741
 
1385
- #: core/app_settings.py:683
1742
+ #: core/app_settings.py:671
1386
1743
  msgid "Enable inactive account tracking"
1387
1744
  msgstr "Activer le suivi des comptes inactifs"
1388
1745
 
1389
- #: core/app_settings.py:686
1746
+ #: core/app_settings.py:674
1390
1747
  msgid ""
1391
1748
  "Allow the administrator to set a threshold (in days) beyond which an account"
1392
1749
  " is considered inactive if the user hasn't logged in"
1393
1750
  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é"
1394
1751
 
1395
- #: core/app_settings.py:695
1752
+ #: core/app_settings.py:683
1396
1753
  msgid "Inactive account threshold"
1397
1754
  msgstr "Seuil des comptes inactifs"
1398
1755
 
1399
- #: core/app_settings.py:698
1756
+ #: core/app_settings.py:686
1400
1757
  msgid ""
1401
1758
  "An account with a last login date greater than this threshold (in days) will"
1402
1759
  " be considered as inactive"
1403
1760
  msgstr "Un compte avec une date de dernière connexion antérieure à ce seuil sera considéré comme inactif"
1404
1761
 
1405
- #: core/app_settings.py:707
1762
+ #: core/app_settings.py:695
1406
1763
  msgid "Top notifications check interval"
1407
1764
  msgstr "Intervalle de vérification des notifications"
1408
1765
 
1409
- #: core/app_settings.py:710
1766
+ #: core/app_settings.py:698
1410
1767
  msgid "Interval between two top notification checks (in seconds)"
1411
1768
  msgstr "Intervalle entre deux vérifications de notification (en secondes)"
1412
1769
 
1413
- #: core/app_settings.py:717
1770
+ #: core/app_settings.py:705
1414
1771
  msgid "Maximum log record age"
1415
1772
  msgstr "Age maximal d'un enregistrement du journal"
1416
1773
 
1417
- #: core/app_settings.py:719
1774
+ #: core/app_settings.py:707
1418
1775
  msgid "The maximum age in days of a log record"
1419
1776
  msgstr "L'age maximal en jours d'un enregistrement du journal"
1420
1777
 
1421
- #: core/app_settings.py:727
1778
+ #: core/app_settings.py:715
1422
1779
  msgid "Retention time in message history"
1423
1780
  msgstr "Durée de rétention dans l'historique des messages"
1424
1781
 
1425
- #: core/app_settings.py:730
1782
+ #: core/app_settings.py:718
1426
1783
  msgid "Retention time (in days) of a message in the message history section"
1427
1784
  msgstr "Durée de rétention (en jours) d'un message dans l'historique des messages"
1428
1785
 
1429
- #: core/app_settings.py:737
1786
+ #: core/app_settings.py:725
1430
1787
  msgid "Items per page"
1431
1788
  msgstr "Eléments par page"
1432
1789
 
1433
- #: core/app_settings.py:739
1790
+ #: core/app_settings.py:727
1434
1791
  msgid "Number of displayed items per page"
1435
1792
  msgstr "Nombre d'éléments affichés par page"
1436
1793
 
1437
- #: core/app_settings.py:746
1438
- msgid "Default top redirection"
1439
- msgstr "Redirection par défaut"
1440
-
1441
- #: core/app_settings.py:748
1442
- msgid "The default redirection used when no application is specified"
1443
- msgstr "La redirection appliquée par défaut quand aucune application n'est spécifiée"
1444
-
1445
1794
  #: core/checks.py:15
1446
1795
  msgid ""
1447
1796
  "You have USE_TZ set to False, this may result in issues during transitions "
@@ -1569,7 +1918,7 @@ msgstr "Vous ne pouvez pas supprimer votre propre compte"
1569
1918
  msgid "One or more updates are available"
1570
1919
  msgstr "Une ou plusieurs mises à jour sont disponibles!"
1571
1920
 
1572
- #: core/handlers.py:138
1921
+ #: core/handlers.py:140
1573
1922
  #, python-format
1574
1923
  msgid "You are still using a deprecated password scheme (%s)"
1575
1924
  msgstr "Vous utilisez encore une méthode de chiffrement de mot de passe obsolète (%s)"
@@ -1729,22 +2078,22 @@ msgstr[2] "\nLes mises à jour suivantes sont disponibles :\n"
1729
2078
  msgid "The core part of Modoboa"
1730
2079
  msgstr "Le coeur de Modoboa"
1731
2080
 
1732
- #: core/views/auth.py:65
2081
+ #: core/views/auth.py:82
1733
2082
  #, python-format
1734
2083
  msgid "User '%s' successfully logged in"
1735
2084
  msgstr "Utiliseur '%s' connecté avec succès"
1736
2085
 
1737
- #: core/views/auth.py:109
2086
+ #: core/views/auth.py:128
1738
2087
  #, python-format
1739
2088
  msgid "Password scheme mismatch. Updating %s password"
1740
2089
  msgstr "La méthode de chiffrement du mot de passe diffère. Mise à jour du mot de passe de %s"
1741
2090
 
1742
- #: core/views/auth.py:116
2091
+ #: core/views/auth.py:135
1743
2092
  #, python-format
1744
2093
  msgid "Password hash parameter missmatch. Updating %s password"
1745
2094
  msgstr "Le paramètre de hash du mot de passe ne correspond pas. Mise à jour %s du mot de passe"
1746
2095
 
1747
- #: core/views/auth.py:154
2096
+ #: core/views/auth.py:173
1748
2097
  msgid "User '{}' successfully logged out"
1749
2098
  msgstr "Utilisateur '{}' déconnecté avec succès"
1750
2099
 
@@ -1769,14 +2118,10 @@ msgid "Not resolved"
1769
2118
  msgstr "Non résolu"
1770
2119
 
1771
2120
  #: dmarc/models.py:10 dmarc/models.py:16 pdfcredentials/constants.py:7
1772
- #: webmail/constants.py:18
2121
+ #: webmail/constants.py:38
1773
2122
  msgid "None"
1774
2123
  msgstr "Aucun"
1775
2124
 
1776
- #: dmarc/models.py:11
1777
- msgid "Quarantine"
1778
- msgstr "Quarantaine"
1779
-
1780
2125
  #: dmarc/models.py:12
1781
2126
  msgid "Reject"
1782
2127
  msgstr "Rejeter"
@@ -1901,7 +2246,11 @@ msgstr "Tag obligatoire p introuvable"
1901
2246
  msgid "Public key mismatchs"
1902
2247
  msgstr "La clé publique ne correspond pas"
1903
2248
 
1904
- #: imap_migration/api/v2/serializers.py:117
2249
+ #: imap_migration/api/v2/serializers.py:66
2250
+ msgid "Migrated domain with name {} already exists"
2251
+ msgstr "Un domaine migré avec le nom {} existe déjà"
2252
+
2253
+ #: imap_migration/api/v2/serializers.py:130
1905
2254
  msgid "Access denied"
1906
2255
  msgstr "Accès refusé"
1907
2256
 
@@ -2574,7 +2923,7 @@ msgstr "Emplacement du dashboard rspamd. Peut être soit une URL relative (ie. '
2574
2923
  msgid "Rspamd"
2575
2924
  msgstr "Rspamd"
2576
2925
 
2577
- #: sievefilters/api/v2/viewsets.py:193
2926
+ #: sievefilters/api/v2/viewsets.py:203
2578
2927
  #, python-format
2579
2928
  msgid "Filter %s already exists"
2580
2929
  msgstr "Le filtre %s existe déjà"
@@ -2647,7 +2996,7 @@ msgstr "est"
2647
2996
  msgid "is not"
2648
2997
  msgstr "n'est pas"
2649
2998
 
2650
- #: sievefilters/constants.py:23 webmail/lib/imapemail.py:304
2999
+ #: sievefilters/constants.py:23 webmail/lib/imapemail.py:302
2651
3000
  msgid "Subject"
2652
3001
  msgstr "Sujet"
2653
3002
 
@@ -2873,19 +3222,19 @@ msgstr "Taille maximale d'une pièce jointe en octets (ou KB, MG, GB si précis
2873
3222
  msgid "SMTP settings"
2874
3223
  msgstr "Paramètres SMTP"
2875
3224
 
2876
- #: webmail/app_settings.py:75
3225
+ #: webmail/app_settings.py:75 webmail/app_settings.py:121
2877
3226
  msgid "Address of your SMTP server"
2878
3227
  msgstr "Adresse de votre serveur SMTP"
2879
3228
 
2880
- #: webmail/app_settings.py:82
3229
+ #: webmail/app_settings.py:82 webmail/app_settings.py:128
2881
3230
  msgid "Secured connection mode"
2882
3231
  msgstr "Mode de connexion sécurisé"
2883
3232
 
2884
- #: webmail/app_settings.py:84
3233
+ #: webmail/app_settings.py:84 webmail/app_settings.py:130
2885
3234
  msgid "Use a secured connection to access SMTP server"
2886
3235
  msgstr "Utiliser une connexion sécurisée pour accéder au serveur SMTP"
2887
3236
 
2888
- #: webmail/app_settings.py:93
3237
+ #: webmail/app_settings.py:93 webmail/app_settings.py:139
2889
3238
  msgid "Listening port of your SMTP server"
2890
3239
  msgstr "Port d'écoute de votre serveur SMTP"
2891
3240
 
@@ -2897,103 +3246,99 @@ msgstr "Authentification requise"
2897
3246
  msgid "Server needs authentication"
2898
3247
  msgstr "Le serveur nécessite une authentification"
2899
3248
 
2900
- #: webmail/app_settings.py:118
2901
- msgid "Display"
2902
- msgstr "Affichage"
3249
+ #: webmail/app_settings.py:113
3250
+ msgid "Scheduling settings"
3251
+ msgstr "Paramètres de planification"
2903
3252
 
2904
- #: webmail/app_settings.py:124
3253
+ #: webmail/app_settings.py:161
2905
3254
  msgid "Default message display mode"
2906
3255
  msgstr "Mode d'affichage par défaut"
2907
3256
 
2908
- #: webmail/app_settings.py:126
3257
+ #: webmail/app_settings.py:163
2909
3258
  msgid "The default mode used when displaying a message"
2910
3259
  msgstr "Le mode par défaut utilisé pour afficher un message"
2911
3260
 
2912
- #: webmail/app_settings.py:133
3261
+ #: webmail/app_settings.py:170
2913
3262
  msgid "Enable HTML links display"
2914
3263
  msgstr "Activer l'affichage des liens HTML"
2915
3264
 
2916
- #: webmail/app_settings.py:136
3265
+ #: webmail/app_settings.py:173
2917
3266
  msgid "Enable/Disable HTML links display"
2918
3267
  msgstr "Activer/Désactiver l'affichage des liens HTML"
2919
3268
 
2920
- #: webmail/app_settings.py:144
2921
- msgid "Number of displayed emails per page"
2922
- msgstr "Nombre de messages affichés par page"
2923
-
2924
- #: webmail/app_settings.py:147
3269
+ #: webmail/app_settings.py:184
2925
3270
  msgid "Sets the maximum number of messages displayed in a page"
2926
3271
  msgstr "Définir le nombre maximal de messages affichés dans une page"
2927
3272
 
2928
- #: webmail/app_settings.py:154
3273
+ #: webmail/app_settings.py:191
2929
3274
  msgid "Listing refresh rate"
2930
3275
  msgstr "Taux de rafraichissement de la liste"
2931
3276
 
2932
- #: webmail/app_settings.py:156
3277
+ #: webmail/app_settings.py:193
2933
3278
  msgid "Automatic listing refresh rate (in secconds)"
2934
3279
  msgstr "Taux de rafraichissement automatique de la liste (en secondes)"
2935
3280
 
2936
- #: webmail/app_settings.py:163
3281
+ #: webmail/app_settings.py:200
2937
3282
  msgid "Folder container's width"
2938
3283
  msgstr "Largeur du conteneur des dossiers"
2939
3284
 
2940
- #: webmail/app_settings.py:165
3285
+ #: webmail/app_settings.py:202
2941
3286
  msgid "The width of the folder list container"
2942
3287
  msgstr "La largeur du conteneur de la liste des dossiers"
2943
3288
 
2944
- #: webmail/app_settings.py:176
3289
+ #: webmail/app_settings.py:213
2945
3290
  msgid "Folders"
2946
3291
  msgstr "Dossiers"
2947
3292
 
2948
- #: webmail/app_settings.py:182
3293
+ #: webmail/app_settings.py:219
2949
3294
  msgid "Trash folder"
2950
3295
  msgstr "Dossier poubelle"
2951
3296
 
2952
- #: webmail/app_settings.py:184
3297
+ #: webmail/app_settings.py:221
2953
3298
  msgid "Folder where deleted messages go"
2954
3299
  msgstr "Dossier dans lequel vont les messages supprimés"
2955
3300
 
2956
- #: webmail/app_settings.py:191
3301
+ #: webmail/app_settings.py:228
2957
3302
  msgid "Sent folder"
2958
3303
  msgstr "Dossier envoyé"
2959
3304
 
2960
- #: webmail/app_settings.py:193
3305
+ #: webmail/app_settings.py:230
2961
3306
  msgid "Folder where copies of sent messages go"
2962
3307
  msgstr "Dossier dans lequel vont les copies de messages envoyés"
2963
3308
 
2964
- #: webmail/app_settings.py:200
3309
+ #: webmail/app_settings.py:237
2965
3310
  msgid "Drafts folder"
2966
3311
  msgstr "Dossier brouillon"
2967
3312
 
2968
- #: webmail/app_settings.py:201
3313
+ #: webmail/app_settings.py:238
2969
3314
  msgid "Folder where drafts go"
2970
3315
  msgstr "Dossier dans lequel vont les brouillons"
2971
3316
 
2972
- #: webmail/app_settings.py:207
3317
+ #: webmail/app_settings.py:244
2973
3318
  msgid "Junk folder"
2974
3319
  msgstr "Dossier Junk"
2975
3320
 
2976
- #: webmail/app_settings.py:209
3321
+ #: webmail/app_settings.py:246
2977
3322
  msgid "Folder where junk messages should go"
2978
3323
  msgstr "Dossier dans lequel les messages indésirables doivent aller"
2979
3324
 
2980
- #: webmail/app_settings.py:220
3325
+ #: webmail/app_settings.py:257
2981
3326
  msgid "Composing messages"
2982
3327
  msgstr "Rédaction de messages"
2983
3328
 
2984
- #: webmail/app_settings.py:226
3329
+ #: webmail/app_settings.py:263
2985
3330
  msgid "Default editor"
2986
3331
  msgstr "Editeur par défaut"
2987
3332
 
2988
- #: webmail/app_settings.py:228
3333
+ #: webmail/app_settings.py:265
2989
3334
  msgid "The default editor to use when composing a message"
2990
3335
  msgstr "L'éditeur à utiliser par défaut pour rédiger un message"
2991
3336
 
2992
- #: webmail/app_settings.py:235
3337
+ #: webmail/app_settings.py:272
2993
3338
  msgid "Signature text"
2994
3339
  msgstr "Texte de signature"
2995
3340
 
2996
- #: webmail/app_settings.py:237
3341
+ #: webmail/app_settings.py:274
2997
3342
  msgid "User defined email signature"
2998
3343
  msgstr "Signature email personnalisée"
2999
3344
 
@@ -3005,43 +3350,59 @@ msgstr "Réponse du serveur"
3005
3350
  msgid "Failed to remove attachment: "
3006
3351
  msgstr "Impossible de supprimer la pièce jointe :"
3007
3352
 
3008
- #: webmail/lib/imapemail.py:272
3353
+ #: webmail/lib/imapemail.py:270
3009
3354
  msgid "wrote:"
3010
3355
  msgstr "a écrit :"
3011
3356
 
3012
- #: webmail/lib/imapemail.py:306
3357
+ #: webmail/lib/imapemail.py:304
3013
3358
  msgid "Date"
3014
3359
  msgstr "Date"
3015
3360
 
3016
- #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3361
+ #: webmail/lib/imapemail.py:320 webmail/lib/imapemail.py:323
3017
3362
  msgid "Original message"
3018
3363
  msgstr "Message original"
3019
3364
 
3020
- #: webmail/lib/imaputils.py:221
3365
+ #: webmail/lib/imaputils.py:222
3021
3366
  msgid "Failed to retrieve hierarchy delimiter"
3022
3367
  msgstr "Echec lors de la récupération du séparateur de hierarchie"
3023
3368
 
3024
- #: webmail/lib/imaputils.py:472
3369
+ #: webmail/lib/imaputils.py:478
3025
3370
  msgid "Inbox"
3026
3371
  msgstr "Boite de réception"
3027
3372
 
3028
- #: webmail/lib/imaputils.py:476
3373
+ #: webmail/lib/imaputils.py:482
3029
3374
  msgid "Drafts"
3030
3375
  msgstr "Brouillons"
3031
3376
 
3032
- #: webmail/lib/imaputils.py:481
3377
+ #: webmail/lib/imaputils.py:487
3033
3378
  msgid "Junk"
3034
3379
  msgstr "Indésirables"
3035
3380
 
3036
- #: webmail/lib/imaputils.py:486
3381
+ #: webmail/lib/imaputils.py:492
3037
3382
  msgid "Sent"
3038
3383
  msgstr "Envoyés"
3039
3384
 
3040
- #: webmail/lib/imaputils.py:491
3385
+ #: webmail/lib/imaputils.py:500
3386
+ msgid "Scheduled"
3387
+ msgstr "Planifiés"
3388
+
3389
+ #: webmail/lib/imaputils.py:507
3041
3390
  msgid "Trash"
3042
3391
  msgstr "Corbeille"
3043
3392
 
3044
- #: webmail/viewsets.py:343
3393
+ #: webmail/serializers.py:220
3394
+ msgid "Moving scheduled messages is forbidden"
3395
+ msgstr "Déplacer des messages planifiés n'est pas autorisé"
3396
+
3397
+ #: webmail/serializers.py:253
3398
+ msgid "Only datetime in the future is allowed"
3399
+ msgstr "Seule une date à venir est autorisée"
3400
+
3401
+ #: webmail/serializers.py:258
3402
+ msgid "Provived datetime must be one minute in the future at least"
3403
+ msgstr "La date fournie doit être au minimum une minute dans le futur"
3404
+
3405
+ #: webmail/viewsets.py:359
3045
3406
  #, python-format
3046
3407
  msgid "Attachment is too big (limit: %s)"
3047
3408
  msgstr "La pièce jointe est trop grosse (limite : %s)"