Report the stale keys that are stale, and remove them
The check reported 41 stale keys per catalogue. Ten of them were.
The other 31 were strings held in constants and translated where they render --
t(b.description), t(group), t(c.label) -- so they reach t() as a variable and
there is no literal at the call site to find. The script already chased two of
those shapes, `label:` and objects named *_LABELS, with a comment about crying
wolf 33 times. The shapes kept coming: `description:` and `group:` on the
keyboard bindings, the calendar's view names, the read-receipt refusals, the
palette names.
Chasing them one at a time is the wrong shape of fix. Stale detection now asks
only "is this key still written down anywhere in the source" -- any string
literal counts. That under-reports, and that is the right way round: a missed
stale key costs a line of dead translation, a false one costs the credibility
of the check and every real finding after it. Which is what happened here --
these sat unread long enough to need a commit of their own.
Coverage keeps the strict set. The two questions need different nets, and
widening the one that measures what a catalogue *owes* would count every CSS
class and JMAP method name as an untranslated string -- it read 29% while I had
them sharing a set. `wanted` is the obligation, `seen` is the evidence.
What was actually dead, removed from all nine: "Availability on {date}",
"Import vCard", "PDF", two settings hints replaced by rewordings that are still
live, the Catppuccin palette description, and Tuesday through Friday -- left
behind when the week-start dropdown narrowed to the three days a week actually
starts on, and appearing since only in comments.
Coverage is unchanged at 1269/1285: none of the ten was ever owed.
This commit is contained in:
@@ -317,7 +317,6 @@ export const catalog: Catalog = {
|
||||
"Busy": "忙碌",
|
||||
"Free/busy": "忙闲状态",
|
||||
"Show as": "显示为",
|
||||
"Availability on {date}": "{date} 的忙闲状态",
|
||||
"Count all events as busy": "所有日程都计为忙碌",
|
||||
"Only events I'm attending": "仅我参加的日程",
|
||||
"Don't include in availability": "不计入忙闲状态",
|
||||
@@ -356,7 +355,6 @@ export const catalog: Catalog = {
|
||||
"New address book": "新建通讯录",
|
||||
"No address books yet.": "还没有通讯录。",
|
||||
"Choose from address books": "从通讯录中选择",
|
||||
"Import vCard": "导入 vCard",
|
||||
"Export all contacts": "导出所有联系人",
|
||||
"Export address book": "导出此通讯录",
|
||||
"Import contacts…": "导入联系人…",
|
||||
@@ -431,7 +429,6 @@ export const catalog: Catalog = {
|
||||
"Make ihasmail yours.": "把 ihasmail 调成您喜欢的样子。",
|
||||
"Reading": "阅读",
|
||||
"Reading pane": "阅读窗格",
|
||||
"Reading, sending and list behaviour. Settings are stored in this browser.": "阅读、发送和列表行为。设置保存在此浏览器中。",
|
||||
"Right of the list": "列表右侧",
|
||||
"Below the list": "列表下方",
|
||||
"Hidden (open full width)": "隐藏(全宽打开)",
|
||||
@@ -474,10 +471,6 @@ export const catalog: Catalog = {
|
||||
"Time zone": "时区",
|
||||
"Week starts on": "每周开始于",
|
||||
"Monday": "星期一",
|
||||
"Tuesday": "星期二",
|
||||
"Wednesday": "星期三",
|
||||
"Thursday": "星期四",
|
||||
"Friday": "星期五",
|
||||
"Saturday": "星期六",
|
||||
"Sunday": "星期日",
|
||||
"12-hour clock (6:23 PM)": "12 小时制 (6:23 PM)",
|
||||
@@ -728,12 +721,10 @@ export const catalog: Catalog = {
|
||||
"Manage labels": "管理标签",
|
||||
"Create “{name}”": "创建「{name}」",
|
||||
"Type a name to create your first label.": "输入名称以创建您的第一个标签。",
|
||||
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "标签是保存在邮件上的 IMAP 关键词,因此会同步到其他客户端。名称和颜色则保存在此浏览器中。",
|
||||
"New label": "新建标签",
|
||||
"Delete label": "删除标签",
|
||||
|
||||
// ── Attachments, dates, search prose ───────────────────────────────
|
||||
"PDF": "PDF",
|
||||
"Large attachments may be rejected by some servers": "部分服务器可能拒收过大的附件",
|
||||
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "图片保存在您的「文件」中(文件夹「ihasmail」),并在发送时嵌入邮件。",
|
||||
"After": "晚于",
|
||||
@@ -808,7 +799,6 @@ export const catalog: Catalog = {
|
||||
"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 或更高版本,更旧的版本一律无法登录。",
|
||||
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} 是 {site} 的配色,也是新账户的初始主题。它属于深色主题,因此在需要区分明暗的地方都算作深色,下方的强调色仍会叠加在它之上。",
|
||||
"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 的信息;此版本对服务器的要求见上一行。",
|
||||
|
||||
// ── Constant labels ────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user