Add Mailing lists to Administration

A mailing list is an address that passes mail on to everyone on it. To
Stalwart it is its own object, x:MailingList, behind sysMailingList*, so
it gets its own section under Directory after Groups: search, fifty to a
page with each list's recipient count, and a panel to create, edit and
delete one.

Recipients are a property of the list, so unlike a group's members they
save with the rest of the panel. What Save sends for them is only what was
added and removed, one recipients/<address> pointer each -- the patch the
live server accepted -- so a recipient added elsewhere while the panel was
open is not taken out. They can be pasted several at a time, from a
spreadsheet column, a comma-separated line or Name <address>; anything with
an @ that is not an address stays in the box with a note. Past a dozen, a
filter narrows them.

That is all a list is in Stalwart -- no owners, moderation or posting
rules -- so that is all the panel offers.

The mock answers x:MailingList with two lists, the recipient set's live
shape, and the refusals a wrong address, a clash with an account and a
missing permission get.

Twenty-five new strings and one plural, in all nine catalogues.
This commit is contained in:
2026-09-15 08:47:04 -07:00
parent 79afc334ab
commit 627422d794
25 changed files with 1113 additions and 13 deletions
+26
View File
@@ -179,6 +179,31 @@ export const catalog: Catalog = {
"Your organisation has reached the number of groups it is allowed.": "Votre organisation a atteint le nombre de groupes autorisé.",
"This group no longer exists. Someone may have deleted it.": "Ce groupe nexiste plus. Quelquun la peut-être supprimé.",
"The server did not say whether the group was created.": "Le serveur na pas indiqué si le groupe a été créé.",
"Mailing lists": "Listes de diffusion",
"Mailing list": "Liste de diffusion",
"A list needs an address.": "Une liste a besoin dune adresse.",
"New mailing list": "Nouvelle liste de diffusion",
"Your role lets you view mailing lists but not change them.": "Votre rôle vous permet de consulter les listes de diffusion, mais pas de les modifier.",
"No domains are available to create a list on.": "Aucun domaine nest disponible pour créer une liste.",
"Mail to these addresses goes to the list too. Changes apply when you save.": "Les messages envoyés à ces adresses vont aussi à la liste. Les modifications sappliquent à lenregistrement.",
"Create list": "Créer la liste",
"Filter recipients": "Filtrer les destinataires",
"No recipients match": "Aucun destinataire ne correspond",
"Add recipients": "Ajouter des destinataires",
"Addresses, separated by commas": "Adresses séparées par des virgules",
"Not added, as they aren't addresses: {items}": "Non ajoutés, car ce ne sont pas des adresses : {items}",
"Mail to the list is passed on to every recipient, on this server or anywhere else. Paste several at once if you like. Changes apply when you save.": "Les messages envoyés à la liste sont transmis à chaque destinataire, sur ce serveur ou ailleurs. Vous pouvez en coller plusieurs à la fois. Les modifications sappliquent à lenregistrement.",
"Mail to this address stops being passed on. The recipients' own mail is untouched.": "Les messages envoyés à cette adresse ne sont plus transmis. Les messages des destinataires eux-mêmes ne sont pas touchés.",
"Delete list…": "Supprimer la liste…",
"Delete list": "Supprimer la liste",
"Mail to this address is no longer passed on to anyone. It can't be undone.": "Les messages envoyés à cette adresse ne sont plus transmis à personne. Cest irréversible.",
"Addresses that pass mail on to everyone on them.": "Des adresses qui transmettent les messages à tous leurs destinataires.",
"Search mailing lists": "Rechercher des listes de diffusion",
"No mailing lists match": "Aucune liste de diffusion ne correspond",
"No mailing lists yet": "Aucune liste de diffusion pour linstant",
"Your organisation has reached the number of mailing lists it is allowed.": "Votre organisation a atteint le nombre de listes de diffusion autorisé.",
"This mailing list no longer exists. Someone may have deleted it.": "Cette liste de diffusion nexiste plus. Quelquun la peut-être supprimée.",
"The server did not say whether the list was created.": "Le serveur na pas indiqué si la liste a été créée.",
"User": "Utilisateur",
"Administrator": "Administrateur",
"Custom role": "Rôle personnalisé",
@@ -1574,6 +1599,7 @@ export const catalog: Catalog = {
"{n} groups": { one: "{n} groupe", other: "{n} groupes" },
"Its {n} members are taken out of the group first, and lose what was shared with it. The group's own mail is removed in the background, and it can't be undone.": { one: "Son {n} membre est dabord retiré du groupe et perd ce qui était partagé avec lui. Les messages du groupe sont supprimés en arrière-plan, et cest irréversible.", other: "Ses {n} membres sont dabord retirés du groupe et perdent ce qui était partagé avec lui. Les messages du groupe sont supprimés en arrière-plan, et cest irréversible." },
"{n} mailing lists": { one: "{n} liste de diffusion", other: "{n} listes de diffusion" },
"{n} recipients": { one: "{n} destinataire", other: "{n} destinataires" },
"{n} DKIM keys": { one: "{n} clé DKIM", other: "{n} clés DKIM" },
"{n} other items": { one: "{n} autre élément", other: "{n} autres éléments" },
// ── Administration ────────────────────────────────────────────────