AGPL source offer and name cleanup
Every build writes the exact source it was built from, uncommitted work and new files included, as source.tar.gz next to the app, named after that tree. Docker builds, which have no git, pack the build context and name it by a hash of its files. The sign-in page and Settings > About link to it instead of a repository that can drift. What users, operators and packagers see no longer names the upstream server: - interface text, in all nine catalogues, with a token-session line for Security; - server messages; - the settings, now MAIL_SERVER_URL, MAIL_SERVERS_FILE, ADMIN_URL and MAIL_SERVER_FOLLOW_ADVERTISED_URLS, and mail-servers.example.json; - the Tenants notice, which is gone; - the README, CONTRIBUTING and SECURITY. ihasmail's own FEATURES, KNOWN-ISSUES and ROADMAP stay with public ihasmail, and INBUXA.md is folded into the README.
This commit is contained in:
+11
-12
@@ -137,8 +137,8 @@ export const catalog: Catalog = {
|
||||
"The numbers your role can see, as the server reports them.": "您的角色可以查看的数字,按服务器报告显示。",
|
||||
"Nothing to show": "没有可显示的内容",
|
||||
"Could not be loaded": "无法加载",
|
||||
"Detailed metrics, the delivery queue, logs and server settings are in Stalwart's own administration.": "详细指标、投递队列、日志和服务器设置位于 Stalwart 自身的管理界面中。",
|
||||
"Open Stalwart admin": "打开 Stalwart 管理界面",
|
||||
"Detailed metrics, the delivery queue, logs and server settings are in INBUXA Admin.": "详细指标、投递队列、日志和服务器设置都在 INBUXA Admin 中。",
|
||||
"Open INBUXA Admin": "打开 INBUXA Admin",
|
||||
"Default group role": "默认群组角色",
|
||||
"A group needs an address.": "群组需要一个地址。",
|
||||
"New group": "新建群组",
|
||||
@@ -207,10 +207,10 @@ export const catalog: Catalog = {
|
||||
"New role": "新建角色",
|
||||
"This role carries permissions yours doesn't, so you can view it but not change it.": "此角色拥有您的角色所没有的权限,因此您可以查看但不能更改。",
|
||||
"Your role lets you view roles but not change them.": "您的角色可以查看角色,但不能更改。",
|
||||
"Stalwart gives this role by default to {kinds}. A change here reaches everyone who has it that way.": "Stalwart 默认将此角色授予 {kinds}。此处的更改会影响所有以这种方式获得它的人。",
|
||||
"The mail server gives this role by default to {kinds}. A change here reaches everyone who has it that way.": "邮件服务器默认将此角色授予{kinds}。在此处的更改会影响所有以此方式拥有该角色的人。",
|
||||
"Builds on": "基于",
|
||||
"Permissions": "权限",
|
||||
"Stalwart gives this role by default, so it can't be deleted. Change the defaults in Stalwart's own administration first.": "Stalwart 默认授予此角色,因此无法删除。请先在 Stalwart 自身的管理界面中更改默认设置。",
|
||||
"The mail server gives this role by default, so it can't be deleted. Change the defaults in INBUXA Admin first.": "邮件服务器默认授予此角色,因此无法删除。请先在 INBUXA Admin 中更改默认设置。",
|
||||
"This role carries permissions yours doesn't.": "此角色拥有您的角色所没有的权限。",
|
||||
"Create role": "创建角色",
|
||||
"builds on this one": "基于此角色",
|
||||
@@ -237,7 +237,7 @@ export const catalog: Catalog = {
|
||||
"Delete role": "删除角色",
|
||||
"It can't be undone.": "此操作无法撤销。",
|
||||
"Type {name} to confirm": "输入 {name} 以确认",
|
||||
"Stalwart's list of permissions could not be loaded, so permissions can't be changed here. ({reason})": "无法加载 Stalwart 的权限列表,因此无法在此更改权限。({reason})",
|
||||
"The mail server's list of permissions could not be loaded, so permissions can't be changed here. ({reason})": "无法加载邮件服务器的权限列表,因此无法在此更改权限。({reason})",
|
||||
"Named sets of permissions, given to accounts, groups and tenants.": "命名的权限集合,授予账户、群组和租户。",
|
||||
"Search roles": "搜索角色",
|
||||
"No roles match": "没有匹配的角色",
|
||||
@@ -260,11 +260,11 @@ export const catalog: Catalog = {
|
||||
"{used} used": "已用 {used}",
|
||||
"Your role lets you view tenants but not change them.": "您的角色可以查看租户,但不能更改。",
|
||||
"Logo": "徽标",
|
||||
"An https address or a data URL of an image. Stalwart shows it to the tenant's people where it shows a logo.": "https 地址或图片的 data URL。Stalwart 会在显示徽标的地方向租户成员展示它。",
|
||||
"An https address or a data URL of an image. The mail server shows it to the tenant's people where it shows a logo.": "图片的 https 地址或 data URL。邮件服务器会在显示徽标的位置向该租户的成员显示它。",
|
||||
"What it holds": "包含内容",
|
||||
"{n} of {limit}": "{n}/{limit}",
|
||||
"Limits": "限额",
|
||||
"Stalwart refuses to create more than a limit allows. An empty field is no limit.": "Stalwart 会拒绝超出限额的创建。留空表示不限。",
|
||||
"The mail server refuses to create more than a limit allows. An empty field is no limit.": "邮件服务器会拒绝创建超出限额的内容。留空表示不限。",
|
||||
"The most anyone in this tenant can be allowed: their own roles are cut down to what these grant. Only roles whose permissions you hold yourself are offered.": "此租户中任何人可被允许的上限:各自的角色会被缩减到这些角色授予的范围。只提供您自己拥有其权限的角色。",
|
||||
"Checking what is still in this tenant…": "正在检查此租户中还有什么…",
|
||||
"It still holds accounts, domains or other things. Move them out first.": "它仍包含账户、域名或其他内容。请先将其移出。",
|
||||
@@ -280,7 +280,6 @@ export const catalog: Catalog = {
|
||||
"Still holds {things}. Move them out first.": "仍包含 {things}。请先将其移出。",
|
||||
"Delete tenant": "删除租户",
|
||||
"Separate organizations on one server, each with its own people, domains and limits.": "同一服务器上相互独立的组织,各有自己的成员、域名和限额。",
|
||||
"Tenants are a Stalwart Enterprise feature.": "租户是 Stalwart Enterprise 的功能。",
|
||||
"Search tenants": "搜索租户",
|
||||
"No tenants match": "没有匹配的租户",
|
||||
"No tenants yet": "还没有租户",
|
||||
@@ -1095,16 +1094,15 @@ export const catalog: Catalog = {
|
||||
"Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.": "您的邮件服务器会把通知直接送到浏览器,因此不必打开 ihasmail 标签页也能收到,并会显示发件人和主题。但浏览器仍需保持运行——如果完全退出浏览器,通知会等到您再次打开时送达。",
|
||||
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "您的邮件服务器可以唤醒此浏览器,但不会包含发件人或主题。浏览器仍需保持运行。",
|
||||
"This is what a new-mail notification looks like.": "新邮件通知就是这个样子。",
|
||||
"You're signed in as {user}. Your password is never stored in the browser; the server keeps it encrypted per-session for talking to Stalwart.": "您当前以 {user} 登录。您的密码从不保存在浏览器中;服务器会按会话加密保存,用于与 Stalwart 通信。",
|
||||
"You're signed in as {user}. Your password is never stored in the browser; the server keeps it encrypted per-session for talking to the mail server.": "您已以 {user} 身份登录。您的密码从不保存在浏览器中;服务器会按会话加密保存它,用于与邮件服务器通信。",
|
||||
"App passwords are managed by your mail administrator.": "应用专用密码由您的邮件管理员管理。",
|
||||
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "更改密码会让您的其他网页邮箱会话退出登录。已有的应用专用密码仍可继续使用。",
|
||||
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "此账户已开启两步验证。ihasmail 目前还不能通过验证码登录,因此在其他设备上登录需要使用应用专用密码——您也可以在这里关闭两步验证。",
|
||||
"A separate password for a mail app or device, which you can revoke on its own. App passwords skip two-factor codes, so they keep working in apps that can't ask for one.": "为某个邮件应用或设备单独设置的密码,可以单独吊销。应用专用密码会跳过两步验证码,因此在无法输入验证码的应用中仍然可用。",
|
||||
"Copy it into {name} now — it isn't shown again.": "请立即把它复制到 {name}——它不会再次显示。",
|
||||
"No other users found in the directory, so nobody new can be added. Sharing already in place is listed below and can still be removed.": "目录中没有找到其他用户,因此无法添加新的共享对象。已有的共享列在下方,仍可移除。",
|
||||
"Stalwart does not publish its version number to mail clients, so ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart 不会向邮件客户端公布版本号,因此只有在服务器给出版本类型时,ihasmail 才会报告它。ihasmail 需要 0.16 或更高版本,更旧的版本一律无法登录。",
|
||||
"ihasmail's own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "ihasmail 自身的版本号是其构建所用提交的日期,后面跟着该提交的来源:{example} 表示由 2026 年 8 月 30 日的一个提交构建而成,而该提交来自第 129 号拉取请求。未经拉取请求的提交则改用简短 SHA 表示——{sha}。版本号刻意不包含任何关于 Stalwart 的信息;此版本对服务器的要求见上一行。",
|
||||
|
||||
"This webmail works with the INBUXA mail server, and sign-in refuses a server that doesn't offer what it needs.": "此网页邮箱配合 INBUXA 邮件服务器使用,登录时会拒绝不提供所需功能的服务器。",
|
||||
"ihasmail's own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about the mail server; what this build needs from the server is the line above.": "ihasmail 自身的版本号是其构建所用提交的日期,后面跟着该提交的来源:{example} 表示由 2026 年 8 月 30 日的一个提交构建而成,而该提交来自第 129 号拉取请求。未经拉取请求的提交则改用简短 SHA 表示——{sha}。版本号刻意不包含任何关于邮件服务器的信息;此版本对服务器的要求见上一行。",
|
||||
// ── Constant labels ────────────────────────────────────────────────
|
||||
"Add": "添加",
|
||||
"Create subfolders": "创建子文件夹",
|
||||
@@ -1222,6 +1220,7 @@ export const catalog: Catalog = {
|
||||
"Could not save filters: {error}": "无法保存过滤器:{error}",
|
||||
"Could not send the receipt: {error}": "无法发送已读回执:{error}",
|
||||
"Could not sign in.": "无法登录。",
|
||||
"You're signed in as {user}. This webmail never sees your password: it holds a sign-in token from your mail server, encrypted per session.": "您已以 {user} 身份登录。此网页邮箱从不接触您的密码:它保存的是来自邮件服务器的登录令牌,并按会话加密。",
|
||||
"About INBUXA webmail": "关于 INBUXA 网页邮箱",
|
||||
"Mail server": "邮件服务器",
|
||||
"You'll enter your password on your mail server's sign-in page.": "您将在邮件服务器的登录页面上输入密码。",
|
||||
|
||||
Reference in New Issue
Block a user