From 312b411654f64d7ffa2b923bbb1bcf56883441df Mon Sep 17 00:00:00 2001 From: mika kuns Date: Wed, 3 Jun 2026 13:14:23 +0200 Subject: [PATCH] i18n(de): add complete German translation Full de.json mirroring en.json key-for-key (app + installer + VM strings); enables Deutsch in the language switcher with live switching. Co-Authored-By: Claude Opus 4.7 --- src/ClaudeDo.Localization/locales/de.json | 388 ++++++++++++++++++++++ 1 file changed, 388 insertions(+) create mode 100644 src/ClaudeDo.Localization/locales/de.json diff --git a/src/ClaudeDo.Localization/locales/de.json b/src/ClaudeDo.Localization/locales/de.json new file mode 100644 index 0000000..b31f84b --- /dev/null +++ b/src/ClaudeDo.Localization/locales/de.json @@ -0,0 +1,388 @@ +{ + "metadata": { "code": "de", "name": "Deutsch" }, + "settings": { + "title": "EINSTELLUNGEN", + "save": "Speichern", + "cancel": "Abbrechen", + "language": "Sprache", + "tabGeneral": "Allgemein", + "tabWorktrees": "Worktrees", + "tabFiles": "Dateien", + "tabPrime": "Prime Claude", + "general": { + "defaultInstructions": "Standard-Anweisungen", + "defaultInstructionsPlaceholder": "Basis-Anweisungen, die auf jede Aufgabe angewendet werden", + "model": "Modell", + "maxTurns": "Max. Durchläufe", + "permission": "Berechtigung", + "maxParallelExecutions": "Max. parallele Ausführungen", + "maxParallelExecutionsHint": "Wie viele Aufgaben aus der Warteschlange der Worker gleichzeitig ausführt.", + "reportExcludedPaths": "Bericht: ausgeschlossene Pfade (einer pro Zeile)", + "standupWeekday": "Standup-Wochentag", + "weekdaySunday": "Sonntag", + "weekdayMonday": "Montag", + "weekdayTuesday": "Dienstag", + "weekdayWednesday": "Mittwoch", + "weekdayThursday": "Donnerstag", + "weekdayFriday": "Freitag", + "weekdaySaturday": "Samstag" + }, + "worktrees": { + "strategy": "Strategie", + "centralWorktreeRoot": "Zentrales Worktree-Verzeichnis", + "autoCleanup": "Abgeschlossene Worktrees automatisch aufräumen nach", + "days": "Tagen", + "cleanupFinished": "Abgeschlossene Worktrees aufräumen", + "forceRemoveAll": "Alle Worktrees zwangsweise entfernen", + "confirmRemoveAll": "ALLE Worktrees entfernen? Nicht committete Arbeit geht verloren.", + "removeAll": "Alle entfernen" + }, + "files": { + "agentsSection": "AGENTEN", + "agentsHint": "Mitgelieferte Standard-Agenten wiederherstellen. Vorhandene Dateien werden nicht überschrieben.", + "restoreDefaultAgents": "Standard-Agenten wiederherstellen", + "promptsSection": "PROMPTS", + "systemPrompt": "System", + "planningPrompt": "Planung", + "agentPrompt": "Agent", + "openInEditor": "Im Editor öffnen" + }, + "prime": { + "description": "Bereite dein Claude-Nutzungsfenster vor, indem an den von dir gewählten Tagen zu einer bestimmten Zeit ein einzelner nicht-interaktiver Ping ausgelöst wird. Läuft nur, solange ClaudeDo geöffnet ist. Wenn die App innerhalb von 30 Minuten vor der Zielzeit startet, wird der Ping sofort ausgelöst.", + "addSchedule": "+ Zeitplan hinzufügen", + "dayMo": "Mo", + "dayTu": "Di", + "dayWe": "Mi", + "dayTh": "Do", + "dayFr": "Fr", + "daySa": "Sa", + "daySu": "So" + } + }, + "tasks": { + "sortTip": "Sortieren", + "showCompletedTip": "Abgeschlossene anzeigen", + "listSettingsTip": "Listeneinstellungen", + "addPlaceholder": "Aufgabe hinzufügen…", + "enterKey": "ENTER", + "notesPinnedRow": "Notizen (Tagesnotizen)", + "overdue": "ÜBERFÄLLIG", + "tasks": "AUFGABEN", + "clearCompletedTip": "Alle abgeschlossenen löschen", + "ctxSendToQueue": "In Warteschlange einreihen", + "ctxRemoveFromQueue": "Aus Warteschlange entfernen", + "ctxCancelExecution": "Ausführung abbrechen", + "ctxMarkAs": "Markieren als", + "ctxMarkDone": "Erledigt", + "ctxMarkCancelled": "Abgebrochen", + "ctxRunInteractively": "Interaktiv ausführen", + "ctxOpenPlanningSession": "Planungssitzung öffnen", + "ctxResumePlanningSession": "Planungssitzung fortsetzen", + "ctxDiscardPlanningSession": "Planungssitzung verwerfen", + "ctxQueueSubtasks": "Teilaufgaben nacheinander einreihen", + "ctxScheduleFor": "Planen für...", + "ctxClearSchedule": "Zeitplan entfernen", + "badgeDraft": "ENTWURF", + "badgePlanned": "GEPLANT", + "approve": "Genehmigen", + "approveTip": "Genehmigen — als Erledigt markieren", + "reject": "Ablehnen", + "rejectTip": "Mit Feedback ablehnen und erneut ausführen", + "park": "Parken", + "parkTip": "Zur manuellen Bearbeitung auf Leerlauf zurücksetzen", + "cancel": "Abbrechen", + "cancelTip": "Diese Aufgabe abbrechen", + "removeFromQueueTip": "Aus Warteschlange entfernen", + "scheduleTitle": "Aufgabe planen", + "scheduleWhen": "WANN", + "scheduleConfirm": "Planen", + "rejectRerunTitle": "Ablehnen & erneut ausführen", + "feedbackLabel": "FEEDBACK FÜR DEN AGENTEN", + "feedbackPlaceholder": "Was soll der Agent korrigieren?", + "rerun": "Erneut ausführen" + }, + "lists": { + "heading": "Listen", + "searchPlaceholder": "Aufgaben suchen…", + "searchKbd": "Strg K", + "settingsTip": "Einstellungen", + "smartListsLabel": "INTELLIGENTE LISTEN", + "myListsLabel": "MEINE LISTEN", + "contextSettings": "Einstellungen...", + "contextWorktrees": "Worktrees…", + "contextOpenExplorer": "Im Explorer öffnen", + "contextOpenTerminal": "Im Terminal öffnen", + "newList": "Neue Liste", + "addReposTip": "Repos als Listen hinzufügen" + }, + "details": { + "deleteTaskTip": "Aufgabe löschen", + "closeTip": "Schließen", + "copyTaskIdTip": "Aufgaben-ID kopieren", + "starTip": "Favorit", + "agentSettingsTip": "Agent-Einstellungen", + "agentSettingsHeading": "Agent-Einstellungen (Überschreibungen)", + "modelLabel": "Modell", + "systemPromptLabel": "System-Prompt (angehängt)", + "agentFileLabel": "Agent-Datei", + "mergeLabel": "MERGE", + "mergeTargetLabel": "Merge-Ziel", + "reviewCombinedDiff": "Kombiniertes Diff prüfen", + "mergeAllSubtasks": "Alle Teilaufgaben mergen", + "stepsLabel": "SCHRITTE", + "addStepPlaceholder": "Schritt hinzufügen...", + "detailsLabel": "DETAILS", + "copyDescriptionTip": "Beschreibung in die Zwischenablage kopieren", + "toggleEditPreviewTip": "Bearbeiten/Vorschau umschalten", + "previewBtn": "Vorschau", + "editBtn": "Bearbeiten", + "descriptionPlaceholder": "Aufgabendetails hinzufügen (Markdown unterstützt)..." + }, + "agent": { + "stopTip": "Agent stoppen", + "sendToQueue": "In Warteschlange einreihen", + "sendToQueueTip": "Diese Aufgabe einreihen, damit der Worker sie übernimmt", + "removeFromQueue": "Aus Warteschlange entfernen", + "removeFromQueueTip": "Diese Aufgabe wieder aus der Warteschlange nehmen", + "worktreeLabel": "WORKTREE", + "copyPathTip": "Pfad kopieren", + "diffLabel": "DIFF", + "openDiff": "Diff öffnen", + "worktreeBtn": "Worktree", + "openWorktreeTip": "Worktree im Datei-Explorer öffnen", + "continue": "Fortsetzen", + "continueTip": "Die letzte Sitzung fortsetzen und weitermachen", + "resetAndRetry": "Zurücksetzen & erneut versuchen", + "resetAndRetryTip": "Den Worktree verwerfen und die Aufgabe erneut einreihen, um von vorn zu beginnen" + }, + "notes": { + "today": "Heute", + "add": "Hinzufügen", + "newNotePlaceholder": "Neue Notiz…", + "save": "Speichern", + "delete": "Löschen" + }, + "session": { + "chipLive": "LIVE", + "chipDone": "FERTIG", + "chipFailed": "FEHLGESCHLAGEN" + }, + "modals": { + "about": { + "title": "ÜBER", + "version": "Version", + "data": "Daten", + "logs": "Logs", + "config": "Konfiguration", + "open": "Öffnen" + }, + "workerConnection": { + "title": "WORKER NICHT ERREICHBAR", + "body": "ClaudeDo kann den Hintergrund-Worker nicht erreichen. Normalerweise wird er bei der Anmeldung automatisch gestartet. Du kannst ihn jetzt starten oder neu installieren, falls das Problem bestehen bleibt.", + "dismiss": "Ausblenden", + "rerunInstaller": "Installer erneut ausführen", + "startWorker": "Worker starten" + }, + "listSettings": { + "title": "LISTENEINSTELLUNGEN", + "deleteList": "Liste löschen", + "sectionGeneral": "ALLGEMEIN", + "name": "Name", + "workingDirectory": "Arbeitsverzeichnis", + "workingDirectoryPlaceholder": "(keines)", + "browse": "Durchsuchen...", + "defaultCommitType": "Standard-Commit-Typ", + "sectionAgent": "AGENT", + "resetAgentSettings": "Agent-Einstellungen zurücksetzen", + "model": "Modell", + "systemPrompt": "System-Prompt (angehängt)", + "agentFile": "Agent-Datei" + }, + "merge": { + "title": "WORKTREE MERGEN", + "windowTitle": "Worktree mergen", + "cancel": "Abbrechen", + "merge": "Mergen", + "targetBranch": "Ziel-Branch", + "removeWorktree": "Worktree nach dem Mergen entfernen", + "commitMessage": "Commit-Nachricht", + "conflictedFiles": "Konfliktdateien:" + }, + "diff": { + "title": "DIFF", + "windowTitle": "Diff", + "merge": "Mergen…" + }, + "worktree": { + "title": "Worktree" + }, + "worktreesOverview": { + "refresh": "Aktualisieren", + "cleanupFinished": "Abgeschlossene aufräumen", + "columnTask": "AUFGABE", + "columnState": "STATUS", + "columnDiff": "DIFF", + "columnAge": "ALTER", + "phantom": "Phantom", + "phantomTooltip": "Verzeichnis fehlt auf der Festplatte", + "ctxShowDiff": "Diff anzeigen", + "ctxOpenInExplorer": "Im Explorer öffnen", + "ctxJumpToTask": "Zur Aufgabe springen", + "ctxMerge": "Mergen…", + "ctxDiscard": "Verwerfen", + "ctxKeep": "Behalten", + "ctxCopyBranch": "Branch kopieren", + "ctxCopyPath": "Pfad kopieren", + "ctxForceRemove": "Zwangsweise entfernen" + }, + "repoImport": { + "title": "REPOS ALS LISTEN HINZUFÜGEN", + "windowTitle": "Repos als Listen hinzufügen", + "cancel": "Abbrechen", + "searchPlaceholder": "Repos suchen…", + "addFolder": "Ordner hinzufügen…", + "forgetFolders": "Ordner vergessen", + "alreadyAdded": "(bereits hinzugefügt)" + }, + "unfinishedPlanning": { + "title": "UNVOLLENDETE PLANUNGSSITZUNG", + "windowTitle": "Unvollendete Planungssitzung", + "discard": "Verwerfen", + "finalize": "Abschließen", + "resume": "Fortsetzen", + "draftTasksSuffix": " Entwurfsaufgabe(n) warten auf Abschluss." + }, + "weeklyReport": { + "title": "WOCHENBERICHT", + "windowTitle": "Wochenbericht", + "from": "Von", + "to": "Bis", + "generate": "Erstellen", + "regenerate": "Neu erstellen", + "emptyStateHint": "Noch kein Bericht für diesen Zeitraum. Klicke auf „Erstellen“." + } + }, + "installer": { + "nav": { + "back": "Zurück", + "next": "Weiter →", + "install": "Installieren", + "browse": "Durchsuchen...", + "cancel": "Abbrechen" + }, + "welcome": { + "title": "Willkommen", + "heading": "ClaudeDo installieren", + "subheading": "Wähle aus, wohin ClaudeDo installiert werden soll, und klicke dann auf Weiter.", + "updateSubheading": "Deine Aufgaben, Konfiguration und Datenbank bleiben erhalten. Klicke auf Weiter, um fortzufahren.", + "installDirectory": "Installationsverzeichnis", + "registerMcp": "MCP-Server bei Claude registrieren", + "registerMcpHint": "Führt 'claude mcp add' aus, damit Claude deine ClaudeDo-Aufgaben sehen und verwalten kann. Du kannst dies später ändern." + }, + "paths": { + "title": "Datenpfade", + "subtitle": "Lege fest, wo ClaudeDo seine Daten speichert.", + "databasePath": "Datenbankpfad", + "logDirectory": "Log-Verzeichnis", + "sandboxRoot": "Sandbox-Verzeichnis", + "worktreeStrategy": "Worktree-Strategie", + "centralWorktreeRoot": "Zentrales Worktree-Verzeichnis" + }, + "service": { + "title": "Worker", + "subtitle": "Konfiguriere den ClaudeDo-Hintergrund-Worker.", + "signalRPort": "SignalR-Port", + "queueBackstopInterval": "Warteschlangen-Backstop-Intervall (ms)", + "claudeCliPath": "Claude-CLI-Pfad", + "autostart": "Worker bei der Anmeldung automatisch starten", + "autostartHint": "Der Worker läuft als du (der angemeldete Benutzer) über eine benutzerbezogene Anmelde-Aufgabe, sodass er deine Claude-CLI-Authentifizierung nutzen kann.", + "restartDelay": "Neustart-Verzögerung (ms)" + }, + "uiSettings": { + "title": "UI-Einstellungen", + "subtitle": "Konfiguriere die Verbindungseinstellungen der ClaudeDo-Desktop-Oberfläche.", + "syncWithService": "Mit Worker-Einstellungen synchronisieren", + "signalRUrl": "SignalR-URL", + "syncHint": "Bei Synchronisierung werden diese Werte aus den Seiten „Worker“ und „Datenpfade“ abgeleitet." + }, + "install": { + "title": "Installation", + "subtitle": "Klicke auf Installieren, um ClaudeDo zu erstellen und bereitzustellen.", + "launch": "ClaudeDo starten" + }, + "settings": { + "removeUserData": "Benutzerdaten entfernen (Aufgaben, Logs, Konfigurationen in ~/.todo-app)", + "uninstall": "Deinstallieren", + "repair": "Reparieren", + "save": "Speichern", + "close": "Schließen" + }, + "selfUpdate": { + "heading": "Ein neuerer Installer ist verfügbar", + "update": "Aktualisieren", + "continueAnyway": "Trotzdem fortfahren" + } + }, + "planning": { + "conflict": { + "windowTitle": "Merge-Konflikt", + "modalTitle": "MERGE-KONFLIKT", + "openInVsCode": "Alle in VS Code öffnen", + "resolved": "Ich habe gelöst — fortfahren", + "abort": "Diesen Merge abbrechen" + }, + "diff": { + "windowTitle": "Planung — Kombiniertes Diff", + "modalTitle": "PLANUNG — KOMBINIERTES DIFF", + "previewCombined": "Kombinierte Vorschau", + "loading": "Wird geladen…" + } + }, + "controls": { + "datePicker": { + "today": "Heute", + "tomorrow": "Morgen", + "nextMon": "Nächster Mo", + "clear": "Löschen", + "time": "Zeit", + "done": "Fertig" + } + }, + "shell": { + "menu": { + "help": "Hilfe", + "checkForUpdates": "Nach Updates suchen", + "restartWorker": "Worker neu starten", + "worktrees": "Worktrees…", + "weeklyReport": "Wochenbericht…", + "about": "Über…", + "addRepos": "Repos als Listen hinzufügen…" + }, + "update": { + "available": "Update verfügbar: v", + "updateNow": "Jetzt aktualisieren", + "dismiss": "Ausblenden" + } + }, + "vm": { + "connection": { "online": "Online", "connecting": "Verbinden…", "offline": "Offline" }, + "shell": { "restartingWorker": "Worker wird neu gestartet…" }, + "agentStatus": { "idle": "Leerlauf", "queued": "In Warteschlange", "running": "Läuft", "done": "Fertig", "failed": "Fehlgeschlagen", "cancelled": "Abgebrochen" }, + "taskStatus": { "idle": "Leerlauf", "queued": "In Warteschlange", "running": "Läuft", "waitingForReview": "Wartet auf Prüfung", "done": "Fertig", "failed": "Fehlgeschlagen", "cancelled": "Abgebrochen" }, + "planningBadge": { "active": "PLANUNG", "finalized": "GEPLANT" }, + "taskRow": { "createdPrefix": "Erstellt {0}", "stepsText": "{0}/{1} Schritte" }, + "tasksIsland": { "completedHeader": "ABGESCHLOSSEN", "completedHeaderCount": "ABGESCHLOSSEN · {0}" }, + "diff": { "loadFailed": "Diff konnte nicht geladen werden: {0}", "noChanges": "Keine Änderungen anzuzeigen." }, + "planningDiff": { "hubError": "Kombinierte Vorschau konnte nicht erstellt werden (Hub-Fehler).", "conflict": "Kombinierte Vorschau nicht möglich: Teilaufgabe {0} steht im Konflikt mit einer früheren Teilaufgabe ({1} Dateien)." }, + "merge": { "commitMessage": "Merge-Aufgabe: {0}", "workerOfflineBranches": "Worker offline — Branches können nicht aufgelistet werden.", "loadBranchesFailed": "Branches konnten nicht geladen werden: {0}", "merged": "Zusammengeführt.", "conflict": "Merge-Konflikt — Ziel-Branch wiederhergestellt. Manuell oder über Fortsetzen lösen, dann erneut versuchen.", "blocked": "Blockiert: {0}", "unknownStatus": "Unbekannter Status: {0}", "mergeFailed": "Merge fehlgeschlagen: {0}" }, + "conflictResolution": { "vsCodeError": "VS Code konnte nicht gestartet werden: {0}. Die Pfade sind oben aufgeführt — kopiere sie manuell.", "subtaskPrefix": "Konflikte in Teilaufgabe: {0}", "targetPrefix": "Zusammenführen in: {0}" }, + "settingsModal": { "workerOffline": "Worker offline — Einstellungen schreibgeschützt.", "saveFailed": "Speichern fehlgeschlagen: {0}" }, + "weeklyReport": { "invalidRange": "Ungültiger Datumsbereich.", "generating": "Bericht wird erstellt…", "error": "Fehler: {0}" }, + "filesTab": { "workerOffline": "Worker offline.", "noneBundled": "Keine Standard-Agenten mitgeliefert.", "allPresent": "Alle Standard-Agenten bereits vorhanden.", "restored": "{0} Standard-Agent(en) wiederhergestellt.", "restoreFailed": "Wiederherstellung fehlgeschlagen: {0}", "openFailed": "Öffnen fehlgeschlagen: {0}" }, + "worktreesTab": { "workerOffline": "Worker offline.", "removed": "{0} Worktree(s) entfernt.", "blocked": "Zwangsentfernung nicht möglich: {0} Aufgabe(n) laufen noch. Brich sie zuerst ab.", "removedFrom": "{0} Worktree(s) von {1} Aufgabe(n) entfernt." }, + "worktreesOverview": { "titleAll": "Worktrees", "titleList": "Worktrees — {0}", "listFallback": "Liste", "cleanupFailed": "Aufräumen fehlgeschlagen.", "removed": "{0} Worktree(s) entfernt.", "discardFailed": "Worktree konnte nicht verworfen werden.", "keepFailed": "Worktree konnte nicht behalten werden.", "cannotForceRunning": "Eine laufende Aufgabe kann nicht zwangsweise entfernt werden.", "forceRemoveFailed": "Zwangsentfernung fehlgeschlagen." }, + "listSettings": { "untitled": "Unbenannt" }, + "details": { "effectiveIfInherited": "Effektiv bei Vererbung: {0}" }, + "lists": { "localSuffix": "{0} / lokal", "smartMyDay": "Mein Tag", "smartImportant": "Wichtig", "smartPlanned": "Geplant", "virtualQueue": "Warteschlange", "virtualRunning": "Läuft", "virtualReview": "Prüfung", "newList": "Neue Liste" } + } +}