Skip to content

Fix/no ref/german translations - #1153

Open
jufickel-b wants to merge 5 commits into
dongdongbh:mainfrom
jufickel-b:fix/no-ref/german_translations
Open

Fix/no ref/german translations#1153
jufickel-b wants to merge 5 commits into
dongdongbh:mainfrom
jufickel-b:fix/no-ref/german_translations

Conversation

@jufickel-b

Copy link
Copy Markdown

Summary

Completes the German (de) translation, bringing it to full key parity with English.

  • Translated all remaining untranslated strings in packages/core/src/i18n/locales/de.ts (previously ~1468 of the English key count, now 2474 — full coverage).
  • Used the formal capitalized "Du" address throughout, consistent with the existing translation style.
  • Raised de's translatedKeyFloor in i18n-locales.ts from 1468 to 2474 and updated getLocaleCoverageTier expectations in index.test.ts so de is now reported as full coverage instead of partial.
  • Added de (and its allowed loanword/internationalism list, e.g. "Status", "Details", "Version", "System", "E-Ink", "Sepia") to allowedEnglishMirrorKeysByLocale in locale-quality.ts, documenting which keys are intentionally left identical to English.
  • Adjusted starter seed strings (starter-seed-strings.ts) to consistently use "Eingang" instead of "Posteingang" for the German "Inbox" term.

Related issue

No related issue — this gap was found and fixed directly while reviewing German (de) locale coverage; no GitHub issue was filed for it.

Testing

  • npx vitest run src/i18n in packages/core — 6 test files, 178 tests, all passing (includes locale-parity.test.ts and index.test.ts coverage-tier assertions).
  • Manually verified in the running desktop app UI.

Screenshots / recordings

N/A (translation-only change, no UI/layout changes).

Checklist

  • I have signed the Contributor License Agreement (CLA)
  • I have tested this change locally
  • I linked the relevant issue (or explained why there isn't one)
  • I added or updated tests/docs if needed

@CLAassistant

CLAassistant commented Sep 4, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@dongdongbh dongdongbh left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs changes

The translation is close, and the floor bump, the mirror allow-list and the tier test change are right. Two strings are functionally wrong and a dozen carry grammar or consistency slips. Please fix these in de.ts before it lands.

Functional:

  • agenda.maxFocusItems: {{count}} was replaced by the word "drei". The focus limit is a user setting, so the label is wrong for every value except 3. Keep the placeholder: Max. {{count}} Fokus-Element(e) or similar.
  • dailyReview.focusDesc: the English says "Optional: mark tasks to keep visible in Focus today". The German drops "optional" and hardcodes a limit of three. Something like Optional: Aufgaben markieren, die heute im Fokus sichtbar bleiben sollen.

Wording:

  • projects.reviewAt: Datum überprüfen reads as a command. It is the "Review Date" field label, e.g. Überprüfungsdatum.
  • quickAdd.pastedImageSaving: Hände Bild an… should be Hänge Bild an….
  • settings.speechModeTranscript: Nur transkripieren should be Nur transkribieren, matching settings.speechModeHint.
  • review.allDoneDesc: stray "für" in Du bist für bereit für die kommende Woche.
  • review.projectsHint: abgeschlossen Projekte should be abgeschlossene Projekte.
  • next.warningHint: eine besser Übersicht should be eine bessere Übersicht.
  • calendar.overlapWarning: mit einem bestehendem Termin should be mit einem bestehenden Termin.
  • inbox.waitingHint: um sich zu erinnern, auf was Du wartest should be um Dich zu erinnern, worauf Du wartest, as process.waitingForDesc already has it.
  • inbox.waitingPlaceholder and process.waitingPlaceholder: Jonathan's should be Jonathans.
  • review.inboxStepDesc: the English says "Clarify and organize", and Clarify is the GTD step name. durchsehen means look through; Deine Eingangs-Einträge klären und organisieren. keeps the term and the linking s.

Consistency:

  • nav.board says Spaltenansicht while board.title and tab.board say Tafelansicht / Tafel. Pick one.
  • next.noTasks calls the list Zu erledigen while status.todo, list.todo and board.todo call it Zu tun.
  • Button labels such as settings.checkForUpdates, settings.checkStoreUpdates, settings.attachmentsCleanupRun and settings.dropboxDisconnect became commands to the user (Suche nach…, Überprüfe…, Führe… durch, Trenne…). German UI buttons use the infinitive: Nach Aktualisierungen suchen, Microsoft Store prüfen, Bereinigung ausführen, Dropbox trennen.
  • Capitalization of the informal address: your new lines use "Du", while about 57 pre-existing lines you did not touch (mindSweep.*, starter.*, onboarding.*, calendar.openFromCalendarApp) use lowercase "du", so the file now mixes both. Since you are in there anyway, please unify to one form; capitalized "Du" is fine.

One decision on our side: the rename from "Posteingang" to "Eingang" is fine. Things, Todoist and OmniFocus use it in German. I will update the German docs after the merge, so leave them alone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants