From 31edf338390d95fb7ae5e4b166051723d9840952 Mon Sep 17 00:00:00 2001 From: John Coffey Date: Thu, 3 Sep 2026 14:21:53 -0700 Subject: [PATCH] Translate the rule sentences into German #261 rebuilt the Sieve rule summaries and the recurrence descriptions as whole sentences with placeholders, so that a translator can move the parts rather than being handed " and " on its own. This is the German half of that. 32 strings and 9 plural forms. The ordinals are words -- there is no suffix to append here, which was the point -- and the day and item lists are joined by Intl.ListFormat rather than a translated separator. --- web/src/locales/de.ts | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/web/src/locales/de.ts b/web/src/locales/de.ts index becb172..c8fa7ca 100644 --- a/web/src/locales/de.ts +++ b/web/src/locales/de.ts @@ -1282,8 +1282,54 @@ export const catalog: Catalog = { "This message was sent automatically, so no read receipt is offered.": "Diese Nachricht wurde automatisch versendet, daher wird keine Lesebestätigung angeboten.", "This server will not hold a message longer than {span}.": "Dieser Server hält eine Nachricht nicht länger als {span} zurück.", "Upload failed": "Hochladen fehlgeschlagen", + // ── Third pass ────────────────────────────────────────────────────── + // Sentences that lib/ and store/ were building in English, and the two + // swipe labels that reach t() through a variable and so were invisible + // to a scan for t("literal"). See #259. + "Every {n} {frequency}": "Alle {n} {frequency}", + "Monthly": "Monatlich", + "Monthly on day {days}": "Monatlich am Tag {days}", + "Monthly on the {ordinal} {weekday}": "Monatlich am {ordinal} {weekday}", + "Monthly on {weekday}": "Monatlich am {weekday}", + "Weekly": "Wöchentlich", + "Weekly on {days}": "Wöchentlich am {days}", + "add {flag}": "{flag} hinzufügen", + "always": "immer", + "body contains \"{value}\"": "Text enthält \"{value}\"", + "body does not contain \"{value}\"": "Text enthält nicht \"{value}\"", + "delete it": "löschen", + "fifth": "fünften", + "first": "ersten", + "forward to {address}": "weiterleiten an {address}", + "fourth": "vierten", + "keep it": "behalten", + "last": "letzten", + "mark it read": "als gelesen markieren", + "move to {folder}": "verschieben nach {folder}", + "reject it": "abweisen", + "remove {flag}": "{flag} entfernen", + "second": "zweiten", + "size is over {n} KB": "Größe über {n} KB", + "size is under {n} KB": "Größe unter {n} KB", + "star it": "markieren", + "stop": "anhalten", + "third": "dritten", + "{header} address {op} \"{value}\"": "{header}-Adresse {op} \"{value}\"", + "{header} {op} \"{value}\"": "{header} {op} \"{value}\"", + "{rule}, until {date}": "{rule}, bis {date}", + "{tests} → {actions}": "{tests} → {actions}", }, plurals: { + // ── Third pass ───────────────────────────────────────────────────── + "Every {n} days": { one: "Jeden Tag", other: "Alle {n} Tage" }, + "Every {n} months": { one: "Jeden Monat", other: "Alle {n} Monate" }, + "Every {n} months on day {days}": { one: "Jeden Monat am Tag {days}", other: "Alle {n} Monate am Tag {days}" }, + "Every {n} months on the {ordinal} {weekday}": { one: "Jeden Monat am {ordinal} {weekday}", other: "Alle {n} Monate am {ordinal} {weekday}" }, + "Every {n} months on {weekday}": { one: "Jeden Monat am {weekday}", other: "Alle {n} Monate am {weekday}" }, + "Every {n} weeks": { one: "Jede Woche", other: "Alle {n} Wochen" }, + "Every {n} weeks on {days}": { one: "Jede Woche am {days}", other: "Alle {n} Wochen am {days}" }, + "Every {n} years": { one: "Jedes Jahr", other: "Alle {n} Jahre" }, + "{rule}, {n} times": { one: "{rule}, {n}-mal", other: "{rule}, {n}-mal" }, // ── Third pass ───────────────────────────────────────────────────── "Move {n} messages to Trash?": { one: "{n} Nachricht in den Papierkorb verschieben?", other: "{n} Nachrichten in den Papierkorb verschieben?" }, "{n} days": { one: "{n} Tag", other: "{n} Tage" },