modoboa 2.4.11__py3-none-any.whl → 2.5.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 (314) hide show
  1. modoboa/admin/api/v2/serializers.py +14 -0
  2. modoboa/amavis/__init__.py +3 -0
  3. modoboa/amavis/app_settings.py +276 -0
  4. modoboa/amavis/apps.py +18 -0
  5. modoboa/amavis/checks/__init__.py +2 -0
  6. modoboa/amavis/checks/settings_checks.py +59 -0
  7. modoboa/amavis/dbrouter.py +35 -0
  8. modoboa/amavis/factories.py +164 -0
  9. modoboa/amavis/handlers.py +146 -0
  10. modoboa/amavis/lib.py +381 -0
  11. modoboa/amavis/management/__init__.py +0 -0
  12. modoboa/amavis/management/commands/__init__.py +0 -0
  13. modoboa/amavis/management/commands/amnotify.py +99 -0
  14. modoboa/amavis/management/commands/qcleanup.py +84 -0
  15. modoboa/amavis/migrations/0001_initial.py +340 -0
  16. modoboa/amavis/migrations/__init__.py +0 -0
  17. modoboa/amavis/models.py +226 -0
  18. modoboa/amavis/serializers.py +139 -0
  19. modoboa/amavis/sql_connector.py +240 -0
  20. modoboa/amavis/sql_email.py +66 -0
  21. modoboa/amavis/tasks.py +33 -0
  22. modoboa/amavis/templates/amavis/notifications/pending_requests.html +16 -0
  23. modoboa/amavis/tests/__init__.py +0 -0
  24. modoboa/amavis/tests/sa-learn +3 -0
  25. modoboa/amavis/tests/sample_messages/quarantined-input.txt +80 -0
  26. modoboa/amavis/tests/sample_messages/quarantined-output-plain_nolinks.txt +17 -0
  27. modoboa/amavis/tests/spamc +3 -0
  28. modoboa/amavis/tests/test_checks.py +25 -0
  29. modoboa/amavis/tests/test_handlers.py +214 -0
  30. modoboa/amavis/tests/test_lib.py +90 -0
  31. modoboa/amavis/tests/test_management_commands.py +45 -0
  32. modoboa/amavis/tests/test_sql_email.py +67 -0
  33. modoboa/amavis/tests/test_utils.py +19 -0
  34. modoboa/amavis/tests/test_viewsets.py +319 -0
  35. modoboa/amavis/urls.py +11 -0
  36. modoboa/amavis/utils.py +105 -0
  37. modoboa/amavis/viewsets.py +265 -0
  38. modoboa/core/api/v1/serializers.py +7 -5
  39. modoboa/core/api/v2/serializers.py +4 -2
  40. modoboa/core/api/v2/tests.py +16 -4
  41. modoboa/core/api/v2/urls.py +5 -5
  42. modoboa/core/api/v2/views.py +3 -1
  43. modoboa/core/api/v2/viewsets.py +24 -3
  44. modoboa/core/handlers.py +6 -2
  45. modoboa/core/management/commands/add_allowed_hosts.py +33 -0
  46. modoboa/core/management/commands/load_initial_data.py +10 -0
  47. modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +23 -5
  48. modoboa/core/tests/test_core.py +24 -0
  49. modoboa/core/utils.py +3 -0
  50. modoboa/frontend_dist/assets/AccountAliasForm-BuSy_1n9.js +1 -0
  51. modoboa/frontend_dist/assets/AccountEditView-qdJmLM_e.js +1 -0
  52. modoboa/frontend_dist/assets/AccountLayout-DrN7vHsX.js +1 -0
  53. modoboa/frontend_dist/assets/AccountPasswordSubForm-DZGt_Xgq.js +1 -0
  54. modoboa/frontend_dist/assets/AccountView-CO65y0vZ.js +1 -0
  55. modoboa/frontend_dist/assets/AddressBook-BZNUlhek.js +1 -0
  56. modoboa/frontend_dist/assets/AdminLayout-CTNhuwTw.js +1 -0
  57. modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +1 -0
  58. modoboa/frontend_dist/assets/AlarmsView-DN_JIw9g.js +1 -0
  59. modoboa/frontend_dist/assets/AliasEditView-DjpPUTp9.js +1 -0
  60. modoboa/frontend_dist/assets/{AliasRecipientForm-IOae6sjF.js → AliasRecipientForm-B1Y8wFdP.js} +1 -1
  61. modoboa/frontend_dist/assets/AliasView-GOJ5lyQH.js +1 -0
  62. modoboa/frontend_dist/assets/AuditTrailView-fbXmq70e.js +1 -0
  63. modoboa/frontend_dist/assets/CalendarView-LlQQNEPL.js +1 -0
  64. modoboa/frontend_dist/assets/{ChoiceField-DJ_c78Cm.js → ChoiceField-B3ReQHVe.js} +1 -1
  65. modoboa/frontend_dist/assets/ComposeEmailForm-Bs1fZXAL.js +1 -0
  66. modoboa/frontend_dist/assets/ComposeEmailView-s3LMl3pO.js +1 -0
  67. modoboa/frontend_dist/assets/ConfirmDialog-DY_kUHLG.js +1 -0
  68. modoboa/frontend_dist/assets/{ConnectedLayout-Dvwmicnc.css → ConnectedLayout-Bxh21hcH.css} +1 -1
  69. modoboa/frontend_dist/assets/ConnectedLayout-UWjiYBNw.js +1 -0
  70. modoboa/frontend_dist/assets/CreationForm-ORg3fazt.js +1 -0
  71. modoboa/frontend_dist/assets/DashboardView-Dplk9itS.js +1 -0
  72. modoboa/frontend_dist/assets/DomainAdminList-DVn9x0rB.js +1 -0
  73. modoboa/frontend_dist/assets/DomainEditView-nAoL64D_.js +1 -0
  74. modoboa/frontend_dist/assets/{DomainTransportForm-C2xo0Yd7.js → DomainTransportForm-CA-DNUxX.js} +1 -1
  75. modoboa/frontend_dist/assets/{DomainView-BDKoBFYr.css → DomainView-CCLYXPHx.css} +1 -1
  76. modoboa/frontend_dist/assets/DomainView-CdXPpwJG.js +5 -0
  77. modoboa/frontend_dist/assets/DomainsView-B_59gowf.js +1 -0
  78. modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +1 -0
  79. modoboa/frontend_dist/assets/EmailField-CwcwI5xW.js +1 -0
  80. modoboa/frontend_dist/assets/EmailView-BshxcfAK.js +1 -0
  81. modoboa/frontend_dist/assets/EmptyLayout-DFfhnhLi.js +1 -0
  82. modoboa/frontend_dist/assets/FiltersView-Cf20MSTK.js +1 -0
  83. modoboa/frontend_dist/assets/ForwardEmailView-CZG062os.js +1 -0
  84. modoboa/frontend_dist/assets/{HtmlEditor-CJ9umKeO.js → HtmlEditor-Bh4c689R.js} +1 -1
  85. modoboa/frontend_dist/assets/IdentitiesView-BXAuU1YX.js +1 -0
  86. modoboa/frontend_dist/assets/{IdentitiesView-0ziuQ5s-.css → IdentitiesView-DPrrRMS5.css} +1 -1
  87. modoboa/frontend_dist/assets/InformationView-C9vvvQhJ.css +1 -0
  88. modoboa/frontend_dist/assets/InformationView-Cn5FZW7H.js +1 -0
  89. modoboa/frontend_dist/assets/{LoadingData-CYwX3Jpn.js → LoadingData-CdVvm4FI.js} +1 -1
  90. modoboa/frontend_dist/assets/{LoginCallbackView-E01qkKn0.js → LoginCallbackView-B9hAH4MI.js} +1 -1
  91. modoboa/frontend_dist/assets/{LoginView-Cy4uFV9h.js → LoginView-tHIR4Adc.js} +1 -1
  92. modoboa/frontend_dist/assets/MailboxView-Bugu2vhg.js +1 -0
  93. modoboa/frontend_dist/assets/MenuItems-PXjiG-fs.js +1 -0
  94. modoboa/frontend_dist/assets/MessageView-Cy4STShm.js +1 -0
  95. modoboa/frontend_dist/assets/MessagesView-DdkuEgfX.js +1 -0
  96. modoboa/frontend_dist/assets/MigrationsView-CidSEjCF.js +1 -0
  97. modoboa/frontend_dist/assets/{ParametersForm-BZM0QSvg.js → ParametersForm-CAv4SH-E.js} +1 -1
  98. modoboa/frontend_dist/assets/ParametersView-CX7Ffemw.js +1 -0
  99. modoboa/frontend_dist/assets/ParametersView-CrbNcmV3.js +1 -0
  100. modoboa/frontend_dist/assets/ProviderEditView-CrltAQXl.js +1 -0
  101. modoboa/frontend_dist/assets/ProviderGeneralForm-BYAzVnXM.js +1 -0
  102. modoboa/frontend_dist/assets/ProvidersView-osjIY4Ex.js +1 -0
  103. modoboa/frontend_dist/assets/QuarantineLayout-B8EcU9vS.js +1 -0
  104. modoboa/frontend_dist/assets/QuarantineView-D4gOE4EQ.css +1 -0
  105. modoboa/frontend_dist/assets/QuarantineView-D8Qg0MXA.js +1 -0
  106. modoboa/frontend_dist/assets/ReplyEmailView-BABPqWhd.js +1 -0
  107. modoboa/frontend_dist/assets/ResourcesForm-OaqdRYVs.js +1 -0
  108. modoboa/frontend_dist/assets/SelfServiceLayout-d277YTGR.js +1 -0
  109. modoboa/frontend_dist/assets/{SettingsView-BxLJBFY0.js → SettingsView-9iNcDhkI.js} +2 -2
  110. modoboa/frontend_dist/assets/StatisticsView-cHsPyGkL.js +1 -0
  111. modoboa/frontend_dist/assets/TimeSerieChart--V83dcJ9.js +1 -0
  112. modoboa/frontend_dist/assets/UserLayout-B3sBiTcZ.js +1 -0
  113. modoboa/frontend_dist/assets/VAlert-BuaaYN2h.js +1 -0
  114. modoboa/frontend_dist/assets/VApp-CKP-6zGP.js +1 -0
  115. modoboa/frontend_dist/assets/VAutocomplete-Dwv6_Rzq.js +1 -0
  116. modoboa/frontend_dist/assets/VAvatar-Cmga0vj6.js +1 -0
  117. modoboa/frontend_dist/assets/VBadge-BQrRJ9S0.css +1 -0
  118. modoboa/frontend_dist/assets/VBadge-CixeK87a.js +1 -0
  119. modoboa/frontend_dist/assets/VCard-CxH9DWoK.js +1 -0
  120. modoboa/frontend_dist/assets/VCheckbox-62GOpvvP.js +1 -0
  121. modoboa/frontend_dist/assets/{VCheckboxBtn-Dt810gWf.js → VCheckboxBtn-DMoNtKT8.js} +1 -1
  122. modoboa/frontend_dist/assets/VChip-D_styETR.js +1 -0
  123. modoboa/frontend_dist/assets/VColorPicker-BHscBGQV.js +1 -0
  124. modoboa/frontend_dist/assets/{VContainer-DvTbsotR.js → VContainer-B46caNs1.js} +1 -1
  125. modoboa/frontend_dist/assets/VDataTable-Bh8NbVSx.js +1 -0
  126. modoboa/frontend_dist/assets/VDataTableServer-BDR5hOmo.js +1 -0
  127. modoboa/frontend_dist/assets/VDataTableVirtual-BOQlNtIG.js +1 -0
  128. modoboa/frontend_dist/assets/{VDialog-Bk6EWNhz.js → VDialog-BcTg7w6P.js} +1 -1
  129. modoboa/frontend_dist/assets/VExpansionPanels-BmH5Jl2Z.js +1 -0
  130. modoboa/frontend_dist/assets/VFileInput-BC4yAygd.js +1 -0
  131. modoboa/frontend_dist/assets/VForm-D5iPGkde.js +1 -0
  132. modoboa/frontend_dist/assets/VInput-CcxkaOXT.css +1 -0
  133. modoboa/frontend_dist/assets/VInput-CoDJzvaW.js +1 -0
  134. modoboa/frontend_dist/assets/VMenu-gUG70-zD.js +1 -0
  135. modoboa/frontend_dist/assets/VPicker-BXuKT3zB.js +1 -0
  136. modoboa/frontend_dist/assets/VProgressCircular-BtOPiGCg.js +1 -0
  137. modoboa/frontend_dist/assets/VRadioGroup-DIFZKSn-.js +1 -0
  138. modoboa/frontend_dist/assets/{VRow-BF35mT1S.js → VRow-ozg66L7j.js} +1 -1
  139. modoboa/frontend_dist/assets/VSelect-C3RjAa45.js +1 -0
  140. modoboa/frontend_dist/assets/VSelectionControl-zyz-fJvC.js +1 -0
  141. modoboa/frontend_dist/assets/VSheet-BNx2X4Mk.js +1 -0
  142. modoboa/frontend_dist/assets/VSpacer-DinPiXs9.js +1 -0
  143. modoboa/frontend_dist/assets/VSwitch-DwxdeAEq.js +1 -0
  144. modoboa/frontend_dist/assets/VTable-DaLxa4FO.js +1 -0
  145. modoboa/frontend_dist/assets/VTabs-BP0Hgsgm.js +1 -0
  146. modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +1 -0
  147. modoboa/frontend_dist/assets/VTextField-XoGTj1KG.js +1 -0
  148. modoboa/frontend_dist/assets/VTextarea-wBlRMIv_.js +1 -0
  149. modoboa/frontend_dist/assets/VToolbar-CFZfqeOr.js +1 -0
  150. modoboa/frontend_dist/assets/VWindowItem-BB7ETW3b.js +1 -0
  151. modoboa/frontend_dist/assets/WebmailLayout-_Hk1XhVq.js +1 -0
  152. modoboa/frontend_dist/assets/accounts-DUzbx6k8.js +1 -0
  153. modoboa/frontend_dist/assets/{admin-o-HRGnmT.js → admin-DewTk2H8.js} +1 -1
  154. modoboa/frontend_dist/assets/{aliases-DDVeehyg.js → aliases-4sXmjwXp.js} +1 -1
  155. modoboa/frontend_dist/assets/amavis-CC0li7_T.js +1 -0
  156. modoboa/frontend_dist/assets/amavis-DK8SHE6o.js +1 -0
  157. modoboa/frontend_dist/assets/{contacts-C84DY-Q1.js → contacts-BjghrPqZ.js} +1 -1
  158. modoboa/frontend_dist/assets/{domains-Bgn4ixHL.js → domains-BSawReeu.js} +1 -1
  159. modoboa/frontend_dist/assets/{domains.store-DTE-V7Y1.js → domains.store-D-vWCEIK.js} +1 -1
  160. modoboa/frontend_dist/assets/{filter-CnffiQAW.js → filter-C82FUCw_.js} +1 -1
  161. modoboa/frontend_dist/assets/forwardRefs-cvcnlhoK.js +1 -0
  162. modoboa/frontend_dist/assets/global.store-DbkcI5o2.js +1 -0
  163. modoboa/frontend_dist/assets/{importExport-BlQYb0NO.js → importExport-DzoL4Mvc.js} +1 -1
  164. modoboa/frontend_dist/assets/index-BImkz5Jx.js +984 -0
  165. modoboa/frontend_dist/assets/layout-C5FyYCHK.js +1 -0
  166. modoboa/frontend_dist/assets/{layout.store-DkjrAoXt.js → layout.store-NXWtFIwL.js} +1 -1
  167. modoboa/frontend_dist/assets/{logos-q8SEyAa4.js → logos-BswdveCV.js} +1 -1
  168. modoboa/frontend_dist/assets/{logs-B7IJ7LBa.js → logs-6CbtfaZS.js} +1 -1
  169. modoboa/frontend_dist/assets/{parameters-A6iBEYQq.js → parameters-aSQiR7kN.js} +1 -1
  170. modoboa/frontend_dist/assets/{parameters.store-BiXS4_6w.js → parameters.store-CzQqVatx.js} +1 -1
  171. modoboa/frontend_dist/assets/permissions-DNoefz-n.js +1 -0
  172. modoboa/frontend_dist/assets/{ssrBoot-AzTdjPjk.js → ssrBoot-CKUX4kcb.js} +1 -1
  173. modoboa/frontend_dist/assets/{tag-BnSYRTcD.js → tag-B_yWNNJD.js} +1 -1
  174. modoboa/frontend_dist/assets/transports-BDNB9wR5.js +1 -0
  175. modoboa/frontend_dist/assets/{webmail-CSH_3l6R.js → webmail-CdU6CD9b.js} +1 -1
  176. modoboa/frontend_dist/index.html +1 -1
  177. modoboa/lib/email_utils.py +2 -2
  178. modoboa/lib/permissions.py +7 -0
  179. modoboa/lib/test_runners.py +29 -0
  180. modoboa/lib/tests/__init__.py +5 -1
  181. modoboa/locale/br/LC_MESSAGES/django.po +87 -75
  182. modoboa/locale/cs/LC_MESSAGES/django.po +82 -74
  183. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +145 -121
  184. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  185. modoboa/locale/de/LC_MESSAGES/django.po +339 -651
  186. modoboa/locale/de_DE/LC_MESSAGES/django.po +87 -75
  187. modoboa/locale/el_GR/LC_MESSAGES/django.po +160 -135
  188. modoboa/locale/en/LC_MESSAGES/django.po +82 -74
  189. modoboa/locale/es/LC_MESSAGES/django.po +158 -131
  190. modoboa/locale/es_MX/LC_MESSAGES/django.po +82 -74
  191. modoboa/locale/fi/LC_MESSAGES/django.po +87 -75
  192. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/fr/LC_MESSAGES/django.po +469 -201
  194. modoboa/locale/hu/LC_MESSAGES/django.po +82 -74
  195. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  196. modoboa/locale/it/LC_MESSAGES/django.po +148 -122
  197. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  198. modoboa/locale/ja_JP/LC_MESSAGES/django.po +80 -72
  199. modoboa/locale/ka/LC_MESSAGES/django.po +82 -74
  200. modoboa/locale/nl_NL/LC_MESSAGES/django.po +160 -132
  201. modoboa/locale/no/LC_MESSAGES/django.po +82 -74
  202. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  203. modoboa/locale/pl_PL/LC_MESSAGES/django.po +172 -149
  204. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  205. modoboa/locale/pt_BR/LC_MESSAGES/django.po +172 -144
  206. modoboa/locale/pt_PT/LC_MESSAGES/django.po +135 -112
  207. modoboa/locale/ro_RO/LC_MESSAGES/django.po +87 -75
  208. modoboa/locale/ru/LC_MESSAGES/django.po +142 -118
  209. modoboa/locale/si/LC_MESSAGES/django.po +82 -74
  210. modoboa/locale/sk/LC_MESSAGES/django.po +82 -74
  211. modoboa/locale/sk_SK/LC_MESSAGES/django.po +84 -76
  212. modoboa/locale/sl_SI/LC_MESSAGES/django.po +90 -76
  213. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/sv/LC_MESSAGES/django.po +172 -139
  215. modoboa/locale/tr/LC_MESSAGES/django.po +87 -75
  216. modoboa/locale/tr_TR/LC_MESSAGES/django.po +84 -74
  217. modoboa/locale/uk/LC_MESSAGES/django.po +82 -74
  218. modoboa/locale/zh/LC_MESSAGES/django.po +82 -74
  219. modoboa/locale/zh_CN/LC_MESSAGES/django.po +82 -74
  220. modoboa/locale/zh_TW/LC_MESSAGES/django.po +87 -75
  221. modoboa/parameters/api/v2/tests.py +2 -2
  222. modoboa/parameters/api/v2/viewsets.py +2 -0
  223. modoboa/policyd/tests.py +2 -0
  224. modoboa/urls_api_v2.py +6 -0
  225. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/METADATA +6 -4
  226. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/RECORD +231 -181
  227. modoboa/frontend_dist/assets/AccountAliasForm-BV6KvTu6.js +0 -1
  228. modoboa/frontend_dist/assets/AccountEditView-DDOFyfBD.js +0 -1
  229. modoboa/frontend_dist/assets/AccountLayout-rX51xgxT.js +0 -1
  230. modoboa/frontend_dist/assets/AccountPasswordSubForm-D9S6LaeH.js +0 -1
  231. modoboa/frontend_dist/assets/AccountView-cmvaZNq3.js +0 -1
  232. modoboa/frontend_dist/assets/AddressBook-DCJxL8SU.js +0 -1
  233. modoboa/frontend_dist/assets/AdminLayout-r0wfG2lO.js +0 -1
  234. modoboa/frontend_dist/assets/AlarmsView-Bheey-gp.css +0 -1
  235. modoboa/frontend_dist/assets/AlarmsView-C0bqC4PA.js +0 -1
  236. modoboa/frontend_dist/assets/AliasEditView-DVoWoCGY.js +0 -1
  237. modoboa/frontend_dist/assets/AliasView-DrONZXOh.js +0 -1
  238. modoboa/frontend_dist/assets/AuditTrailView-OTkoZaMU.js +0 -1
  239. modoboa/frontend_dist/assets/CalendarView-CqF4_Ui9.js +0 -1
  240. modoboa/frontend_dist/assets/ComposeEmailForm-DO5_GB3e.js +0 -1
  241. modoboa/frontend_dist/assets/ComposeEmailView-A91HCBsN.js +0 -1
  242. modoboa/frontend_dist/assets/ConfirmDialog-BBcgdAnO.js +0 -1
  243. modoboa/frontend_dist/assets/ConnectedLayout-1oRW-Rql.js +0 -1
  244. modoboa/frontend_dist/assets/CreationForm-71YJbjsA.js +0 -1
  245. modoboa/frontend_dist/assets/DashboardView-CdLpSfUl.js +0 -1
  246. modoboa/frontend_dist/assets/DomainAdminList-BjC4KsqI.js +0 -1
  247. modoboa/frontend_dist/assets/DomainEditView-CQjKwYxl.js +0 -1
  248. modoboa/frontend_dist/assets/DomainView-BhhuZI_N.js +0 -5
  249. modoboa/frontend_dist/assets/DomainsView-Cft4BP8Z.js +0 -1
  250. modoboa/frontend_dist/assets/DomainsView-DasJ0NdZ.css +0 -1
  251. modoboa/frontend_dist/assets/EmailField-C8umy0EU.js +0 -1
  252. modoboa/frontend_dist/assets/EmailView-ki7uEQPD.js +0 -1
  253. modoboa/frontend_dist/assets/EmptyLayout-DaA1XH9n.js +0 -1
  254. modoboa/frontend_dist/assets/FiltersView-FYFZxG4B.js +0 -1
  255. modoboa/frontend_dist/assets/ForwardEmailView-cUbnSYCF.js +0 -1
  256. modoboa/frontend_dist/assets/IdentitiesView-njNo8N5n.js +0 -1
  257. modoboa/frontend_dist/assets/InformationView-D1h38POt.js +0 -1
  258. modoboa/frontend_dist/assets/InformationView-U5Ww-Sx1.css +0 -1
  259. modoboa/frontend_dist/assets/MailboxView-IlrLWm_H.js +0 -1
  260. modoboa/frontend_dist/assets/MenuItems-BAtHWzAE.js +0 -1
  261. modoboa/frontend_dist/assets/MessagesView-OSpjixFq.js +0 -1
  262. modoboa/frontend_dist/assets/MigrationsView-DKNOsVzF.js +0 -1
  263. modoboa/frontend_dist/assets/ParametersView-C4bXASiq.js +0 -1
  264. modoboa/frontend_dist/assets/ParametersView-CYXgNmc1.js +0 -1
  265. modoboa/frontend_dist/assets/ProviderEditView-CyxCWTST.js +0 -1
  266. modoboa/frontend_dist/assets/ProviderGeneralForm-BYPjNHqB.js +0 -1
  267. modoboa/frontend_dist/assets/ProvidersView-CxrMkRyk.js +0 -1
  268. modoboa/frontend_dist/assets/ReplyEmailView-Dkw9-N26.js +0 -1
  269. modoboa/frontend_dist/assets/ResourcesForm-CuUvrOdY.js +0 -1
  270. modoboa/frontend_dist/assets/StatisticsView-BN7QsZMT.js +0 -1
  271. modoboa/frontend_dist/assets/TimeSerieChart-BMN8BeFZ.js +0 -1
  272. modoboa/frontend_dist/assets/UserLayout-B6-JQg4F.js +0 -1
  273. modoboa/frontend_dist/assets/VAlert-DIQTrRif.js +0 -1
  274. modoboa/frontend_dist/assets/VApp-CpkYA7js.js +0 -1
  275. modoboa/frontend_dist/assets/VAutocomplete-C4IpXyl8.js +0 -1
  276. modoboa/frontend_dist/assets/VAvatar-Lpb-Dion.js +0 -1
  277. modoboa/frontend_dist/assets/VCard-er_isjE_.js +0 -1
  278. modoboa/frontend_dist/assets/VCheckbox-D-u8JXP1.js +0 -1
  279. modoboa/frontend_dist/assets/VChip-B4iSpj8_.js +0 -1
  280. modoboa/frontend_dist/assets/VColorPicker-BAjGDsXv.js +0 -1
  281. modoboa/frontend_dist/assets/VDataTable-4JRjbtgF.js +0 -1
  282. modoboa/frontend_dist/assets/VDataTableServer-tIDT1m3-.js +0 -1
  283. modoboa/frontend_dist/assets/VDataTableVirtual-BlnO18u_.js +0 -1
  284. modoboa/frontend_dist/assets/VExpansionPanels-CwGtXDhr.js +0 -1
  285. modoboa/frontend_dist/assets/VFileInput-D1_7ZkO_.js +0 -1
  286. modoboa/frontend_dist/assets/VForm-DAkW4nfy.js +0 -1
  287. modoboa/frontend_dist/assets/VMenu-BPFJwj2f.js +0 -1
  288. modoboa/frontend_dist/assets/VPicker-CfT82M8N.js +0 -1
  289. modoboa/frontend_dist/assets/VProgressCircular-w75-3ogi.js +0 -1
  290. modoboa/frontend_dist/assets/VRadioGroup-0j6DNC_k.js +0 -1
  291. modoboa/frontend_dist/assets/VSelect-Cs4ARbAS.js +0 -1
  292. modoboa/frontend_dist/assets/VSelectionControl-Dg-XyRRS.js +0 -1
  293. modoboa/frontend_dist/assets/VSheet-Btq_Mu4s.js +0 -1
  294. modoboa/frontend_dist/assets/VSpacer-C7xukQmu.js +0 -1
  295. modoboa/frontend_dist/assets/VSwitch-Cs1NQrmk.js +0 -1
  296. modoboa/frontend_dist/assets/VTable-CNz2SGk4.js +0 -1
  297. modoboa/frontend_dist/assets/VTabs-B1fyVn4M.js +0 -1
  298. modoboa/frontend_dist/assets/VTextField-BdyvgvkG.js +0 -1
  299. modoboa/frontend_dist/assets/VTextField-C-J20yj_.css +0 -1
  300. modoboa/frontend_dist/assets/VTextarea-DnOMpe0Q.js +0 -1
  301. modoboa/frontend_dist/assets/VToolbar-BiCiBxBJ.js +0 -1
  302. modoboa/frontend_dist/assets/VWindowItem-ChWm_kz3.js +0 -1
  303. modoboa/frontend_dist/assets/WebmailLayout-o4uEkp9e.js +0 -1
  304. modoboa/frontend_dist/assets/forwardRefs-Dvjn_Xq4.js +0 -1
  305. modoboa/frontend_dist/assets/global.store-BaiD63EN.js +0 -1
  306. modoboa/frontend_dist/assets/index-I1VDlN4g.js +0 -984
  307. modoboa/frontend_dist/assets/layout-D8ZJPiJ_.js +0 -1
  308. modoboa/frontend_dist/assets/permissions-CITHLHVg.js +0 -1
  309. modoboa/frontend_dist/assets/transports-Dz7c6kIy.js +0 -1
  310. {modoboa-2.4.11.data → modoboa-2.5.0.data}/scripts/modoboa-admin.py +0 -0
  311. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/WHEEL +0 -0
  312. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/entry_points.txt +0 -0
  313. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/licenses/LICENSE +0 -0
  314. {modoboa-2.4.11.dist-info → modoboa-2.5.0.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  # SOME DESCRIPTIVE TITLE.
2
2
  # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
- #
4
+ #
5
5
  # Translators:
6
6
  # Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2025
7
7
  # Christophe CHAUVET <christophe.chauvet@gmail.com>, 2018
@@ -15,85 +15,92 @@ msgid ""
15
15
  msgstr ""
16
16
  "Project-Id-Version: Modoboa\n"
17
17
  "Report-Msgid-Bugs-To: \n"
18
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
18
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
19
19
  "PO-Revision-Date: 2011-07-01 08:15+0000\n"
20
20
  "Last-Translator: Antoine Nguyen <tonio@ngyn.org>, 2016-2017,2020,2023-2025\n"
21
21
  "Language-Team: French (http://app.transifex.com/tonio/modoboa/language/fr/)\n"
22
+ "Language: fr\n"
22
23
  "MIME-Version: 1.0\n"
23
24
  "Content-Type: text/plain; charset=UTF-8\n"
24
25
  "Content-Transfer-Encoding: 8bit\n"
25
- "Language: fr\n"
26
26
  "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
27
27
 
28
28
  #: admin/api/v1/serializers.py:39
29
29
  msgid ""
30
30
  "Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. "
31
31
  "A value of 0 means no quota."
32
- msgstr "Quota partagé entre les boîtes aux lettres. Peut être exprimé en Ko, Mo (défaut) ou Go. Une valeur à 0 signifie pas de quota."
32
+ msgstr ""
33
+ "Quota partagé entre les boîtes aux lettres. Peut être exprimé en Ko, Mo "
34
+ "(défaut) ou Go. Une valeur à 0 signifie pas de quota."
33
35
 
34
36
  #: admin/api/v1/serializers.py:46
35
37
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
36
- msgstr "Quota par défaut en Mo appliqué aux boîtes aux lettres. Une valeur à 0 signifie pas de quota."
38
+ msgstr ""
39
+ "Quota par défaut en Mo appliqué aux boîtes aux lettres. Une valeur à 0 "
40
+ "signifie pas de quota."
37
41
 
38
- #: admin/api/v1/serializers.py:88
42
+ #: admin/api/v1/serializers.py:94
39
43
  msgid "domain alias with this name already exists"
40
44
  msgstr "Un alias de domaine avec ce nom existe déjà"
41
45
 
42
- #: admin/api/v1/serializers.py:98
46
+ #: admin/api/v1/serializers.py:104
43
47
  msgid "No authorized MX record found for this domain"
44
48
  msgstr "Aucun enregistrement MX autorisé trouvé pour ce domaine"
45
49
 
46
- #: admin/api/v1/serializers.py:116
50
+ #: admin/api/v1/serializers.py:122
47
51
  msgid "Cannot be greater than domain quota"
48
52
  msgstr "Ne peut pas être supérieur au quota du domaine"
49
53
 
50
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
51
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
54
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
55
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
52
56
  msgid "Permission denied."
53
57
  msgstr "Permission refusée."
54
58
 
55
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
56
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
57
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
59
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
60
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
61
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
58
62
  #: transport/backends.py:40
59
63
  msgid "This field is required"
60
64
  msgstr "Ce champ est requis"
61
65
 
62
- #: admin/api/v1/serializers.py:236
66
+ #: admin/api/v1/serializers.py:243
63
67
  msgid ""
64
68
  "List of administered domains (resellers and domain administrators only)."
65
- msgstr "Liste des domaines administrés (revendeurs et administrateurs de domaine seulement)."
69
+ msgstr ""
70
+ "Liste des domaines administrés (revendeurs et administrateurs de domaine "
71
+ "seulement)."
66
72
 
67
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
73
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
68
74
  msgid "Not allowed for this role."
69
75
  msgstr "Non autorisé pour ce rôle."
70
76
 
71
- #: admin/api/v1/serializers.py:348
77
+ #: admin/api/v1/serializers.py:355
72
78
  msgid "Must be equal to mailbox full_address"
73
79
  msgstr "Doit être égale au champ full_address dans mailbox"
74
80
 
75
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
81
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
76
82
  #: calendars/serializers.py:175 calendars/serializers.py:177
83
+ #: pdfcredentials/api/v2/serializers.py:91
77
84
  msgid "This field is required."
78
85
  msgstr "Ce champ est requis."
79
86
 
80
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
87
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
81
88
  msgid "Local domain {} does not exist"
82
89
  msgstr "Le domaine local {} n'existe pas"
83
90
 
84
- #: admin/api/v1/serializers.py:492
91
+ #: admin/api/v1/serializers.py:499
85
92
  msgid "A list of recipient"
86
93
  msgstr "Une liste de destinataire"
87
94
 
88
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
95
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
89
96
  msgid "This alias already exists"
90
97
  msgstr "Cet alias existe déjà"
91
98
 
92
- #: admin/api/v1/serializers.py:544
99
+ #: admin/api/v1/serializers.py:551
93
100
  msgid "You don't have access to this domain."
94
101
  msgstr "Vous n'avez pas accès à ce domaine."
95
102
 
96
- #: admin/api/v1/serializers.py:553
103
+ #: admin/api/v1/serializers.py:560
97
104
  msgid "You don't have access to this mailbox."
98
105
  msgstr "Vous n'avez pas accès à cette boîtes aux lettres."
99
106
 
@@ -101,56 +108,60 @@ msgstr "Vous n'avez pas accès à cette boîtes aux lettres."
101
108
  msgid "Here is your new Modoboa password: {}"
102
109
  msgstr "Voici votre nouveau mot de passe Modoboa :"
103
110
 
104
- #: admin/api/v2/serializers.py:80
111
+ #: admin/api/v2/serializers.py:82
105
112
  msgid "DKIM keys storage directory not configured"
106
113
  msgstr "Répertoire de stockage des clés DKIM non configuré"
107
114
 
108
- #: admin/api/v2/serializers.py:92
115
+ #: admin/api/v2/serializers.py:94
109
116
  msgid "This field is valid when type is relaydomain"
110
117
  msgstr "Ce champs est correct pour le type relaydomain uniquement"
111
118
 
112
- #: admin/api/v2/serializers.py:99
119
+ #: admin/api/v2/serializers.py:101
113
120
  msgid "You can't define an unlimited quota."
114
121
  msgstr "Vous ne pouvez pas définir de quota illimité"
115
122
 
116
- #: admin/api/v2/serializers.py:133
123
+ #: admin/api/v2/serializers.py:135
117
124
  #, python-format
118
125
  msgid "User '%s' already exists"
119
126
  msgstr "L'utilisateur '%s' existe déjà"
120
127
 
121
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
128
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
122
129
  msgid "Must be a positive integer"
123
130
  msgstr "Doit être un entier positif"
124
131
 
125
- #: admin/api/v2/serializers.py:263
132
+ #: admin/api/v2/serializers.py:265
126
133
  msgid "openssl not found, please make sure it is installed."
127
- msgstr "impossible de trouver openssl, veuillez vous assurer vous qu'il est installé."
134
+ msgstr ""
135
+ "impossible de trouver openssl, veuillez vous assurer vous qu'il est "
136
+ "installé."
128
137
 
129
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
138
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
130
139
  msgid "Directory not found."
131
140
  msgstr "Répertoire introuvable."
132
141
 
133
- #: admin/api/v2/serializers.py:277
142
+ #: admin/api/v2/serializers.py:279
134
143
  msgid "This field only allows valid IP addresses (or networks)"
135
144
  msgstr "Ce champ n'autorise que des adresses IP correctes (ou des réseaux)"
136
145
 
137
- #: admin/api/v2/serializers.py:290
146
+ #: admin/api/v2/serializers.py:292
138
147
  msgid "Please disable imap migration before disabling this option."
139
- msgstr "Veuillez désactiver la migration IMAP avant de désactiver cette option"
148
+ msgstr ""
149
+ "Veuillez désactiver la migration IMAP avant de désactiver cette option"
140
150
 
141
- #: admin/api/v2/serializers.py:303
151
+ #: admin/api/v2/serializers.py:305
142
152
  msgid "Define at least one authorized network / address"
143
153
  msgstr "Définissez au moins un réseau / une adresse autorisé"
144
154
 
145
- #: admin/api/v2/serializers.py:565
155
+ #: admin/api/v2/serializers.py:581
146
156
  msgid "The left part of an email address can't be more than 64 characters."
147
- msgstr "La partie gauche d'un courriel ne peut pas faire plus de 64 caractères."
157
+ msgstr ""
158
+ "La partie gauche d'un courriel ne peut pas faire plus de 64 caractères."
148
159
 
149
- #: admin/api/v2/serializers.py:587
160
+ #: admin/api/v2/serializers.py:603
150
161
  msgid "A mailbox is required to create aliases."
151
162
  msgstr "Une boîte aux lettres est requises pour créer des alias"
152
163
 
153
- #: admin/api/v2/serializers.py:751
164
+ #: admin/api/v2/serializers.py:772
154
165
  msgid "Unknown status"
155
166
  msgstr "Statut inconnu"
156
167
 
@@ -162,14 +173,6 @@ msgstr "Vous n'avez pas accès à ce domaine"
162
173
  msgid "You can't delete your own domain"
163
174
  msgstr "Vous ne pouvez pas supprimer votre propre domaine"
164
175
 
165
- #: admin/api/v2/viewsets.py:407
166
- msgid "No alarm ID provided"
167
- msgstr "Aucun ID d'alarme fourni"
168
-
169
- #: admin/api/v2/viewsets.py:411
170
- msgid "Received invalid alarm id(s)"
171
- msgstr "ID(s) incorrect(s) d'alarme(s) reçu(s)"
172
-
173
176
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
174
177
  msgid "Domains"
175
178
  msgstr "Domaines"
@@ -190,7 +193,10 @@ msgstr "MX(s) valide(s)"
190
193
  msgid ""
191
194
  "A list of IP or network address every MX record should match. A warning will"
192
195
  " be sent if a record does not respect it."
193
- msgstr "Une liste d'adresses IP ou réseau que chaque enregistrement MX doit respecter. Un avertissement sera envoyé dès qu'un enregistrement ne la respecte pas."
196
+ msgstr ""
197
+ "Une liste d'adresses IP ou réseau que chaque enregistrement MX doit "
198
+ "respecter. Un avertissement sera envoyé dès qu'un enregistrement ne la "
199
+ "respecte pas."
194
200
 
195
201
  #: admin/app_settings.py:47
196
202
  msgid "New domains must use authorized MX(s)"
@@ -200,7 +206,9 @@ msgstr "Les nouveaux domaines doivent utiliser un ou plusieurs MX autorisés"
200
206
  msgid ""
201
207
  "Prevent the creation of a new domain if its MX record does not use one of "
202
208
  "the defined addresses."
203
- msgstr "Empêcher la création d'un domaine s'il n'a pas au moins un MX utilisant une adresse autorisée."
209
+ msgstr ""
210
+ "Empêcher la création d'un domaine s'il n'a pas au moins un MX utilisant une "
211
+ "adresse autorisée."
204
212
 
205
213
  #: admin/app_settings.py:59
206
214
  msgid "Enable IPV6 checks"
@@ -224,7 +232,9 @@ msgstr "Activer les tests DKIM"
224
232
 
225
233
  #: admin/app_settings.py:80
226
234
  msgid "Check if every domain with DKIM signin enabled has a valid DNS record"
227
- msgstr "Vérifie que chaque domaine ayant la signature DKIM activée dispose d'un enregistrement DNS valide"
235
+ msgstr ""
236
+ "Vérifie que chaque domaine ayant la signature DKIM activée dispose d'un "
237
+ "enregistrement DNS valide"
228
238
 
229
239
  #: admin/app_settings.py:88
230
240
  msgid "Enable DMARC checks"
@@ -240,7 +250,9 @@ msgstr "Activer les tests d'autoconfiguration"
240
250
 
241
251
  #: admin/app_settings.py:99
242
252
  msgid "Check if every domain has a valid records for autoconfiguration"
243
- msgstr "Vérifie que chaque domaine a les enregistrements nécessaires à l'autoconfiguration"
253
+ msgstr ""
254
+ "Vérifie que chaque domaine a les enregistrements nécessaires à "
255
+ "l'autoconfiguration"
244
256
 
245
257
  #: admin/app_settings.py:107
246
258
  msgid "Enable DNSBL checks"
@@ -256,7 +268,9 @@ msgstr "Serveur DNS personnalisé"
256
268
 
257
269
  #: admin/app_settings.py:118
258
270
  msgid "Use a custom DNS server instead of local server configuration"
259
- msgstr "Utiliser un serveur DNS personnalisé à la place de la configuration par défaut du serveur"
271
+ msgstr ""
272
+ "Utiliser un serveur DNS personnalisé à la place de la configuration par "
273
+ "défaut du serveur"
260
274
 
261
275
  #: admin/app_settings.py:126
262
276
  msgid "DKIM keys storage directory"
@@ -267,7 +281,10 @@ msgid ""
267
281
  "Absolute path of the directory where DKIM private keys will be stored. Make "
268
282
  "sure this directory belongs to root user and is not readable by the outside "
269
283
  "world."
270
- 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."
284
+ msgstr ""
285
+ "Chemin absolu du répertoire dans lequel seront stockées les clés DKIM. "
286
+ "Assurez vous que ce répertoire appartient à l'utilisateur root et qu'il "
287
+ "n'est pas lisible par le monde extérieur."
271
288
 
272
289
  #: admin/app_settings.py:137
273
290
  msgid "Default DKIM key length"
@@ -285,7 +302,9 @@ msgstr "Quota de domaine par défaut"
285
302
  msgid ""
286
303
  "Default quota (in MB) applied to freshly created domains with no value "
287
304
  "specified. A value of 0 means no quota."
288
- 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é."
305
+ msgstr ""
306
+ "Quota par défaut (en Mo) appliqué aux domaines fraichement créés et ne "
307
+ "spécifiant pas de valeur. 0 signifie qu'aucun quota ne sera appliqué."
289
308
 
290
309
  #: admin/app_settings.py:156
291
310
  msgid "Default domain sending limit"
@@ -295,7 +314,9 @@ msgstr "Limite d'envoi par défaut du domaine"
295
314
  msgid ""
296
315
  "Number of messages freshly created domains will be allowed to send per day. "
297
316
  "Leave empty for no limit."
298
- msgstr "Nombre maximal de messages que les nouveaux domaines seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
317
+ msgstr ""
318
+ "Nombre maximal de messages que les nouveaux domaines seront autorisés à "
319
+ "envoyer par jour. Laisser vide pour n'indiquer aucune limite."
299
320
 
300
321
  #: admin/app_settings.py:170 limits/app_settings.py:61
301
322
  #: limits/app_settings.py:135 limits/constants.py:31 limits/constants.py:84
@@ -310,7 +331,9 @@ msgstr "Gérer les boites sur le système de fichiers"
310
331
  msgid ""
311
332
  "Rename or remove mailboxes on the filesystem when they get renamed or "
312
333
  "removed within Modoboa"
313
- msgstr "Renommer ou supprimer les boites sur le système de fichiers quand elles sont renommées ou supprimées dans Modoboa"
334
+ msgstr ""
335
+ "Renommer ou supprimer les boites sur le système de fichiers quand elles sont"
336
+ " renommées ou supprimées dans Modoboa"
314
337
 
315
338
  #: admin/app_settings.py:186 admin/models/domain.py:36
316
339
  msgid "Default mailbox quota"
@@ -320,7 +343,9 @@ msgstr "Quota par défaut pour une boîte aux lettres"
320
343
  msgid ""
321
344
  "Default mailbox quota (in MB) applied to freshly created domains with no "
322
345
  "value specified. A value of 0 means no quota."
323
- 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."
346
+ msgstr ""
347
+ "Quota par défaut (en Mo) appliqué aux nouveaux domaines quand aucune valeur "
348
+ "n'est spécifiée. Une valeur de 0 signifie pas de quota."
324
349
 
325
350
  #: admin/app_settings.py:197
326
351
  msgid "Default mailbox sending limit"
@@ -330,7 +355,9 @@ msgstr "Limite d'envoi par défaut d'une boîte aux lettres"
330
355
  msgid ""
331
356
  "Number of messages freshly created mailboxes will be allowed to send per "
332
357
  "day. Leave empty for no limit."
333
- msgstr "Nombre maximal de messages que les nouveaux comptes seront autorisés à envoyer par jour. Laisser vide pour n'indiquer aucune limite."
358
+ msgstr ""
359
+ "Nombre maximal de messages que les nouveaux comptes seront autorisés à "
360
+ "envoyer par jour. Laisser vide pour n'indiquer aucune limite."
334
361
 
335
362
  #: admin/app_settings.py:207
336
363
  msgid "Automatic account removal"
@@ -338,7 +365,9 @@ msgstr "Suppression automatique de compte"
338
365
 
339
366
  #: admin/app_settings.py:209
340
367
  msgid "When a mailbox is removed, also remove the associated account"
341
- msgstr "Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en même temps"
368
+ msgstr ""
369
+ "Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en "
370
+ "même temps"
342
371
 
343
372
  #: admin/app_settings.py:218
344
373
  msgid "Automatic domain/mailbox creation"
@@ -347,7 +376,9 @@ msgstr "Création automatique de domaine/boite aux lettres"
347
376
  #: admin/app_settings.py:221
348
377
  msgid ""
349
378
  "Create a domain and a mailbox when an account is automatically created."
350
- msgstr "Créer un domaine et une boite aux lettres quand un compte est créé automatiquement."
379
+ msgstr ""
380
+ "Créer un domaine et une boite aux lettres quand un compte est créé "
381
+ "automatiquement."
351
382
 
352
383
  #: admin/app_settings.py:230
353
384
  msgid "Create an alias when a mailbox is renamed"
@@ -355,9 +386,11 @@ msgstr "Créer un alias quand une boite aux lettres est renommée"
355
386
 
356
387
  #: admin/app_settings.py:233
357
388
  msgid "Create an alias using the old address when a mailbox is renamed."
358
- msgstr "Créer un alias en utilisant l'ancienne adresse quand une boite aux lettres est renommée."
389
+ msgstr ""
390
+ "Créer un alias en utilisant l'ancienne adresse quand une boite aux lettres "
391
+ "est renommée."
359
392
 
360
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
393
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
361
394
  msgid "Administration"
362
395
  msgstr "Administration"
363
396
 
@@ -386,7 +419,7 @@ msgstr "alias de domaine"
386
419
  msgid "Account import failed (%s): domain does not exist"
387
420
  msgstr "L'import du compte a échoué (%s): le domaine n'existe pas"
388
421
 
389
- #: admin/handlers.py:242 admin/models/mailbox.py:340
422
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
390
423
  msgid "Mailbox {} already exists"
391
424
  msgstr "La boite {} existe déjà"
392
425
 
@@ -444,7 +477,9 @@ msgstr "%d objets importés avec succès"
444
477
 
445
478
  #: admin/management/commands/subcommands/_import.py:97
446
479
  msgid "CSV file is not encoded in UTF-8, attempting to guess encoding"
447
- msgstr "Le fichier CSV n'est pas encodé en UTF-8, tentative de détermination de l'encodage"
480
+ msgstr ""
481
+ "Le fichier CSV n'est pas encodé en UTF-8, tentative de détermination de "
482
+ "l'encodage"
448
483
 
449
484
  #: admin/management/commands/subcommands/_import.py:112
450
485
  #, python-format
@@ -454,13 +489,16 @@ msgstr "Lire le fichier CSV en utilisant l'encodage %(encoding)s"
454
489
  #: admin/management/commands/subcommands/_import.py:123
455
490
  #, python-format
456
491
  msgid "Unable to decode CSV file using %(encoding)s encoding"
457
- msgstr "Impossible de décoder le fichier CSV en utilisant l'encodage %(encoding)s"
492
+ msgstr ""
493
+ "Impossible de décoder le fichier CSV en utilisant l'encodage %(encoding)s"
458
494
 
459
495
  #: admin/management/commands/subcommands/_manage_dkim_keys.py:29
460
496
  msgid ""
461
497
  "DKIM path non-writable (either a permission issue or the directory does not "
462
498
  "exist)"
463
- msgstr "Le chemin d'accès DKIM n'est pas modifiable (soit à cause d'un problème de permission, soit parce que le répertoire n'existe pas)"
499
+ msgstr ""
500
+ "Le chemin d'accès DKIM n'est pas modifiable (soit à cause d'un problème de "
501
+ "permission, soit parce que le répertoire n'existe pas)"
464
502
 
465
503
  #: admin/management/commands/subcommands/_manage_dkim_keys.py:52
466
504
  msgid "Failed to generate DKIM private key"
@@ -579,7 +617,9 @@ msgstr "Activer la signature DKIM"
579
617
  #: admin/models/domain.py:63
580
618
  msgid ""
581
619
  "If you activate this feature, a DKIM key will be generated for this domain."
582
- msgstr "Si vous activez cette fonctionnalité, une clé DKIM sera générée pour ce domain."
620
+ msgstr ""
621
+ "Si vous activez cette fonctionnalité, une clé DKIM sera générée pour ce "
622
+ "domain."
583
623
 
584
624
  #: admin/models/domain.py:70
585
625
  msgid "Key length"
@@ -600,11 +640,15 @@ msgstr "{} : valeur incorrecte de quota pour ce domaine"
600
640
 
601
641
  #: admin/models/domain.py:343
602
642
  msgid "{}: invalid default mailbox quota value for domain"
603
- msgstr "{} : la valeur du quota par défaut des boîtes aux lettres est incorrecte pour ce domaine"
643
+ msgstr ""
644
+ "{} : la valeur du quota par défaut des boîtes aux lettres est incorrecte "
645
+ "pour ce domaine"
604
646
 
605
647
  #: admin/models/domain.py:350
606
648
  msgid "{}: default mailbox quota cannot be greater than domain quota"
607
- msgstr "{} : le quota par défaut de la boîte aux lettres ne peut pas être supérieur au quota du domaine"
649
+ msgstr ""
650
+ "{} : le quota par défaut de la boîte aux lettres ne peut pas être supérieur "
651
+ "au quota du domaine"
608
652
 
609
653
  #: admin/models/domain_alias.py:36
610
654
  msgid "The alias name"
@@ -644,7 +688,7 @@ msgstr "Un quota est requis"
644
688
  msgid "{}: domain quota exceeded"
645
689
  msgstr "{} : quota du domaine dépassé"
646
690
 
647
- #: admin/models/mailbox.py:308
691
+ #: admin/models/mailbox.py:310
648
692
  msgid "Domain does not exist"
649
693
  msgstr "Domaine inexistant"
650
694
 
@@ -653,19 +697,26 @@ msgstr "Domaine inexistant"
653
697
  msgid ""
654
698
  "Modoboa detected that domain %(domain)s is listed by the following DNSBL "
655
699
  "providers:"
656
- msgstr "Modoboa a détecté que le domaine %(domain)s est listé par les fournisseurs de DNSBL suivants :"
700
+ msgstr ""
701
+ "Modoboa a détecté que le domaine %(domain)s est listé par les fournisseurs "
702
+ "de DNSBL suivants :"
657
703
 
658
704
  #: admin/templates/admin/notifications/domain_in_dnsbl.html:11
659
705
  msgid ""
660
706
  "The domain's reputation will be affected and there is a chance that emails "
661
707
  "coming from it are considered as spam. You should contact those providers "
662
708
  "and ask them to unlist detected IP address(es)."
663
- msgstr "La réputation de ce domaine sera affectée et il est probable que les emails venant de lui soient considérés comme du spam. Vous devriez contacter ces fournisseurs pour leur demander de délister la/les adresse(s) détectée(s)."
709
+ msgstr ""
710
+ "La réputation de ce domaine sera affectée et il est probable que les emails "
711
+ "venant de lui soient considérés comme du spam. Vous devriez contacter ces "
712
+ "fournisseurs pour leur demander de délister la/les adresse(s) détectée(s)."
664
713
 
665
714
  #: admin/templates/admin/notifications/domain_invalid_mx.html:3
666
715
  #, python-format
667
716
  msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
668
- msgstr "Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX valide :"
717
+ msgstr ""
718
+ "Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX "
719
+ "valide :"
669
720
 
670
721
  #: admin/tests/test_mx.py:155
671
722
  #, python-format
@@ -707,7 +758,9 @@ msgstr "Période entre deux réponses automatiques"
707
758
  #: autoreply/app_settings.py:20
708
759
  msgid ""
709
760
  "Number of days to wait before sending a new auto-reply to the same recipient"
710
- msgstr "Attendre ce nombre de jours avant l'envoi d'une nouvelle réponse automatique au même destinataire"
761
+ msgstr ""
762
+ "Attendre ce nombre de jours avant l'envoi d'une nouvelle réponse automatique"
763
+ " au même destinataire"
711
764
 
712
765
  #: autoreply/app_settings.py:27 autoreply/app_settings.py:36
713
766
  msgid "Default subject"
@@ -716,14 +769,19 @@ msgstr "Sujet par défaut"
716
769
  #: autoreply/app_settings.py:29
717
770
  msgid ""
718
771
  "Default subject used when an auto-reply message is created automatically"
719
- msgstr "Sujet par défaut utilisé quand un message de réponse automatique est crée automatiquement"
772
+ msgstr ""
773
+ "Sujet par défaut utilisé quand un message de réponse automatique est crée "
774
+ "automatiquement"
720
775
 
721
776
  #: autoreply/app_settings.py:38
722
777
  #, python-format
723
778
  msgid ""
724
779
  "Default content used when an auto-reply message is created automatically. "
725
780
  "The '%(name)s' macro will be replaced by the user's full name."
726
- msgstr "Contenu par défaut utilisé quand un message de réponse automatique est créé automatiquement. La macro %(name)s sera remplacée par le nom complet de l'utilisateur "
781
+ msgstr ""
782
+ "Contenu par défaut utilisé quand un message de réponse automatique est créé "
783
+ "automatiquement. La macro %(name)s sera remplacée par le nom complet de "
784
+ "l'utilisateur "
727
785
 
728
786
  #: autoreply/apps.py:15
729
787
  msgid "Automatic replies"
@@ -760,7 +818,9 @@ msgstr "URL du serveur"
760
818
  #: calendars/app_settings.py:19
761
819
  msgid ""
762
820
  "The URL of your Radicale server. It will be used to construct calendar URLs."
763
- msgstr "L'URL de votre serveur Radicale. Elle sera utilisée pour construire les URL des calendriers."
821
+ msgstr ""
822
+ "L'URL de votre serveur Radicale. Elle sera utilisée pour construire les URL "
823
+ "des calendriers."
764
824
 
765
825
  #: calendars/app_settings.py:31
766
826
  msgid "Rights management"
@@ -780,7 +840,9 @@ msgstr "Autoriser l'administration des calendriers"
780
840
 
781
841
  #: calendars/app_settings.py:48
782
842
  msgid "Allow domain administrators to manage user calendars (read and write)"
783
- msgstr "Autoriser les administrateurs de domaine à gérer les calendriers des utilisateurs (lecture et écriture)"
843
+ msgstr ""
844
+ "Autoriser les administrateurs de domaine à gérer les calendriers des "
845
+ "utilisateurs (lecture et écriture)"
784
846
 
785
847
  #: calendars/app_settings.py:60 core/app_settings.py:676
786
848
  #: rspamd/app_settings.py:45
@@ -794,9 +856,11 @@ msgstr "Taille maximale des fichiers ICS"
794
856
  #: calendars/app_settings.py:68
795
857
  msgid ""
796
858
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
797
- msgstr "Taille maximale en octets des fichiers ICS importés (ou KB, MB, GB si précisé)"
859
+ msgstr ""
860
+ "Taille maximale en octets des fichiers ICS importés (ou KB, MB, GB si "
861
+ "précisé)"
798
862
 
799
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
863
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
800
864
  msgid "Calendars"
801
865
  msgstr "Calendriers"
802
866
 
@@ -820,7 +884,9 @@ msgstr "Synchroniser le carnet d'adresse en utilisant CardDAV"
820
884
  msgid ""
821
885
  "Choose to synchronize or not your address book using CardDAV. You will be "
822
886
  "able to access your contacts from the outside."
823
- msgstr "Choisir de synchroniser ou non votre carnet d'adresse en utilisant CardDAV. Vous pourrez ainsi accéder à vos contacts depuis l'extérieur."
887
+ msgstr ""
888
+ "Choisir de synchroniser ou non votre carnet d'adresse en utilisant CardDAV. "
889
+ "Vous pourrez ainsi accéder à vos contacts depuis l'extérieur."
824
890
 
825
891
  #: contacts/app_settings.py:29
826
892
  msgid "Synchronization frequency"
@@ -830,7 +896,7 @@ msgstr "Fréquence de synchronisation"
830
896
  msgid "Interval in seconds between 2 synchronization requests"
831
897
  msgstr "Intervalle en secondes entre 2 requêtes de synchronisation"
832
898
 
833
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
899
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
834
900
  msgid "Contacts"
835
901
  msgstr "Contacts"
836
902
 
@@ -878,12 +944,14 @@ msgstr "Code PIN non valide"
878
944
  msgid "2FA is already enabled"
879
945
  msgstr "2FA est déjà activf"
880
946
 
881
- #: core/api/v1/serializers.py:87
947
+ #: core/api/v1/serializers.py:86
882
948
  #, python-format
883
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
884
- msgstr "Echec lors de la tentative de modification des paramètres de '%s' en tant qu'utilisateur '%s'"
949
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
950
+ msgstr ""
951
+ "Echec de modification des paramètres TFA depuis '%(addr)s' en tant "
952
+ "qu'utilisateur '%(user)s'"
885
953
 
886
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
954
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
887
955
  msgid "Invalid password"
888
956
  msgstr "Mot de passe incorrect"
889
957
 
@@ -895,41 +963,43 @@ msgstr "Authentification 2 facteurs non activée"
895
963
  msgid "Local"
896
964
  msgstr "Locale"
897
965
 
898
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
966
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
899
967
  msgid "User profile"
900
968
  msgstr "Profil utilisateur"
901
969
 
902
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
903
- #: core/api/v2/serializers.py:208
970
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
971
+ #: core/api/v2/serializers.py:228
904
972
  msgid "Invalid syntax"
905
973
  msgstr "Syntaxe invalide"
906
974
 
907
- #: core/api/v2/serializers.py:213
975
+ #: core/api/v2/serializers.py:233
908
976
  msgid "Invalid rounds number"
909
977
  msgstr "Nombre invalide de tours"
910
978
 
911
- #: core/api/v2/serializers.py:413 core/forms.py:81
979
+ #: core/api/v2/serializers.py:433 core/forms.py:81
912
980
  msgid "This code is invalid"
913
981
  msgstr "Ce code n'est pas valide"
914
982
 
915
- #: core/api/v2/serializers.py:483 core/views/auth.py:194
983
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194
916
984
  #: core/views/auth.py:247
917
985
  msgid "Please use the following code to recover your Modoboa password: {}"
918
- msgstr "Veuillez utiliser le code suivant pour récupérer votre mot de passe Modoboa : {}"
986
+ msgstr ""
987
+ "Veuillez utiliser le code suivant pour récupérer votre mot de passe Modoboa "
988
+ ": {}"
919
989
 
920
- #: core/api/v2/viewsets.py:164
990
+ #: core/api/v2/viewsets.py:176
921
991
  msgid "Administration console"
922
992
  msgstr "Interface d'administration"
923
993
 
924
- #: core/api/v2/viewsets.py:174
925
- msgid "Calendar"
926
- msgstr "Calendrier"
927
-
928
- #: core/api/v2/viewsets.py:181
994
+ #: core/api/v2/viewsets.py:187
929
995
  msgid "Address book"
930
996
  msgstr "Carnet d'adresse"
931
997
 
932
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
998
+ #: core/api/v2/viewsets.py:197
999
+ msgid "Calendar"
1000
+ msgstr "Calendrier"
1001
+
1002
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
933
1003
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
934
1004
  msgid "Webmail"
935
1005
  msgstr "Webmail"
@@ -952,7 +1022,8 @@ msgstr "Méthode de chiffrement par défaut"
952
1022
 
953
1023
  #: core/app_settings.py:54
954
1024
  msgid "Scheme used to crypt mailbox passwords"
955
- msgstr "Méthode utilisée pour chiffrer les mots de passe des boites aux lettres"
1025
+ msgstr ""
1026
+ "Méthode utilisée pour chiffrer les mots de passe des boites aux lettres"
956
1027
 
957
1028
  #: core/app_settings.py:61
958
1029
  msgid "Rounds"
@@ -962,15 +1033,20 @@ msgstr "Tours"
962
1033
  msgid ""
963
1034
  "Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
964
1035
  "between 1000 and 999999999, inclusive."
965
- msgstr "Nombre de tours à utiliser (sha256crypt et sha512crypt uniquement). Doit être compris entre 1000 et 999999999 inclue."
1036
+ msgstr ""
1037
+ "Nombre de tours à utiliser (sha256crypt et sha512crypt uniquement). Doit "
1038
+ "être compris entre 1000 et 999999999 inclue."
966
1039
 
967
1040
  #: core/app_settings.py:73
968
1041
  msgid "Update password scheme at login"
969
- msgstr "Mettre à jour la méthode de chiffrement du mot de passe à la connexion"
1042
+ msgstr ""
1043
+ "Mettre à jour la méthode de chiffrement du mot de passe à la connexion"
970
1044
 
971
1045
  #: core/app_settings.py:76
972
1046
  msgid "Update user password at login to use the default password scheme"
973
- msgstr "Mise à jour du mot de passe utilisateur lors d'une connexion pour utiliser la méthode de chiffrement par défaut"
1047
+ msgstr ""
1048
+ "Mise à jour du mot de passe utilisateur lors d'une connexion pour utiliser "
1049
+ "la méthode de chiffrement par défaut"
974
1050
 
975
1051
  #: core/app_settings.py:84
976
1052
  msgid "Default password"
@@ -994,7 +1070,9 @@ msgstr "Autoriser les caractères spéciaux pour les mots de passe aléatoires"
994
1070
 
995
1071
  #: core/app_settings.py:106
996
1072
  msgid "Enable special characters in randomly generated passwords."
997
- msgstr "Activer les caractères spéciaux dans les mots de passe générés aléatoirement."
1073
+ msgstr ""
1074
+ "Activer les caractères spéciaux dans les mots de passe générés "
1075
+ "aléatoirement."
998
1076
 
999
1077
  #: core/app_settings.py:114
1000
1078
  msgid "Update password service URL"
@@ -1005,7 +1083,10 @@ msgid ""
1005
1083
  "The URL of an external page where users will be able to update their "
1006
1084
  "password. It applies only to non local users, ie. those automatically "
1007
1085
  "created after a successful external authentication (LDAP, SMTP)."
1008
- 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)."
1086
+ msgstr ""
1087
+ "L'URL d'une page externe où les utilisateurs pourront mettre à jour leur mot"
1088
+ " de passe. Elle s'applique uniquement aux utilisateurs non locaux, c'est à "
1089
+ "dire ceux créés après une authentification externe réussie (LDAP, SMTP)."
1009
1090
 
1010
1091
  #: core/app_settings.py:126
1011
1092
  msgid "Password recovery announcement"
@@ -1013,7 +1094,9 @@ msgstr "Annonce pour la récupération de mot de passe"
1013
1094
 
1014
1095
  #: core/app_settings.py:128
1015
1096
  msgid "A temporary message that will be displayed on the reset password page."
1016
- msgstr "Un message temporaire qui sera affiché sur la page de récupération de mot de passe"
1097
+ msgstr ""
1098
+ "Un message temporaire qui sera affiché sur la page de récupération de mot de"
1099
+ " passe"
1017
1100
 
1018
1101
  #: core/app_settings.py:137
1019
1102
  msgid "Enable password recovery by SMS"
@@ -1021,7 +1104,9 @@ msgstr "Activer la récupération de mot de passe par SMS"
1021
1104
 
1022
1105
  #: core/app_settings.py:140
1023
1106
  msgid "Enable password recovery by SMS for users who filled a phone number."
1024
- msgstr "Activer la récupération de mot de passe par SMS pour les utilisateurs ayant renseigné un numéro de téléphone"
1107
+ msgstr ""
1108
+ "Activer la récupération de mot de passe par SMS pour les utilisateurs ayant "
1109
+ "renseigné un numéro de téléphone"
1025
1110
 
1026
1111
  #: core/app_settings.py:148
1027
1112
  msgid "SMS provider"
@@ -1029,7 +1114,8 @@ msgstr "Fournisseur SMS"
1029
1114
 
1030
1115
  #: core/app_settings.py:151
1031
1116
  msgid "Choose a provider to send password recovery SMS"
1032
- msgstr "Choisir un fournisseur pour envoyer les SMS de récupération de mot de passe"
1117
+ msgstr ""
1118
+ "Choisir un fournisseur pour envoyer les SMS de récupération de mot de passe"
1033
1119
 
1034
1120
  #: core/app_settings.py:163
1035
1121
  msgid "LDAP"
@@ -1062,7 +1148,9 @@ msgstr "Activer le serveur secondaire (secours)"
1062
1148
  #: core/app_settings.py:191
1063
1149
  msgid ""
1064
1150
  "Enable a secondary LDAP server which will be used if the primary one fails"
1065
- msgstr "Activer un serveur LDAP secondaire qui sera utilisé si le principal est en échec"
1151
+ msgstr ""
1152
+ "Activer un serveur LDAP secondaire qui sera utilisé si le principal est en "
1153
+ "échec"
1066
1154
 
1067
1155
  #: core/app_settings.py:199
1068
1156
  msgid "Secondary server address"
@@ -1105,7 +1193,10 @@ msgstr "Groupes administrateurs"
1105
1193
  msgid ""
1106
1194
  "Members of those LDAP Posix groups will be created as domain administrators."
1107
1195
  " Use ';' characters to separate groups."
1108
- 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."
1196
+ msgstr ""
1197
+ "Les membres de ces groupes LDAP (Posix) seront créés en tant "
1198
+ "qu'administrateurs de domaine. Utiliser des caractères ';' pour séparer les "
1199
+ "groupes."
1109
1200
 
1110
1201
  #: core/app_settings.py:248
1111
1202
  msgid "Group type"
@@ -1121,7 +1212,9 @@ msgstr "Base de recherche des groupes"
1121
1212
 
1122
1213
  #: core/app_settings.py:259
1123
1214
  msgid "The distinguished name of the search base used to find groups"
1124
- msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les groupes"
1215
+ msgstr ""
1216
+ "Le nom distinctif de la base de recherche utilisée pour rechercher les "
1217
+ "groupes"
1125
1218
 
1126
1219
  #: core/app_settings.py:267
1127
1220
  msgid "Password attribute"
@@ -1151,7 +1244,9 @@ msgstr "ND de connexion"
1151
1244
  msgid ""
1152
1245
  "The distinguished name to use when binding to the LDAP server. Leave empty "
1153
1246
  "for an anonymous bind"
1154
- msgstr "Le nom distinctif à utiliser pour les connections au serveur LDAP. Laisser vide pour une connexion anonyme"
1247
+ msgstr ""
1248
+ "Le nom distinctif à utiliser pour les connections au serveur LDAP. Laisser "
1249
+ "vide pour une connexion anonyme"
1155
1250
 
1156
1251
  #: core/app_settings.py:305 core/app_settings.py:367
1157
1252
  msgid "Bind password"
@@ -1159,7 +1254,9 @@ msgstr "Mot de passe de connexion"
1159
1254
 
1160
1255
  #: core/app_settings.py:307 core/app_settings.py:369
1161
1256
  msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
1162
- msgstr "Le mot de passe à utiliser pour les connections au serveur LDAP (avec 'ND de connexion')"
1257
+ msgstr ""
1258
+ "Le mot de passe à utiliser pour les connections au serveur LDAP (avec 'ND de"
1259
+ " connexion')"
1163
1260
 
1164
1261
  #: core/app_settings.py:317 core/app_settings.py:422
1165
1262
  msgid "Users search base"
@@ -1167,7 +1264,9 @@ msgstr "Base de recherche des utilisateurs"
1167
1264
 
1168
1265
  #: core/app_settings.py:319 core/app_settings.py:424
1169
1266
  msgid "The distinguished name of the search base used to find users"
1170
- msgstr "Le nom distinctif de la base de recherche utilisée pour rechercher les utilisateurs"
1267
+ msgstr ""
1268
+ "Le nom distinctif de la base de recherche utilisée pour rechercher les "
1269
+ "utilisateurs"
1171
1270
 
1172
1271
  #: core/app_settings.py:328 core/app_settings.py:433
1173
1272
  msgid "Search filter"
@@ -1177,7 +1276,9 @@ msgstr "Filtre de recherche"
1177
1276
  msgid ""
1178
1277
  "An optional filter string (e.g. '(objectClass=person)'). In order to be "
1179
1278
  "valid, it must be enclosed in parentheses."
1180
- msgstr "Un filtre de recherche optionel (ex. '(objectClass=person)'). Pour être valide, il doit être entouré de parenthèses."
1279
+ msgstr ""
1280
+ "Un filtre de recherche optionel (ex. '(objectClass=person)'). Pour être "
1281
+ "valide, il doit être entouré de parenthèses."
1181
1282
 
1182
1283
  #: core/app_settings.py:339
1183
1284
  msgid "User DN template"
@@ -1188,7 +1289,9 @@ msgstr "Modèle de nom distinctif utilisateur"
1188
1289
  msgid ""
1189
1290
  "The template used to construct a user's DN. It should contain one "
1190
1291
  "placeholder (ie. %(user)s)"
1191
- msgstr "Le modèle utilisé pour construire le nom distinctif d'un utilisateur. Il doit contenir un espace réservé (ex. %(user)s)"
1292
+ msgstr ""
1293
+ "Le modèle utilisé pour construire le nom distinctif d'un utilisateur. Il "
1294
+ "doit contenir un espace réservé (ex. %(user)s)"
1192
1295
 
1193
1296
  #: core/app_settings.py:350
1194
1297
  msgid "LDAP synchronization settings"
@@ -1201,7 +1304,9 @@ msgstr "Activer l'export LDAP"
1201
1304
  #: core/app_settings.py:380
1202
1305
  msgid ""
1203
1306
  "Enable automatic synchronization between local database and LDAP directory"
1204
- msgstr "Activer la synchronisation automatique entre la base de données locale et l'annuaire LDAP"
1307
+ msgstr ""
1308
+ "Activer la synchronisation automatique entre la base de données locale et "
1309
+ "l'annuaire LDAP"
1205
1310
 
1206
1311
  #: core/app_settings.py:389
1207
1312
  msgid "Delete remote LDAP account when local account is deleted"
@@ -1211,7 +1316,9 @@ msgstr "Supprimer un compte LDAP distant lorsqu'un compte local est supprimé"
1211
1316
  msgid ""
1212
1317
  "Delete remote LDAP account when local account is deleted, otherwise it will "
1213
1318
  "be disabled."
1214
- msgstr "Supprimer un compte LDAP distant lorsqu'un compte local supprimé, autrement il sera désactivé."
1319
+ msgstr ""
1320
+ "Supprimer un compte LDAP distant lorsqu'un compte local supprimé, autrement "
1321
+ "il sera désactivé."
1215
1322
 
1216
1323
  #: core/app_settings.py:401
1217
1324
  msgid "Account DN template"
@@ -1222,7 +1329,9 @@ msgstr "Modèle des DN de compte"
1222
1329
  msgid ""
1223
1330
  "The template used to construct an account's DN. It should contain one "
1224
1331
  "placeholder (ie. %(user)s)"
1225
- msgstr "Le modèle utilisé pour construite un DN de compte (nom unique). Il doit contenir un emplacement (c'est à dire 1%(user)s)"
1332
+ msgstr ""
1333
+ "Le modèle utilisé pour construite un DN de compte (nom unique). Il doit "
1334
+ "contenir un emplacement (c'est à dire 1%(user)s)"
1226
1335
 
1227
1336
  #: core/app_settings.py:412
1228
1337
  msgid "Enable import from LDAP"
@@ -1230,7 +1339,9 @@ msgstr "Activer l'import LDAP"
1230
1339
 
1231
1340
  #: core/app_settings.py:414
1232
1341
  msgid "Enable account synchronization from LDAP directory to local database"
1233
- msgstr "Activer la synchronisation des comptes entre un annuaire LDAP et la base de données locale"
1342
+ msgstr ""
1343
+ "Activer la synchronisation des comptes entre un annuaire LDAP et la base de "
1344
+ "données locale"
1234
1345
 
1235
1346
  #: core/app_settings.py:444
1236
1347
  msgid "Username attribute"
@@ -1238,7 +1349,8 @@ msgstr "Attribut nom d'utilisateur"
1238
1349
 
1239
1350
  #: core/app_settings.py:446
1240
1351
  msgid "The name of the LDAP attribute where the username can be found."
1241
- msgstr "Le nom de l'attribut LDAP dans lequel le nom d'utilisateur peut être trouvé."
1352
+ msgstr ""
1353
+ "Le nom de l'attribut LDAP dans lequel le nom d'utilisateur peut être trouvé."
1242
1354
 
1243
1355
  #: core/app_settings.py:455
1244
1356
  msgid "Enable Dovecot LDAP sync"
@@ -1246,7 +1358,9 @@ msgstr "Activer la synchronisation LDAP pour Dovecot"
1246
1358
 
1247
1359
  #: core/app_settings.py:457
1248
1360
  msgid "LDAP authentication settings will be applied to Dovecot configuration."
1249
- msgstr "Les paramètres d'authentification LDAP seront appliqués à la configuration de Dovecot."
1361
+ msgstr ""
1362
+ "Les paramètres d'authentification LDAP seront appliqués à la configuration "
1363
+ "de Dovecot."
1250
1364
 
1251
1365
  #: core/app_settings.py:465
1252
1366
  msgid "Dovecot LDAP config file"
@@ -1255,7 +1369,9 @@ msgstr "Fichier de configuration Dovecot pour LDAP"
1255
1369
  #: core/app_settings.py:467
1256
1370
  msgid ""
1257
1371
  "Location of the configuration file which contains Dovecot LDAP settings."
1258
- msgstr "Emplacement du fichier de configuration qui contient les paramètres LDAP de Dovecot"
1372
+ msgstr ""
1373
+ "Emplacement du fichier de configuration qui contient les paramètres LDAP de "
1374
+ "Dovecot"
1259
1375
 
1260
1376
  #: core/app_settings.py:480
1261
1377
  msgid "Dashboard"
@@ -1275,7 +1391,9 @@ msgstr "Flux RSS personnalisé"
1275
1391
 
1276
1392
  #: core/app_settings.py:497
1277
1393
  msgid "Display custom RSS feed to resellers and domain administrators"
1278
- msgstr "Afficher un flux RSS personnalisé aux revendeurs et administrateurs de domaine"
1394
+ msgstr ""
1395
+ "Afficher un flux RSS personnalisé aux revendeurs et administrateurs de "
1396
+ "domaine"
1279
1397
 
1280
1398
  #: core/app_settings.py:506
1281
1399
  msgid "Display custom RSS feed to super admins"
@@ -1291,7 +1409,9 @@ msgstr "Masquer le widget des fonctionnalités"
1291
1409
 
1292
1410
  #: core/app_settings.py:519
1293
1411
  msgid "Hide features widget for resellers and domain administrators"
1294
- msgstr "Masquer le widget des fonctionnalités pour les revendeurs et les administrateurs de domaine"
1412
+ msgstr ""
1413
+ "Masquer le widget des fonctionnalités pour les revendeurs et les "
1414
+ "administrateurs de domaine"
1295
1415
 
1296
1416
  #: core/app_settings.py:531
1297
1417
  msgid "Theme"
@@ -1305,7 +1425,9 @@ msgstr "Couleur principale du thème"
1305
1425
  msgid ""
1306
1426
  "Primary color of the theme (hexadecimal code), used as the background color "
1307
1427
  "of the left menu for example"
1308
- msgstr "Couleur principale du thème (code hexadécimal), utilisée par exemple comme couleur de fond dans le menu de gauche"
1428
+ msgstr ""
1429
+ "Couleur principale du thème (code hexadécimal), utilisée par exemple comme "
1430
+ "couleur de fond dans le menu de gauche"
1309
1431
 
1310
1432
  #: core/app_settings.py:548
1311
1433
  msgid "Primary theme color (lighter version)"
@@ -1327,7 +1449,9 @@ msgstr "Couleur secondaire du thème"
1327
1449
  msgid ""
1328
1450
  "Secondary color of the theme (hexadecimal code), used as the background "
1329
1451
  "color of some buttons for example"
1330
- msgstr "Couleur secondaire du thème (code hexadécimal), utilisée par exemple comme couleur de fond de certains boutons"
1452
+ msgstr ""
1453
+ "Couleur secondaire du thème (code hexadécimal), utilisée par exemple comme "
1454
+ "couleur de fond de certains boutons"
1331
1455
 
1332
1456
  #: core/app_settings.py:581
1333
1457
  msgid "Labels theme color"
@@ -1371,7 +1495,9 @@ msgstr "Envoyer un email quand de nouvelles versions sont trouvées"
1371
1495
 
1372
1496
  #: core/app_settings.py:644
1373
1497
  msgid "Send an email to notify admins about new versions"
1374
- msgstr "Envoyer un email pour notifier les administrateurs à propos des nouvelles versions"
1498
+ msgstr ""
1499
+ "Envoyer un email pour notifier les administrateurs à propos des nouvelles "
1500
+ "versions"
1375
1501
 
1376
1502
  #: core/app_settings.py:651 sievefilters/constants.py:25
1377
1503
  msgid "Recipient"
@@ -1387,7 +1513,9 @@ msgstr "Envoyer des statistiques"
1387
1513
 
1388
1514
  #: core/app_settings.py:664
1389
1515
  msgid "Send statistics to Modoboa public API (counters and used extensions)"
1390
- msgstr "Envoyer des statistiques à l'API publique de Modoboa (compteurs et extensions utilisées)"
1516
+ msgstr ""
1517
+ "Envoyer des statistiques à l'API publique de Modoboa (compteurs et "
1518
+ "extensions utilisées)"
1391
1519
 
1392
1520
  #: core/app_settings.py:683
1393
1521
  msgid "Enable inactive account tracking"
@@ -1397,7 +1525,9 @@ msgstr "Activer le suivi des comptes inactifs"
1397
1525
  msgid ""
1398
1526
  "Allow the administrator to set a threshold (in days) beyond which an account"
1399
1527
  " is considered inactive if the user hasn't logged in"
1400
- 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é"
1528
+ msgstr ""
1529
+ "Autoriser les administrateurs à définir in seuil (en jours) à partir duquel "
1530
+ "un compte est considéré comme inactif si l'utilisateur ne s'est pas connecté"
1401
1531
 
1402
1532
  #: core/app_settings.py:695
1403
1533
  msgid "Inactive account threshold"
@@ -1407,7 +1537,9 @@ msgstr "Seuil des comptes inactifs"
1407
1537
  msgid ""
1408
1538
  "An account with a last login date greater than this threshold (in days) will"
1409
1539
  " be considered as inactive"
1410
- msgstr "Un compte avec une date de dernière connexion antérieure à ce seuil sera considéré comme inactif"
1540
+ msgstr ""
1541
+ "Un compte avec une date de dernière connexion antérieure à ce seuil sera "
1542
+ "considéré comme inactif"
1411
1543
 
1412
1544
  #: core/app_settings.py:707
1413
1545
  msgid "Top notifications check interval"
@@ -1425,28 +1557,41 @@ msgstr "Age maximal d'un enregistrement du journal"
1425
1557
  msgid "The maximum age in days of a log record"
1426
1558
  msgstr "L'age maximal en jours d'un enregistrement du journal"
1427
1559
 
1428
- #: core/app_settings.py:726
1560
+ #: core/app_settings.py:727
1561
+ msgid "Retention time in message history"
1562
+ msgstr "Durée de rétention dans l'historique des messages"
1563
+
1564
+ #: core/app_settings.py:730
1565
+ msgid "Retention time (in days) of a message in the message history section"
1566
+ msgstr ""
1567
+ "Durée de rétention (en jours) d'un message dans l'historique des messages"
1568
+
1569
+ #: core/app_settings.py:737
1429
1570
  msgid "Items per page"
1430
1571
  msgstr "Eléments par page"
1431
1572
 
1432
- #: core/app_settings.py:728
1573
+ #: core/app_settings.py:739
1433
1574
  msgid "Number of displayed items per page"
1434
1575
  msgstr "Nombre d'éléments affichés par page"
1435
1576
 
1436
- #: core/app_settings.py:735
1577
+ #: core/app_settings.py:746
1437
1578
  msgid "Default top redirection"
1438
1579
  msgstr "Redirection par défaut"
1439
1580
 
1440
- #: core/app_settings.py:737
1581
+ #: core/app_settings.py:748
1441
1582
  msgid "The default redirection used when no application is specified"
1442
- msgstr "La redirection appliquée par défaut quand aucune application n'est spécifiée"
1583
+ msgstr ""
1584
+ "La redirection appliquée par défaut quand aucune application n'est spécifiée"
1443
1585
 
1444
1586
  #: core/checks.py:15
1445
1587
  msgid ""
1446
1588
  "You have USE_TZ set to False, this may result in issues during transitions "
1447
1589
  "between summer/winter time (ie the same local time occuring twice due to "
1448
1590
  "clock change)."
1449
- msgstr "Vous avez défini USE_TZ à False, ce qui peut entraîner des problèmes lors des transitions entre l'heure d'été et l'heure d'hiver (c.-à-d. La même heure locale se produisant deux fois en raison d'un changement d'horloge)."
1591
+ msgstr ""
1592
+ "Vous avez défini USE_TZ à False, ce qui peut entraîner des problèmes lors "
1593
+ "des transitions entre l'heure d'été et l'heure d'hiver (c.-à-d. La même "
1594
+ "heure locale se produisant deux fois en raison d'un changement d'horloge)."
1450
1595
 
1451
1596
  #: core/checks.py:19
1452
1597
  msgid "Set `USE_TZ = True` in settings.py"
@@ -1458,33 +1603,45 @@ msgstr "La méthode de chiffrement que vous utilisez est obsolète."
1458
1603
 
1459
1604
  #: core/checks.py:24
1460
1605
  msgid "Upgrade your password scheme to a stronger one"
1461
- msgstr "Mettez à jour votre méthode de chiffrement de mot de passe vers une plus sûre"
1606
+ msgstr ""
1607
+ "Mettez à jour votre méthode de chiffrement de mot de passe vers une plus "
1608
+ "sûre"
1462
1609
 
1463
1610
  #: core/checks.py:30
1464
1611
  msgid ""
1465
1612
  "Oauth2 application for dovecot has not been found. Webmail and some other "
1466
1613
  "features won't be available."
1467
- msgstr "Application Oauth2 non trouvée pour dovecot. Le webmail ainsi que d'autres fonctionnalités ne seront pas disponibles."
1614
+ msgstr ""
1615
+ "Application Oauth2 non trouvée pour dovecot. Le webmail ainsi que d'autres "
1616
+ "fonctionnalités ne seront pas disponibles."
1468
1617
 
1469
1618
  #: core/checks.py:34
1470
1619
  msgid ""
1471
1620
  "Visit : "
1472
1621
  "https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
1473
1622
  "oauth2"
1474
- msgstr "Visiter : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-oauth2"
1623
+ msgstr ""
1624
+ "Visiter : "
1625
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
1626
+ "oauth2"
1475
1627
 
1476
1628
  #: core/checks.py:41
1477
1629
  msgid ""
1478
1630
  "Oauth2 application for radicale has not been found. Calendar and some other "
1479
1631
  "features won't be available."
1480
- msgstr "Application Oauth2 pour Radicale non trouvée. Le calendrier ainsi que d'autres fonctionnalités ne seront pas disponibles."
1632
+ msgstr ""
1633
+ "Application Oauth2 pour Radicale non trouvée. Le calendrier ainsi que "
1634
+ "d'autres fonctionnalités ne seront pas disponibles."
1481
1635
 
1482
1636
  #: core/checks.py:45
1483
1637
  msgid ""
1484
1638
  "Visit : "
1485
1639
  "https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
1486
1640
  "oauth2"
1487
- msgstr "Consulter : https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-oauth2"
1641
+ msgstr ""
1642
+ "Consulter : "
1643
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
1644
+ "oauth2"
1488
1645
 
1489
1646
  #: core/constants.py:6
1490
1647
  msgid "Simple user"
@@ -1571,7 +1728,9 @@ msgstr "Une ou plusieurs mises à jour sont disponibles!"
1571
1728
  #: core/handlers.py:138
1572
1729
  #, python-format
1573
1730
  msgid "You are still using a deprecated password scheme (%s)"
1574
- msgstr "Vous utilisez encore une méthode de chiffrement de mot de passe obsolète (%s)"
1731
+ msgstr ""
1732
+ "Vous utilisez encore une méthode de chiffrement de mot de passe obsolète "
1733
+ "(%s)"
1575
1734
 
1576
1735
  #: core/management/commands/communicate_with_public_api.py:42
1577
1736
  msgid "[modoboa] Update(s) available"
@@ -1611,7 +1770,8 @@ msgstr "Une adresse e-mail alternative ou de secours."
1611
1770
 
1612
1771
  #: core/models.py:150
1613
1772
  msgid "Failed to update password: LDAP module not installed"
1614
- msgstr "Echec de la mise à jour du mot de passe : le module LDAP n'est pas installé"
1773
+ msgstr ""
1774
+ "Echec de la mise à jour du mot de passe : le module LDAP n'est pas installé"
1615
1775
 
1616
1776
  #: core/models.py:185 policyd/core.py:117
1617
1777
  msgid "account"
@@ -1631,7 +1791,9 @@ msgstr "L'utilisateur de base '{}' doit avoir une adresse email correcte"
1631
1791
 
1632
1792
  #: core/models.py:383
1633
1793
  msgid "username and email fields must not differ for '{}'"
1634
- msgstr "les champs nom d'utilisateur et email ne doivent pas être différents pour '{}'"
1794
+ msgstr ""
1795
+ "les champs nom d'utilisateur et email ne doivent pas être différents pour "
1796
+ "'{}'"
1635
1797
 
1636
1798
  #: core/password_validation.py:25
1637
1799
  msgid "Password must contain at least {} digit."
@@ -1663,7 +1825,9 @@ msgstr[2] "Le mot de passe doit contenir au moins {} caractères spéciaux."
1663
1825
 
1664
1826
  #: core/password_validation.py:70
1665
1827
  msgid "Your password must contain a combination of different character types."
1666
- msgstr "Votre mot de passe doit contenir une combinaison de différents types de caractère."
1828
+ msgstr ""
1829
+ "Votre mot de passe doit contenir une combinaison de différents types de "
1830
+ "caractère."
1667
1831
 
1668
1832
  #: core/sms_backends/ovh.py:21 core/sms_backends/ovh.py:102
1669
1833
  msgid "API endpoint"
@@ -1720,9 +1884,15 @@ msgid ""
1720
1884
  msgid_plural ""
1721
1885
  "\n"
1722
1886
  " The following updates are available:\n"
1723
- msgstr[0] "\nLa mise à jour suivante est disponible :\n"
1724
- msgstr[1] "\nLes mises à jour suivantes sont disponibles :\n"
1725
- msgstr[2] "\nLes mises à jour suivantes sont disponibles :\n"
1887
+ msgstr[0] ""
1888
+ "\n"
1889
+ "La mise à jour suivante est disponible :\n"
1890
+ msgstr[1] ""
1891
+ "\n"
1892
+ "Les mises à jour suivantes sont disponibles :\n"
1893
+ msgstr[2] ""
1894
+ "\n"
1895
+ "Les mises à jour suivantes sont disponibles :\n"
1726
1896
 
1727
1897
  #: core/utils.py:43
1728
1898
  msgid "The core part of Modoboa"
@@ -1736,12 +1906,16 @@ msgstr "Utiliseur '%s' connecté avec succès"
1736
1906
  #: core/views/auth.py:109
1737
1907
  #, python-format
1738
1908
  msgid "Password scheme mismatch. Updating %s password"
1739
- msgstr "La méthode de chiffrement du mot de passe diffère. Mise à jour du mot de passe de %s"
1909
+ msgstr ""
1910
+ "La méthode de chiffrement du mot de passe diffère. Mise à jour du mot de "
1911
+ "passe de %s"
1740
1912
 
1741
1913
  #: core/views/auth.py:116
1742
1914
  #, python-format
1743
1915
  msgid "Password hash parameter missmatch. Updating %s password"
1744
- msgstr "Le paramètre de hash du mot de passe ne correspond pas. Mise à jour %s du mot de passe"
1916
+ msgstr ""
1917
+ "Le paramètre de hash du mot de passe ne correspond pas. Mise à jour %s du "
1918
+ "mot de passe"
1745
1919
 
1746
1920
  #: core/views/auth.py:154
1747
1921
  msgid "User '{}' successfully logged out"
@@ -1757,7 +1931,9 @@ msgstr "Activer les recherches inversées"
1757
1931
 
1758
1932
  #: dmarc/forms.py:23
1759
1933
  msgid "Enable reverse DNS lookups (reports will be longer to display)"
1760
- msgstr "Activer les recherches DNS inversées (les rapports seront plus longs à afficher)"
1934
+ msgstr ""
1935
+ "Activer les recherches DNS inversées (les rapports seront plus longs à "
1936
+ "afficher)"
1761
1937
 
1762
1938
  #: dmarc/forms.py:42
1763
1939
  msgid "DMARC"
@@ -1944,7 +2120,9 @@ msgstr "Filtre d'exclusion de dossier"
1944
2120
  msgid ""
1945
2121
  "Use a regular expression to explicitly include folders in sync. Example: "
1946
2122
  "^Trash$|Del"
1947
- msgstr "Utiliser une expression régulière pour explicitement inclure des dossiers à synchroniser. Exemple : ^Trash$|Del"
2123
+ msgstr ""
2124
+ "Utiliser une expression régulière pour explicitement inclure des dossiers à "
2125
+ "synchroniser. Exemple : ^Trash$|Del"
1948
2126
 
1949
2127
  #: imap_migration/app_settings.py:74
1950
2128
  msgid "Folder Filter Inclusions"
@@ -1955,27 +2133,29 @@ msgid ""
1955
2133
  "A comma seperated list of folders to explicitly include in sync even if "
1956
2134
  "filtered by the Folder Filter Exclusions. Example: debian.user, "
1957
2135
  "debian.personal "
1958
- msgstr "Une liste de dossiers séparés par des virgules à explicitement inclure pendant la synchronisation même s'ils sont concernés par le filtre d'exclusion. Exemple debian.user, debian.personal"
2136
+ msgstr ""
2137
+ "Une liste de dossiers séparés par des virgules à explicitement inclure "
2138
+ "pendant la synchronisation même s'ils sont concernés par le filtre "
2139
+ "d'exclusion. Exemple debian.user, debian.personal"
1959
2140
 
1960
2141
  #: imap_migration/apps.py:20
1961
2142
  msgid "IMAP Migration"
1962
2143
  msgstr "Migration IMAP"
1963
2144
 
1964
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
1965
- #, python-brace-format
1966
- msgid "Connection to IMAP server failed: {error}"
1967
- msgstr "La connexion au serveur IMAP a échoué : {error}"
1968
-
1969
2145
  #: imap_migration/checks.py:12
1970
2146
  msgid ""
1971
2147
  "Automatic domain/mailbox creation is disabled which means IMAP "
1972
2148
  "authentication won't work."
1973
- msgstr "La création automatique de domaine/compte est désactivée, ce qui veut dire que l'authentification IMAP ne fonctionnera pas."
2149
+ msgstr ""
2150
+ "La création automatique de domaine/compte est désactivée, ce qui veut dire "
2151
+ "que l'authentification IMAP ne fonctionnera pas."
1974
2152
 
1975
2153
  #: imap_migration/checks.py:16
1976
2154
  msgid ""
1977
2155
  "Go to the online parameters panel (admin tab) and activate this feature."
1978
- msgstr "Rendez vous sur le panneau de configuration des paramètres (onglet Administration) et activez cette fonctionnalité."
2156
+ msgstr ""
2157
+ "Rendez vous sur le panneau de configuration des paramètres (onglet "
2158
+ "Administration) et activez cette fonctionnalité."
1979
2159
 
1980
2160
  #: ldapsync/lib.py:82
1981
2161
  msgid "Failed to create LDAP account: {}"
@@ -2044,13 +2224,17 @@ msgstr "Admins de domaine"
2044
2224
  msgid ""
2045
2225
  "Maximum number of allowed domain administrators for a new administrator. (0 "
2046
2226
  "to deny any creation, -1 to allow unlimited creations)"
2047
- msgstr "Nombre maximal d'admins de domaine pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les création illimitées)"
2227
+ msgstr ""
2228
+ "Nombre maximal d'admins de domaine pour un nouvel administrateur. (0 pour "
2229
+ "interdire toute création, -1 pour autoriser les création illimitées)"
2048
2230
 
2049
2231
  #: limits/app_settings.py:41
2050
2232
  msgid ""
2051
2233
  "Maximum number of allowed domains for a new administrator. (0 to deny any "
2052
2234
  "creation, -1 to allow unlimited creations)"
2053
- msgstr "Nombre maximal de domaines pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2235
+ msgstr ""
2236
+ "Nombre maximal de domaines pour un nouvel administrateur. (0 pour interdire "
2237
+ "toute création, -1 pour autoriser les créations illimitées)"
2054
2238
 
2055
2239
  #: limits/app_settings.py:49 limits/app_settings.py:123 limits/constants.py:22
2056
2240
  #: limits/constants.py:76
@@ -2061,13 +2245,17 @@ msgstr "Alias de domaine"
2061
2245
  msgid ""
2062
2246
  "Maximum number of allowed domain aliases for a new administrator. (0 to deny"
2063
2247
  " any creation, -1 to allow unlimited creations)"
2064
- msgstr "Nombre maximal d'alias de domaine pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2248
+ msgstr ""
2249
+ "Nombre maximal d'alias de domaine pour un nouvel administrateur. (0 pour "
2250
+ "interdire toute création, -1 pour autoriser les créations illimitées)"
2065
2251
 
2066
2252
  #: limits/app_settings.py:64
2067
2253
  msgid ""
2068
2254
  "Maximum number of allowed mailboxes for a new administrator. (0 to deny any "
2069
2255
  "creation, -1 to allow unlimited creations)"
2070
- msgstr "Nombre maximal de boites pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2256
+ msgstr ""
2257
+ "Nombre maximal de boites pour un nouvel administrateur. (0 pour interdire "
2258
+ "toute création, -1 pour autoriser les créations illimitées)"
2071
2259
 
2072
2260
  #: limits/app_settings.py:73 limits/app_settings.py:146 limits/constants.py:39
2073
2261
  #: limits/constants.py:92
@@ -2078,7 +2266,9 @@ msgstr "Alias de boite"
2078
2266
  msgid ""
2079
2267
  "Maximum number of allowed aliases for a new administrator. (0 to deny any "
2080
2268
  "creation, -1 to allow unlimited creations)"
2081
- msgstr "Nombre maximal d'alias de boite pour un nouvel administrateur. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2269
+ msgstr ""
2270
+ "Nombre maximal d'alias de boite pour un nouvel administrateur. (0 pour "
2271
+ "interdire toute création, -1 pour autoriser les créations illimitées)"
2082
2272
 
2083
2273
  #: limits/app_settings.py:84 limits/constants.py:59
2084
2274
  msgid "Quota"
@@ -2088,7 +2278,9 @@ msgstr "Quota"
2088
2278
  msgid ""
2089
2279
  "The quota a reseller will be allowed to share between the domains he "
2090
2280
  "creates. (0 means no quota)"
2091
- msgstr "Le quota qu'un revendeur sera autorisé à partager entre les domaines qu'il créé. (0 signifie pas de quota)"
2281
+ msgstr ""
2282
+ "Le quota qu'un revendeur sera autorisé à partager entre les domaines qu'il "
2283
+ "créé. (0 signifie pas de quota)"
2092
2284
 
2093
2285
  #: limits/app_settings.py:98
2094
2286
  msgid "Default per-domain limits"
@@ -2106,25 +2298,34 @@ msgstr "Activer ou désactiver les limites par domaine"
2106
2298
  msgid ""
2107
2299
  "Maximum number of allowed domain administrators for a new domain. (0 to deny"
2108
2300
  " any creation, -1 to allow unlimited creations)"
2109
- msgstr "Nombre maximal d'administrateurs de domaine autorisés pour un nouveau domaine (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2301
+ msgstr ""
2302
+ "Nombre maximal d'administrateurs de domaine autorisés pour un nouveau "
2303
+ "domaine (0 pour interdire toute création, -1 pour autoriser les créations "
2304
+ "illimitées)"
2110
2305
 
2111
2306
  #: limits/app_settings.py:126
2112
2307
  msgid ""
2113
2308
  "Maximum number of allowed domain aliases for a new domain. (0 to deny any "
2114
2309
  "creation, -1 to allow unlimited creations)"
2115
- msgstr "Nombre maximal d'alias de domaine autorisés pour un nouveau domaine. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2310
+ msgstr ""
2311
+ "Nombre maximal d'alias de domaine autorisés pour un nouveau domaine. (0 pour"
2312
+ " interdire toute création, -1 pour autoriser les créations illimitées)"
2116
2313
 
2117
2314
  #: limits/app_settings.py:138
2118
2315
  msgid ""
2119
2316
  "Maximum number of allowed mailboxes for a new domain. (0 to deny any "
2120
2317
  "creation, -1 to allow unlimited creations)"
2121
- msgstr "Nombre maximal de boites aux lettres autorisées pour un nouveau domaine. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2318
+ msgstr ""
2319
+ "Nombre maximal de boites aux lettres autorisées pour un nouveau domaine. (0 "
2320
+ "pour interdire toute création, -1 pour autoriser les créations illimitées)"
2122
2321
 
2123
2322
  #: limits/app_settings.py:149
2124
2323
  msgid ""
2125
2324
  "Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
2126
2325
  " -1 to allow unlimited creations)"
2127
- msgstr "Nombre maximal d'alias autorisés pour un nouveau domaine. (0 pour interdire toute création, -1 pour autoriser les créations illimitées)"
2326
+ msgstr ""
2327
+ "Nombre maximal d'alias autorisés pour un nouveau domaine. (0 pour interdire "
2328
+ "toute création, -1 pour autoriser les créations illimitées)"
2128
2329
 
2129
2330
  #: limits/apps.py:16
2130
2331
  msgid "Limits"
@@ -2168,7 +2369,8 @@ msgstr "Nombre maximal d'alias autorisés pour ce domaine."
2168
2369
 
2169
2370
  #: limits/constants.py:102
2170
2371
  msgid "Maximum number of domain admins allowed for this domain."
2171
- msgstr "Nombre maximal d'administrateurs de domaine autorisés pour ce domaine."
2372
+ msgstr ""
2373
+ "Nombre maximal d'administrateurs de domaine autorisés pour ce domaine."
2172
2374
 
2173
2375
  #: limits/lib.py:19
2174
2376
  #, python-format
@@ -2189,7 +2391,9 @@ msgstr "illimité"
2189
2391
 
2190
2392
  #: maillog/api/v2/serializers.py:35
2191
2393
  msgid "You must provide start and end dates when period is custom"
2192
- msgstr "Vous devez fournir des dates de début et fin quand la période est personnalisée"
2394
+ msgstr ""
2395
+ "Vous devez fournir des dates de début et fin quand la période est "
2396
+ "personnalisée"
2193
2397
 
2194
2398
  #: maillog/apps.py:20
2195
2399
  msgid "Path to the log file"
@@ -2287,11 +2491,11 @@ msgstr "Comptes"
2287
2491
  msgid "Personal account information"
2288
2492
  msgstr "Informations de compte personnel"
2289
2493
 
2290
- #: pdfcredentials/api/v2/serializers.py:81
2494
+ #: pdfcredentials/api/v2/serializers.py:86
2291
2495
  msgid "Directory is not writable"
2292
2496
  msgstr "Le répertoire n'est pas accessible en écriture"
2293
2497
 
2294
- #: pdfcredentials/api/v2/serializers.py:102
2498
+ #: pdfcredentials/api/v2/serializers.py:114
2295
2499
  msgid "No document available for this user"
2296
2500
  msgstr "Aucun document disponible pour cet utilisateur"
2297
2501
 
@@ -2301,7 +2505,9 @@ msgstr "Activer les identifiants PDF"
2301
2505
 
2302
2506
  #: pdfcredentials/app_settings.py:21
2303
2507
  msgid "Enabled PDF credentials document generation on account creation."
2304
- msgstr "Activer la génération d'un document PDF d'identifiants à la création d'un compte."
2508
+ msgstr ""
2509
+ "Activer la génération d'un document PDF d'identifiants à la création d'un "
2510
+ "compte."
2305
2511
 
2306
2512
  #: pdfcredentials/app_settings.py:32
2307
2513
  msgid "Documents storage"
@@ -2327,7 +2533,9 @@ msgstr "Supprimer les documents après le premier téléchargement"
2327
2533
  msgid ""
2328
2534
  "Automatically delete a document just after its first download from this "
2329
2535
  "interface"
2330
- msgstr "Supprimer automatiquement un document juste après son premier téléchargement depuis cette interface"
2536
+ msgstr ""
2537
+ "Supprimer automatiquement un document juste après son premier téléchargement"
2538
+ " depuis cette interface"
2331
2539
 
2332
2540
  #: pdfcredentials/app_settings.py:68
2333
2541
  msgid "Generate documents only at account creation"
@@ -2337,7 +2545,10 @@ msgstr "Générer les documents à la création des comptes uniquement"
2337
2545
  msgid ""
2338
2546
  "Generate a new document only when a new account is created. If set to no, a "
2339
2547
  "new document will be created each time a password is updated."
2340
- msgstr "Génère un nouveau document uniquement lors de la création d'un compte. Si défini à non, un nouveau document sera généré chaque fois qu'un mot de passe est changé."
2548
+ msgstr ""
2549
+ "Génère un nouveau document uniquement lors de la création d'un compte. Si "
2550
+ "défini à non, un nouveau document sera généré chaque fois qu'un mot de passe"
2551
+ " est changé."
2341
2552
 
2342
2553
  #: pdfcredentials/app_settings.py:84
2343
2554
  msgid "Customization options"
@@ -2375,7 +2586,9 @@ msgstr "Inclure les paramètres de connexion pour client mail"
2375
2586
  msgid ""
2376
2587
  "Include required SMTP and IMAP connection information to configure a mail "
2377
2588
  "client, a tablet or a phone"
2378
- msgstr "Inclure les paramètres de connexion nécessaires pour configurer un client mail, une tablette ou un téléphone"
2589
+ msgstr ""
2590
+ "Inclure les paramètres de connexion nécessaires pour configurer un client "
2591
+ "mail, une tablette ou un téléphone"
2379
2592
 
2380
2593
  #: pdfcredentials/app_settings.py:123 pdfcredentials/documents.py:133
2381
2594
  msgid "SMTP server address"
@@ -2436,7 +2649,11 @@ msgid ""
2436
2649
  "Dear %s, this document contains the credentials you will need\n"
2437
2650
  "to connect to Modoboa. Learn the content and destroy\n"
2438
2651
  "the document as soon as possible.\n"
2439
- msgstr "\nCher %s, ce document contient les identifiants dont vous aurez\nbesoin pour vous connecter à Modoboa. Apprenez les puis détruisez\nce document le plus rapidement possible.\n"
2652
+ msgstr ""
2653
+ "\n"
2654
+ "Cher %s, ce document contient les identifiants dont vous aurez\n"
2655
+ "besoin pour vous connecter à Modoboa. Apprenez les puis détruisez\n"
2656
+ "ce document le plus rapidement possible.\n"
2440
2657
 
2441
2658
  #: pdfcredentials/documents.py:95
2442
2659
  msgid "Web panel:"
@@ -2455,7 +2672,9 @@ msgid ""
2455
2672
  "\n"
2456
2673
  "Here you can view your emails anytime online, create filters or manage\n"
2457
2674
  "your contacts.\n"
2458
- msgstr "\nD'ici vous pouvez consulter vos emails en ligne n'importe quand, créer des filtres ou gérer vos contacts.\n"
2675
+ msgstr ""
2676
+ "\n"
2677
+ "D'ici vous pouvez consulter vos emails en ligne n'importe quand, créer des filtres ou gérer vos contacts.\n"
2459
2678
 
2460
2679
  #: pdfcredentials/documents.py:126
2461
2680
  msgid "Please change your password!"
@@ -2467,13 +2686,17 @@ msgstr "Configuration PC/Tablette/Smartphone :"
2467
2686
 
2468
2687
  #: pdfcredentials/documents.py:153
2469
2688
  msgid "Use those settings for your computer, tablet or phone."
2470
- msgstr "Utilisez ces paramètres pour votre ordinateur, votre tablette ou votre téléphone."
2689
+ msgstr ""
2690
+ "Utilisez ces paramètres pour votre ordinateur, votre tablette ou votre "
2691
+ "téléphone."
2471
2692
 
2472
2693
  #: pdfcredentials/handlers.py:35
2473
2694
  msgid ""
2474
2695
  "Failed to create PDF_credentials directory. Please check the permissions or "
2475
2696
  "the path."
2476
- msgstr "Echec lors de la création du répertoire PDF_credentials. Veuillez vérifier les permissions et le chemin d'accès."
2697
+ msgstr ""
2698
+ "Echec lors de la création du répertoire PDF_credentials. Veuillez vérifier "
2699
+ "les permissions et le chemin d'accès."
2477
2700
 
2478
2701
  #: pdfcredentials/handlers.py:64
2479
2702
  msgid "Download PDF credentials"
@@ -2481,18 +2704,24 @@ msgstr "Télécharger les identifiants PDF"
2481
2704
 
2482
2705
  #: pdfcredentials/lib.py:29
2483
2706
  msgid "Can't write to selected directory to store PDF documents"
2484
- msgstr "Impossible d'écrire dans le répertoire sélectionné pour stocker les documents PDF"
2707
+ msgstr ""
2708
+ "Impossible d'écrire dans le répertoire sélectionné pour stocker les "
2709
+ "documents PDF"
2485
2710
 
2486
2711
  #: pdfcredentials/lib.py:35
2487
2712
  #, python-format
2488
2713
  msgid "Failed to create the directory that will contain PDF documents (%s)"
2489
- msgstr "Echec lors de la création du répertoire qui contiendra les documents PDF (%s)"
2714
+ msgstr ""
2715
+ "Echec lors de la création du répertoire qui contiendra les documents PDF "
2716
+ "(%s)"
2490
2717
 
2491
2718
  #: pdfcredentials/lib.py:82
2492
2719
  msgid ""
2493
2720
  "Failed to create PDF_credentials file. Please check the permissions or the "
2494
2721
  "path."
2495
- msgstr "Echec lors de la création du fichier PDF_credentials. Veuillez vérifier les permissions et le chemin d'accès."
2722
+ msgstr ""
2723
+ "Echec lors de la création du fichier PDF_credentials. Veuillez vérifier les "
2724
+ "permissions et le chemin d'accès."
2496
2725
 
2497
2726
  #: policyd/core.py:99
2498
2727
  msgid "Daily sending limit reached"
@@ -2509,7 +2738,8 @@ msgstr "[modoboa] Limite d'envoi atteinte"
2509
2738
  #: policyd/templates/policyd/notifications/limit_reached.html:3
2510
2739
  #, python-format
2511
2740
  msgid "Daily limit of the following %(ltype)s has been reached: %(name)s."
2512
- msgstr "Limite quotidienne d'envoi du %(ltype)s suivant a été atteinte : %(name)s."
2741
+ msgstr ""
2742
+ "Limite quotidienne d'envoi du %(ltype)s suivant a été atteinte : %(name)s."
2513
2743
 
2514
2744
  #: relaydomains/api/v1/serializers.py:24
2515
2745
  msgid "Unsupported service"
@@ -2551,7 +2781,10 @@ msgstr "Chemin d'accès vers le fichier des clés"
2551
2781
  msgid ""
2552
2782
  "Absolute path of the file which contains paths to DKIM private keys. Must be"
2553
2783
  " readable by _rspamd group or user."
2554
- msgstr "Chemin absolu vers le fichier qui contient les chemins vers les clés privées DKIM. Doit être accessible en lecture par l'utilisateur ou le groupe _rspamd."
2784
+ msgstr ""
2785
+ "Chemin absolu vers le fichier qui contient les chemins vers les clés privées"
2786
+ " DKIM. Doit être accessible en lecture par l'utilisateur ou le groupe "
2787
+ "_rspamd."
2555
2788
 
2556
2789
  #: rspamd/app_settings.py:30
2557
2790
  msgid "Selector map path"
@@ -2561,7 +2794,9 @@ msgstr "Chemin d'accès vers le fichier des sélecteurs"
2561
2794
  msgid ""
2562
2795
  "Absolute path of the file which contains names of DKIM selectors. Must be "
2563
2796
  "readable by _rspamd group or user."
2564
- msgstr "Chemin absolu vers le fichier qui contient le nom des sélecteurs DKIM. Doit être accessible en lecture par l'utilisateur ou le groupe _rspamd."
2797
+ msgstr ""
2798
+ "Chemin absolu vers le fichier qui contient le nom des sélecteurs DKIM. Doit "
2799
+ "être accessible en lecture par l'utilisateur ou le groupe _rspamd."
2565
2800
 
2566
2801
  #: rspamd/app_settings.py:51
2567
2802
  msgid "Rspamd dashboard location"
@@ -2572,7 +2807,9 @@ msgid ""
2572
2807
  "Location of the rspamd dashboard. Can either be a relative URL (eg. "
2573
2808
  "'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2574
2809
  "guidance on the Super-Admin dashboard."
2575
- msgstr "Emplacement du dashboard rspamd. Peut être soit une URL relative (ie. '/rspamd') ou une URL complète (ie. 'https://rspamd.domain.tld')."
2810
+ msgstr ""
2811
+ "Emplacement du dashboard rspamd. Peut être soit une URL relative (ie. "
2812
+ "'/rspamd') ou une URL complète (ie. 'https://rspamd.domain.tld')."
2576
2813
 
2577
2814
  #: rspamd/apps.py:18
2578
2815
  msgid "Rspamd"
@@ -2697,7 +2934,8 @@ msgstr "Arrêter le traitement"
2697
2934
 
2698
2935
  #: sievefilters/lib.py:49
2699
2936
  msgid "Connection to MANAGESIEVE server failed, check your configuration"
2700
- msgstr "La connexion au serveur MANAGESIEVE a échoué, vérifiez votre configuration"
2937
+ msgstr ""
2938
+ "La connexion au serveur MANAGESIEVE a échoué, vérifiez votre configuration"
2701
2939
 
2702
2940
  #: sievefilters/lib.py:76
2703
2941
  msgid "Not enough space on server"
@@ -2752,7 +2990,9 @@ msgstr "Mot de passe oublié ?"
2752
2990
  msgid ""
2753
2991
  "Your password has been set. You may go ahead and <a href=\"%(url)s\">sign "
2754
2992
  "in</a> now."
2755
- msgstr "Votre mot de passe a été défini. Vous pouvez continuer et vous <a href=\"%(url)s\">connecter </a> dès maintenant."
2993
+ msgstr ""
2994
+ "Votre mot de passe a été défini. Vous pouvez continuer et vous <a "
2995
+ "href=\"%(url)s\">connecter </a> dès maintenant."
2756
2996
 
2757
2997
  #: templates/registration/password_reset_confirm.html:8
2758
2998
  msgid "Change password"
@@ -2768,7 +3008,10 @@ msgstr "Soumettre"
2768
3008
  msgid ""
2769
3009
  "The password reset link was invalid, possibly because it has already been "
2770
3010
  "used. Please request a new password reset."
2771
- msgstr "Le lien de réinitialisation du mot de passe était invalide, probablement parce qu'il a déjà été utilisé. Merci de demander une nouvelle réinitialisation de mot de passe."
3011
+ msgstr ""
3012
+ "Le lien de réinitialisation du mot de passe était invalide, probablement "
3013
+ "parce qu'il a déjà été utilisé. Merci de demander une nouvelle "
3014
+ "réinitialisation de mot de passe."
2772
3015
 
2773
3016
  #: templates/registration/password_reset_confirm_code.html:22
2774
3017
  msgid "Enter the code you've just received by SMS"
@@ -2788,7 +3031,12 @@ msgid ""
2788
3031
  "exists with the email you entered. You should receive them shortly.</p> "
2789
3032
  "<p>If you don't receive an email, please make sure you've entered your "
2790
3033
  "primary address, and check your spam folder.</p>"
2791
- msgstr "<p>Nous vous avons envoyé par email les instructions pour définir votre mot de passe, pour peu qu'un compte avec l'email que vous avez renseigné existe. Vous devriez les recevoir rapidement.</p><p>Si vous ne recevez pas d'email, merci de vérifier que vous avez renseigné votre adresse principale et de vérifier votre dossier spam.</p>"
3034
+ msgstr ""
3035
+ "<p>Nous vous avons envoyé par email les instructions pour définir votre mot "
3036
+ "de passe, pour peu qu'un compte avec l'email que vous avez renseigné existe."
3037
+ " Vous devriez les recevoir rapidement.</p><p>Si vous ne recevez pas d'email,"
3038
+ " merci de vérifier que vous avez renseigné votre adresse principale et de "
3039
+ "vérifier votre dossier spam.</p>"
2792
3040
 
2793
3041
  #: templates/registration/password_reset_email.html:4
2794
3042
  #: templates/registration/password_reset_email_v2.html:4
@@ -2796,14 +3044,18 @@ msgstr "<p>Nous vous avons envoyé par email les instructions pour définir votr
2796
3044
  msgid ""
2797
3045
  "To initiate the password reset process for your %(username)s Modoboa "
2798
3046
  "account, click the link below:"
2799
- msgstr "Pour initier la procédure de réinitialisation du mot de passe de votre compte Modoboa %(username)s, cliquez sur le lien ci-dessous :"
3047
+ msgstr ""
3048
+ "Pour initier la procédure de réinitialisation du mot de passe de votre "
3049
+ "compte Modoboa %(username)s, cliquez sur le lien ci-dessous :"
2800
3050
 
2801
3051
  #: templates/registration/password_reset_email.html:10
2802
3052
  #: templates/registration/password_reset_email_v2.html:10
2803
3053
  msgid ""
2804
3054
  "If clicking the link above doesn't work, please copy and paste the URL in a "
2805
3055
  "new browser window instead."
2806
- msgstr "Si cliquer sur lien ci-dessous ne fonctionne pas, merci de copier / coller cette URL dans une nouvelle fenêtre navigateur à la place."
3056
+ msgstr ""
3057
+ "Si cliquer sur lien ci-dessous ne fonctionne pas, merci de copier / coller "
3058
+ "cette URL dans une nouvelle fenêtre navigateur à la place."
2807
3059
 
2808
3060
  #: templates/registration/password_reset_email.html:14
2809
3061
  #: templates/registration/password_reset_email_v2.html:14
@@ -2834,7 +3086,10 @@ msgstr "Mot de passe jetable"
2834
3086
  msgid ""
2835
3087
  "Enter the code from the two-factor app on your mobile device. If you've lost"
2836
3088
  " your device, you may enter one of your recovery codes."
2837
- msgstr "Renseignez le code provenant de l'application double-facteur de votre téléphone mobile. Si vous avez perdu votre téléphone, vous pouvez utiliser l'un de vos codes de récupération."
3089
+ msgstr ""
3090
+ "Renseignez le code provenant de l'application double-facteur de votre "
3091
+ "téléphone mobile. Si vous avez perdu votre téléphone, vous pouvez utiliser "
3092
+ "l'un de vos codes de récupération."
2838
3093
 
2839
3094
  #: templates/registration/twofactor_code_verify.html:42
2840
3095
  msgid "Verify code"
@@ -2871,7 +3126,8 @@ msgstr "Taille maximale d'une pièce jointe"
2871
3126
 
2872
3127
  #: webmail/app_settings.py:19
2873
3128
  msgid "Maximum attachment size in bytes (or KB, MB, GB if specified)"
2874
- msgstr "Taille maximale d'une pièce jointe en octets (ou KB, MG, GB si précisé)"
3129
+ msgstr ""
3130
+ "Taille maximale d'une pièce jointe en octets (ou KB, MG, GB si précisé)"
2875
3131
 
2876
3132
  #: webmail/app_settings.py:67
2877
3133
  msgid "SMTP settings"
@@ -2903,7 +3159,7 @@ msgstr "Le serveur nécessite une authentification"
2903
3159
 
2904
3160
  #: webmail/app_settings.py:118
2905
3161
  msgid "Display"
2906
- msgstr "Affichage"
3162
+ msgstr "Afficher"
2907
3163
 
2908
3164
  #: webmail/app_settings.py:124
2909
3165
  msgid "Default message display mode"
@@ -2923,7 +3179,7 @@ msgstr "Activer/Désactiver l'affichage des liens HTML"
2923
3179
 
2924
3180
  #: webmail/app_settings.py:144
2925
3181
  msgid "Number of displayed emails per page"
2926
- msgstr "Nombre de messages affichés par page"
3182
+ msgstr "Nombre d'emails affichés par page"
2927
3183
 
2928
3184
  #: webmail/app_settings.py:147
2929
3185
  msgid "Sets the maximum number of messages displayed in a page"
@@ -3001,14 +3257,26 @@ msgstr "Texte de signature"
3001
3257
  msgid "User defined email signature"
3002
3258
  msgstr "Signature email personnalisée"
3003
3259
 
3260
+ #: webmail/exceptions.py:18
3261
+ msgid "Server response"
3262
+ msgstr "Réponse du serveur"
3263
+
3004
3264
  #: webmail/lib/attachments.py:112
3005
3265
  msgid "Failed to remove attachment: "
3006
3266
  msgstr "Impossible de supprimer la pièce jointe :"
3007
3267
 
3268
+ #: webmail/lib/imapemail.py:272
3269
+ msgid "wrote:"
3270
+ msgstr "a écrit :"
3271
+
3008
3272
  #: webmail/lib/imapemail.py:306
3009
3273
  msgid "Date"
3010
3274
  msgstr "Date"
3011
3275
 
3276
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3277
+ msgid "Original message"
3278
+ msgstr "Message original"
3279
+
3012
3280
  #: webmail/lib/imaputils.py:221
3013
3281
  msgid "Failed to retrieve hierarchy delimiter"
3014
3282
  msgstr "Echec lors de la récupération du séparateur de hierarchie"