Add Domains to Administration
A role that can read domains now finds a Domains section beside Accounts: list and search with each domain's account count and whether its DNS, DKIM and certificate are managed automatically; add a domain; edit its description, other names, catch-all address and plus addressing; copy its DNS records one at a time or as a zone file; see its DKIM keys and their stage; and remove it once no accounts use it. The records come from the zone file Stalwart computes per domain. A long DKIM record, which the BIND serialiser splits into quoted chunks, is joined back into the single value a DNS provider's form wants. Removing a domain takes its DKIM keys first, in the same request, because the server will not remove a domain its keys still name. Removal is not offered while accounts use the domain, or when the role cannot remove the keys. The Administration nav is now built from the sections the role can read, and the menu appears when there is at least one. The mock gains domains, DKIM keys and zone files. 61 new strings, translated in all nine catalogues; strings falling back to English stay at 16.
This commit is contained in:
@@ -52,6 +52,63 @@ import type { Catalog } from "@/lib/i18n";
|
||||
*/
|
||||
export const catalog: Catalog = {
|
||||
strings: {
|
||||
// ── Administration: domains ────────────────────────────────────
|
||||
"Domains": "Domaines",
|
||||
"By hand": "Manuel",
|
||||
"Signing": "Signe",
|
||||
"Published, not signing yet": "Publiée, ne signe pas encore",
|
||||
"Retiring": "En retrait",
|
||||
"Retired": "Retirée",
|
||||
"This domain no longer exists. Someone may have removed it.": "Ce domaine n’existe plus. Quelqu’un l’a peut-être retiré.",
|
||||
"That doesn't look like a domain name, such as example.com.": "Cela ne ressemble pas à un nom de domaine, comme example.com.",
|
||||
"Added {name}. Its DNS records are ready to copy.": "{name} ajouté. Ses enregistrements DNS sont prêts à être copiés.",
|
||||
"Saved {name}": "{name} enregistré",
|
||||
"Add domain": "Ajouter un domaine",
|
||||
"Added {date}": "Ajouté le {date}",
|
||||
"This domain is disabled on the server.": "Ce domaine est désactivé sur le serveur.",
|
||||
"Your role lets you view domains but not change them.": "Votre rôle vous permet de consulter les domaines, mais pas de les modifier.",
|
||||
"New domains sign their mail with DKIM keys the server creates and rotates. Its DNS records appear here once it's added.": "Les nouveaux domaines signent leurs messages avec des clés DKIM que le serveur crée et renouvelle. Leurs enregistrements DNS apparaissent ici une fois le domaine ajouté.",
|
||||
"Other names": "Autres noms",
|
||||
"Delivery": "Distribution",
|
||||
"Catch-all address": "Adresse fourre-tout",
|
||||
"Mail to an address nobody has on this domain is delivered here. Leave it empty to refuse that mail.": "Les messages envoyés à une adresse que personne n’a sur ce domaine sont remis ici. Laissez vide pour les refuser.",
|
||||
"Plus addressing": "Adresses avec +",
|
||||
"Set by a custom rule on the server.": "Défini par une règle personnalisée sur le serveur.",
|
||||
"Mail to name+anything@ is delivered to name@.": "Les messages à nom+nimportequoi@ sont remis à nom@.",
|
||||
"DNS records": "Enregistrements DNS",
|
||||
"Published automatically through {provider}.": "Publiés automatiquement via {provider}.",
|
||||
"Published automatically by the server.": "Publiés automatiquement par le serveur.",
|
||||
"Add these where this domain's DNS is hosted. Mail isn't delivered or trusted until they're in place.": "Ajoutez-les là où le DNS de ce domaine est hébergé. Les messages ne sont ni distribués ni jugés fiables tant qu’ils ne sont pas en place.",
|
||||
"Copy {type} record for {name}": "Copier l’enregistrement {type} pour {name}",
|
||||
"Copy value": "Copier la valeur",
|
||||
"Copied the zone file": "Fichier de zone copié",
|
||||
"Copy all as a zone file": "Tout copier en fichier de zone",
|
||||
"The server returned no records for this domain.": "Le serveur n’a renvoyé aucun enregistrement pour ce domaine.",
|
||||
"DKIM keys": "Clés DKIM",
|
||||
"The server creates and rotates these keys itself.": "Le serveur crée et renouvelle ces clés lui-même.",
|
||||
"These keys are managed by hand on the server.": "Ces clés sont gérées manuellement sur le serveur.",
|
||||
"No DKIM keys, so mail from this domain isn't signed and is more likely to be marked as spam.": "Aucune clé DKIM : les messages de ce domaine ne sont pas signés et risquent davantage d’être classés comme spam.",
|
||||
"Managed by the server": "Géré par le serveur",
|
||||
"Certificate": "Certificat",
|
||||
"Another name for this domain": "Autre nom pour ce domaine",
|
||||
"Mail to the same address at any of these names reaches the same account. Changes apply when you save.": "Les messages envoyés à la même adresse sous l’un de ces noms arrivent dans le même compte. Les modifications s’appliquent à l’enregistrement.",
|
||||
"Its DKIM keys have to be removed first, and your role can't remove them.": "Ses clés DKIM doivent d’abord être supprimées, et votre rôle ne le permet pas.",
|
||||
"The server stops accepting mail for this domain.": "Le serveur n’accepte plus de messages pour ce domaine.",
|
||||
"Remove domain…": "Retirer le domaine…",
|
||||
"Remove {name}?": "Retirer {name} ?",
|
||||
"Removed {name}": "{name} retiré",
|
||||
"The server kept the domain: it is still used by {things}.": "Le serveur a conservé le domaine : il est encore utilisé par {things}.",
|
||||
"Remove domain": "Retirer le domaine",
|
||||
"The server stops accepting mail for this domain. This can't be undone.": "Le serveur n’accepte plus de messages pour ce domaine. C’est irréversible.",
|
||||
"Where your addresses live, and the DNS records that let mail arrive and be trusted.": "Là où vivent vos adresses, et les enregistrements DNS qui permettent aux messages d’arriver et d’être fiables.",
|
||||
"Search domains": "Rechercher des domaines",
|
||||
"No domains match": "Aucun domaine correspondant",
|
||||
"No domains yet": "Aucun domaine pour l’instant",
|
||||
"DKIM": "DKIM",
|
||||
"Tenant": "Locataire",
|
||||
"Disabled": "Désactivé",
|
||||
"also {names}": "aussi {names}",
|
||||
"The server did not say whether the domain was created.": "Le serveur n’a pas indiqué si le domaine a été créé.",
|
||||
// ── Administration: accounts ───────────────────────────────────
|
||||
"Change your own password in {settings}.": "Modifiez votre propre mot de passe dans {settings}.",
|
||||
"Administration": "Administration",
|
||||
@@ -1422,6 +1479,13 @@ export const catalog: Catalog = {
|
||||
"no address": "aucune adresse",
|
||||
},
|
||||
plurals: {
|
||||
// ── Administration: domains ────────────────────────────────────
|
||||
"{n} accounts use this domain. Move or delete them first.": { one: "{n} compte utilise ce domaine. Déplacez-le ou supprimez-le d’abord.", other: "{n} comptes utilisent ce domaine. Déplacez-les ou supprimez-les d’abord." },
|
||||
"The server stops accepting mail for this domain, and its {n} DKIM keys are deleted. This can't be undone.": { one: "Le serveur n’accepte plus de messages pour ce domaine, et sa {n} clé DKIM est supprimée. C’est irréversible.", other: "Le serveur n’accepte plus de messages pour ce domaine, et ses {n} clés DKIM sont supprimées. C’est irréversible." },
|
||||
"{n} domains": { one: "{n} domaine", other: "{n} domaines" },
|
||||
"{n} mailing lists": { one: "{n} liste de diffusion", other: "{n} listes de diffusion" },
|
||||
"{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 ────────────────────────────────────────────────
|
||||
"{n} accounts": { one: "{n} compte", other: "{n} comptes" },
|
||||
// ── Third pass ─────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user