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:
@@ -315,7 +315,6 @@ export const catalog: Catalog = {
|
||||
"Busy": "Bezet",
|
||||
"Free/busy": "Vrij/bezet",
|
||||
"Show as": "Weergeven als",
|
||||
"Availability on {date}": "Beschikbaarheid op {date}",
|
||||
"Count all events as busy": "Alle afspraken als bezet tellen",
|
||||
"Only events I'm attending": "Alleen afspraken waaraan ik deelneem",
|
||||
"Don't include in availability": "Niet meetellen voor beschikbaarheid",
|
||||
@@ -354,7 +353,6 @@ export const catalog: Catalog = {
|
||||
"New address book": "Nieuw adresboek",
|
||||
"No address books yet.": "Nog geen adresboeken.",
|
||||
"Choose from address books": "Kiezen uit adresboeken",
|
||||
"Import vCard": "vCard importeren",
|
||||
"Export all contacts": "Alle contacten exporteren",
|
||||
"Export address book": "Dit adresboek exporteren",
|
||||
"Import contacts…": "Contacten importeren…",
|
||||
@@ -429,7 +427,6 @@ export const catalog: Catalog = {
|
||||
"Make ihasmail yours.": "Maak ihasmail van uzelf.",
|
||||
"Reading": "Lezen",
|
||||
"Reading pane": "Leesvenster",
|
||||
"Reading, sending and list behaviour. Settings are stored in this browser.": "Gedrag bij lezen, verzenden en in de lijst. De instellingen worden in deze browser bewaard.",
|
||||
"Right of the list": "Rechts van de lijst",
|
||||
"Below the list": "Onder de lijst",
|
||||
"Hidden (open full width)": "Verborgen (op volle breedte openen)",
|
||||
@@ -472,10 +469,6 @@ export const catalog: Catalog = {
|
||||
"Time zone": "Tijdzone",
|
||||
"Week starts on": "Week begint op",
|
||||
"Monday": "Maandag",
|
||||
"Tuesday": "Dinsdag",
|
||||
"Wednesday": "Woensdag",
|
||||
"Thursday": "Donderdag",
|
||||
"Friday": "Vrijdag",
|
||||
"Saturday": "Zaterdag",
|
||||
"Sunday": "Zondag",
|
||||
"12-hour clock (6:23 PM)": "12-uursnotatie (6:23 PM)",
|
||||
@@ -721,10 +714,8 @@ export const catalog: Catalog = {
|
||||
"Manage labels": "Labels beheren",
|
||||
"Create “{name}”": "“{name}” maken",
|
||||
"Type a name to create your first label.": "Typ een naam om uw eerste label te maken.",
|
||||
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Labels zijn IMAP-trefwoorden die in uw berichten worden opgeslagen en dus met andere clients synchroniseren. Namen en kleuren blijven in deze browser.",
|
||||
"New label": "Nieuw label",
|
||||
"Delete label": "Label verwijderen",
|
||||
"PDF": "PDF",
|
||||
"Large attachments may be rejected by some servers": "Grote bijlagen worden door sommige servers geweigerd",
|
||||
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Afbeeldingen worden opgeslagen in uw Bestanden (map “ihasmail”) en bij verzending ingesloten.",
|
||||
"Thanks for your message. I'm away until … and will reply when I'm back.": "Bedankt voor uw bericht. Ik ben afwezig tot … en reageer zodra ik terug ben.",
|
||||
@@ -858,7 +849,6 @@ export const catalog: Catalog = {
|
||||
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Hier verschijnen alleen talen waarin ihasmail is vertaald; de lijst groeit dus mee met de vertalingen en niet erop vooruit — een taal die wordt aangeboden zonder teksten erachter zou de pagina laten beweren dat ze in een taal is die ze niet is.",
|
||||
"tell us about it": "laat het ons weten",
|
||||
"This translation was generated by AI and has not been checked by a native speaker, so it is marked Beta until somebody who speaks it signs it off. Anything that reads wrongly is worth reporting — {report}.": "Deze vertaling is door AI gemaakt en niet gecontroleerd door iemand met Nederlands als moedertaal; ze is daarom als Beta gemarkeerd tot iemand haar goedkeurt. Alles wat verkeerd klinkt, is een melding waard — {report}.",
|
||||
"{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} is het kleurenpalet van {site}, en waarmee een nieuw account begint. Het is een donker thema en telt dus overal als donker waar dat uitmaakt; de accentkleur hieronder werkt er nog steeds bovenop.",
|
||||
"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.": "De eigen versie van ihasmail is de datum van de commit waaruit het is gebouwd, gevolgd door waar die commit vandaan kwam: {example} is gebouwd uit een commit van 30 augustus 2026 die via pull request 129 binnenkwam. Een commit die niet via zo'n verzoek kwam, draagt in plaats daarvan zijn korte SHA — {sha}. De versie zegt bewust niets over Stalwart; wat deze build van de server nodig heeft, staat op de regel hierboven.",
|
||||
|
||||
// ── Composer status, calendar title ────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user