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:
@@ -45,6 +45,63 @@ import type { Catalog } from "@/lib/i18n";
|
||||
*/
|
||||
export const catalog: Catalog = {
|
||||
strings: {
|
||||
// ── Administration: domains ────────────────────────────────────
|
||||
"Domains": "域名",
|
||||
"By hand": "手动",
|
||||
"Signing": "签名中",
|
||||
"Published, not signing yet": "已发布,尚未签名",
|
||||
"Retiring": "正在停用",
|
||||
"Retired": "已停用",
|
||||
"This domain no longer exists. Someone may have removed it.": "该域名已不存在,可能已被他人移除。",
|
||||
"That doesn't look like a domain name, such as example.com.": "这看起来不像 example.com 这样的域名。",
|
||||
"Added {name}. Its DNS records are ready to copy.": "已添加 {name},其 DNS 记录可以复制了。",
|
||||
"Saved {name}": "已保存 {name}",
|
||||
"Add domain": "添加域名",
|
||||
"Added {date}": "添加于 {date}",
|
||||
"This domain is disabled on the server.": "该域名已在服务器上停用。",
|
||||
"Your role lets you view domains but not change them.": "您的角色可以查看域名,但不能更改。",
|
||||
"New domains sign their mail with DKIM keys the server creates and rotates. Its DNS records appear here once it's added.": "新域名使用服务器创建并轮换的 DKIM 密钥为邮件签名。添加域名后,其 DNS 记录会显示在这里。",
|
||||
"Other names": "其他名称",
|
||||
"Delivery": "投递",
|
||||
"Catch-all address": "全收地址",
|
||||
"Mail to an address nobody has on this domain is delivered here. Leave it empty to refuse that mail.": "发往此域名下不存在地址的邮件会投递到这里。留空则拒收此类邮件。",
|
||||
"Plus addressing": "加号地址",
|
||||
"Set by a custom rule on the server.": "由服务器上的自定义规则设定。",
|
||||
"Mail to name+anything@ is delivered to name@.": "发往 名称+任意内容@ 的邮件会投递到 名称@。",
|
||||
"DNS records": "DNS 记录",
|
||||
"Published automatically through {provider}.": "通过 {provider} 自动发布。",
|
||||
"Published automatically by the server.": "由服务器自动发布。",
|
||||
"Add these where this domain's DNS is hosted. Mail isn't delivered or trusted until they're in place.": "请将这些记录添加到托管此域名 DNS 的地方。在此之前,邮件无法投递,也不会被信任。",
|
||||
"Copy {type} record for {name}": "复制 {name} 的 {type} 记录",
|
||||
"Copy value": "复制值",
|
||||
"Copied the zone file": "已复制区域文件",
|
||||
"Copy all as a zone file": "全部复制为区域文件",
|
||||
"The server returned no records for this domain.": "服务器没有返回此域名的记录。",
|
||||
"DKIM keys": "DKIM 密钥",
|
||||
"The server creates and rotates these keys itself.": "服务器会自行创建并轮换这些密钥。",
|
||||
"These keys are managed by hand on the server.": "这些密钥在服务器上手动管理。",
|
||||
"No DKIM keys, so mail from this domain isn't signed and is more likely to be marked as spam.": "没有 DKIM 密钥,因此此域名的邮件不会被签名,更容易被判为垃圾邮件。",
|
||||
"Managed by the server": "由服务器管理",
|
||||
"Certificate": "证书",
|
||||
"Another name for this domain": "此域名的其他名称",
|
||||
"Mail to the same address at any of these names reaches the same account. Changes apply when you save.": "发往这些名称下相同地址的邮件会到达同一个账户。更改在保存后生效。",
|
||||
"Its DKIM keys have to be removed first, and your role can't remove them.": "需要先移除其 DKIM 密钥,而您的角色无权移除。",
|
||||
"The server stops accepting mail for this domain.": "服务器将不再接收此域名的邮件。",
|
||||
"Remove domain…": "移除域名…",
|
||||
"Remove {name}?": "移除 {name}?",
|
||||
"Removed {name}": "已移除 {name}",
|
||||
"The server kept the domain: it is still used by {things}.": "服务器保留了该域名:它仍被 {things} 使用。",
|
||||
"Remove domain": "移除域名",
|
||||
"The server stops accepting mail for this domain. This can't be undone.": "服务器将不再接收此域名的邮件。此操作无法撤销。",
|
||||
"Where your addresses live, and the DNS records that let mail arrive and be trusted.": "您的地址所在之处,以及让邮件送达并获得信任的 DNS 记录。",
|
||||
"Search domains": "搜索域名",
|
||||
"No domains match": "没有匹配的域名",
|
||||
"No domains yet": "暂无域名",
|
||||
"DKIM": "DKIM",
|
||||
"Tenant": "租户",
|
||||
"Disabled": "已停用",
|
||||
"also {names}": "别名:{names}",
|
||||
"The server did not say whether the domain was created.": "服务器没有说明域名是否已创建。",
|
||||
// ── Administration: accounts ───────────────────────────────────
|
||||
"Change your own password in {settings}.": "请在{settings}中更改您自己的密码。",
|
||||
"Administration": "管理",
|
||||
@@ -1424,6 +1481,13 @@ export const catalog: Catalog = {
|
||||
"no address": "无地址",
|
||||
},
|
||||
plurals: {
|
||||
// ── Administration: domains ────────────────────────────────────
|
||||
"{n} accounts use this domain. Move or delete them first.": { other: "有 {n} 个账户正在使用此域名。请先移动或删除它们。" },
|
||||
"The server stops accepting mail for this domain, and its {n} DKIM keys are deleted. This can't be undone.": { other: "服务器将不再接收此域名的邮件,其 {n} 个 DKIM 密钥也会被删除。此操作无法撤销。" },
|
||||
"{n} domains": { other: "{n} 个域名" },
|
||||
"{n} mailing lists": { other: "{n} 个邮件列表" },
|
||||
"{n} DKIM keys": { other: "{n} 个 DKIM 密钥" },
|
||||
"{n} other items": { other: "其他 {n} 项" },
|
||||
// ── Administration ────────────────────────────────────────────────
|
||||
"{n} accounts": { other: "{n} 个账户" },
|
||||
// ── Third pass ─────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user