import type { Translations } from "./types"; export const de: Translations = { common: { save: "Speichern", saving: "Speichern...", cancel: "Abbrechen", close: "Schließen", confirm: "Bestätigen", delete: "Löschen", refresh: "Aktualisieren", retry: "Erneut versuchen", search: "Suchen...", loading: "Lädt...", create: "Erstellen", creating: "Erstellen...", set: "Festlegen", replace: "Ersetzen", clear: "Leeren", live: "Live", off: "Aus", enabled: "aktiviert", disabled: "deaktiviert", active: "aktiv", inactive: "inaktiv", unknown: "unbekannt", untitled: "Ohne Titel", none: "Keine", form: "Formular", noResults: "Keine Ergebnisse", of: "von", page: "Seite", msgs: "Nachr.", tools: "Werkzeuge", match: "Treffer", other: "Sonstige", configured: "konfiguriert", removed: "entfernt", failedToToggle: "Umschalten fehlgeschlagen", failedToRemove: "Entfernen fehlgeschlagen", failedToReveal: "Anzeigen fehlgeschlagen", collapse: "Einklappen", expand: "Ausklappen", general: "Allgemein", messaging: "Messaging", pluginLoadFailed: "Das Skript dieses Plugins konnte nicht geladen werden. Prüfe den Netzwerk-Tab (dashboard-plugins/…) und den Plugin-Pfad des Servers.", pluginNotRegistered: "Das Skript des Plugins hat register() nicht aufgerufen oder ist fehlgeschlagen. Öffne die Browser-Konsole für Details.", }, app: { brand: "Hermes Agent", brandShort: "HA", closeNavigation: "Navigation schließen", closeModelTools: "Modell und Werkzeuge schließen", footer: { org: "Nous Research", }, activeSessionsLabel: "Aktive Sitzungen:", gatewayStatusLabel: "Gateway-Status:", gatewayStrip: { failed: "Start fehlgeschlagen", off: "Aus", running: "Läuft", starting: "Startet", stopped: "Gestoppt", }, nav: { analytics: "Analyse", chat: "Chat", config: "Konfiguration", cron: "Cron", documentation: "Dokumentation", keys: "Schlüssel", logs: "Protokolle", models: "Modelle", profiles: "Profile : Multi-Agenten", plugins: "Plugins", sessions: "Sitzungen", skills: "Skills", }, modelToolsSheetSubtitle: "& Werkzeuge", modelToolsSheetTitle: "Modell", navigation: "Navigation", openDocumentation: "Dokumentation in neuem Tab öffnen", openNavigation: "Navigation öffnen", pluginNavSection: "Plugins", sessionsActiveCount: "{count} aktiv", statusOverview: "Statusübersicht", system: "System", webUi: "Web UI", }, status: { actionFailed: "Aktion fehlgeschlagen", actionFinished: "Abgeschlossen", actions: "Aktionen", agent: "Agent", activeSessions: "Aktive Sitzungen", connected: "Verbunden", connectedPlatforms: "Verbundene Plattformen", disconnected: "Getrennt", error: "Fehler", failed: "Fehlgeschlagen", gateway: "Gateway", gatewayFailedToStart: "Gateway konnte nicht gestartet werden", lastUpdate: "Letzte Aktualisierung", noneRunning: "Keine", notRunning: "Läuft nicht", pid: "PID", platformDisconnected: "getrennt", platformError: "Fehler", recentSessions: "Letzte Sitzungen", restartGateway: "Gateway neu starten", restartingGateway: "Gateway wird neu gestartet…", running: "Läuft", runningRemote: "Läuft (remote)", startFailed: "Start fehlgeschlagen", starting: "Startet", startedInBackground: "Im Hintergrund gestartet — siehe Protokolle für den Fortschritt", stopped: "Gestoppt", updateHermes: "Hermes aktualisieren", updatingHermes: "Hermes wird aktualisiert…", waitingForOutput: "Warte auf Ausgabe…", }, sessions: { title: "Sitzungen", searchPlaceholder: "Nachrichteninhalt suchen...", noSessions: "Noch keine Sitzungen", noMatch: "Keine Sitzungen entsprechen deiner Suche", startConversation: "Starte eine Unterhaltung, um sie hier zu sehen", noMessages: "Keine Nachrichten", untitledSession: "Sitzung ohne Titel", deleteSession: "Sitzung löschen", confirmDeleteTitle: "Sitzung löschen?", confirmDeleteMessage: "Dies entfernt die Unterhaltung und alle Nachrichten dauerhaft. Dies kann nicht rückgängig gemacht werden.", sessionDeleted: "Sitzung gelöscht", failedToDelete: "Sitzung konnte nicht gelöscht werden", resumeInChat: "Im Chat fortsetzen", previousPage: "Vorherige Seite", nextPage: "Nächste Seite", roles: { user: "Benutzer", assistant: "Assistent", system: "System", tool: "Werkzeug", }, }, analytics: { period: "Zeitraum:", totalTokens: "Tokens gesamt", totalSessions: "Sitzungen gesamt", apiCalls: "API-Aufrufe", dailyTokenUsage: "Tägliche Token-Nutzung", dailyBreakdown: "Tagesaufschlüsselung", perModelBreakdown: "Aufschlüsselung pro Modell", topSkills: "Top-Skills", skill: "Skill", loads: "Agent geladen", edits: "Agent verwaltet", lastUsed: "Zuletzt verwendet", input: "Eingabe", output: "Ausgabe", total: "Gesamt", noUsageData: "Keine Nutzungsdaten für diesen Zeitraum", startSession: "Starte eine Sitzung, um hier Analysen zu sehen", date: "Datum", model: "Modell", tokens: "Tokens", perDayAvg: "/Tag Ø", acrossModels: "über {count} Modelle", inOut: "{input} ein / {output} aus", }, models: { modelsUsed: "Verwendete Modelle", estimatedCost: "Gesch. Kosten", tokens: "Tokens", sessions: "Sitzungen", avgPerSession: "Ø/Sitzung", apiCalls: "API-Aufrufe", toolCalls: "Werkzeug-Aufrufe", noModelsData: "Keine Modellnutzungsdaten für diesen Zeitraum", startSession: "Starte eine Sitzung, um hier Modelldaten zu sehen", }, logs: { title: "Protokolle", autoRefresh: "Auto-Aktualisierung", file: "Datei", level: "Stufe", component: "Komponente", lines: "Zeilen", noLogLines: "Keine Protokollzeilen gefunden", }, cron: { confirmDeleteMessage: "Damit wird die Aufgabe aus dem Zeitplan entfernt. Dies kann nicht rückgängig gemacht werden.", confirmDeleteTitle: "Geplante Aufgabe löschen?", newJob: "Neue Cron-Aufgabe", nameOptional: "Name (optional)", namePlaceholder: "z. B. Tägliche Zusammenfassung", prompt: "Prompt", promptPlaceholder: "Was soll der Agent bei jedem Lauf tun?", schedule: "Zeitplan (Cron-Ausdruck)", schedulePlaceholder: "0 9 * * *", deliverTo: "Zustellen an", scheduledJobs: "Geplante Aufgaben", noJobs: "Keine Cron-Aufgaben konfiguriert. Erstelle oben eine.", last: "Zuletzt", next: "Nächste", pause: "Pausieren", resume: "Fortsetzen", triggerNow: "Jetzt auslösen", delivery: { local: "Lokal", telegram: "Telegram", discord: "Discord", slack: "Slack", email: "Email", }, }, profiles: { newProfile: "Neues Profil", name: "Name", namePlaceholder: "z. B. coder, writer usw.", nameRequired: "Name ist erforderlich", nameRule: "Nur Kleinbuchstaben, Ziffern, _ und -; muss mit einem Buchstaben oder einer Ziffer beginnen; maximal 64 Zeichen.", invalidName: "Ungültiger Profilname", cloneFromDefault: "Konfiguration vom Standardprofil klonen", allProfiles: "Profile", noProfiles: "Keine Profile gefunden.", defaultBadge: "Standard", hasEnv: "env", model: "Modell", skills: "Skills", rename: "Umbenennen", editSoul: "SOUL.md bearbeiten", soulSection: "SOUL.md (Persönlichkeit / System-Prompt)", soulPlaceholder: "# Wie sich dieser Agent verhalten soll…", saveSoul: "SOUL speichern", soulSaved: "SOUL.md gespeichert", openInTerminal: "CLI-Befehl kopieren", commandCopied: "In Zwischenablage kopiert", copyFailed: "Kopieren fehlgeschlagen", confirmDeleteTitle: "Profil löschen?", confirmDeleteMessage: "Damit wird das Profil '{name}' dauerhaft gelöscht — Konfiguration, Schlüssel, Erinnerungen, Sitzungen, Skills, Cron-Aufgaben. Kann nicht rückgängig gemacht werden.", created: "Erstellt", deleted: "Gelöscht", renamed: "Umbenannt", }, pluginsPage: { contextEngineLabel: "Kontext-Engine", dashboardSlots: "Dashboard-Slots", disableRuntime: "Deaktivieren", enableAfterInstall: "Nach Installation aktivieren", enableRuntime: "Aktivieren", forceReinstall: "Neuinstallation erzwingen (bestehenden Ordner zuerst löschen)", headline: "Hermes-Plugins entdecken, installieren, aktivieren und aktualisieren (entspricht `hermes plugins`).", identifierLabel: "Git-URL oder owner/repo", inactive: "inaktiv", installBtn: "Aus Git installieren", installHeading: "Aus GitHub / Git-URL installieren", installHint: "Verwende owner/repo-Kurzform oder eine vollständige https:// oder git@ Klon-URL.", memoryProviderLabel: "Speicheranbieter", missingEnvWarn: "Setze diese unter Schlüssel, bevor das Plugin laufen kann:", noDashboardTab: "Kein Dashboard-Tab", openTab: "Öffnen", orphanHeading: "Nur-Dashboard-Erweiterungen (keine Übereinstimmung mit Agent plugin.yaml)", pluginListHeading: "Installierte Plugins", providerDefaults: "eingebaut / Standard", providersHeading: "Laufzeit-Anbieter-Plugins", providersHint: "Schreibt memory.provider (leer = eingebaut) und context.engine in config.yaml. Wirkt sich auf die nächste Sitzung aus.", refreshDashboard: "Dashboard-Erweiterungen erneut scannen", removeConfirm: "Dieses Plugin aus ~/.hermes/plugins/ entfernen?", removeHint: "Nur vom Benutzer installierte Plugins unter ~/.hermes/plugins können entfernt werden.", rescanHeading: "SPA-Plugin-Registry", rescanHint: "Nach dem Hinzufügen von Dateien auf dem Datenträger erneut scannen, damit die Sidebar neue Manifeste erkennt.", runtimeHeading: "Gateway-Laufzeit (YAML-Plugins)", saveProviders: "Anbieter-Einstellungen speichern", savedProviders: "Anbieter-Einstellungen gespeichert.", sourceBadge: "Quelle", authRequired: "Authentifizierung erforderlich", authRequiredHint: "Führe diesen Befehl aus, um dich zu authentifizieren:", updateGit: "Git pull", versionBadge: "Version", showInSidebar: "In Sidebar anzeigen", hideFromSidebar: "Aus Sidebar ausblenden", }, skills: { title: "Skills", searchPlaceholder: "Skills und Toolsets suchen...", enabledOf: "{enabled}/{total} aktiviert", all: "Alle", categories: "Kategorien", filters: "Filter", noSkills: "Keine Skills gefunden. Skills werden aus ~/.hermes/skills/ geladen", noSkillsMatch: "Keine Skills entsprechen deiner Suche oder deinem Filter.", skillCount: "{count} Skill{s}", resultCount: "{count} Ergebnis{s}", noDescription: "Keine Beschreibung verfügbar.", toolsets: "Toolsets", toolsetLabel: "{name} Toolset", noToolsetsMatch: "Keine Toolsets entsprechen der Suche.", setupNeeded: "Einrichtung erforderlich", disabledForCli: "Für CLI deaktiviert", more: "+{count} weitere", }, config: { configPath: "~/.hermes/config.yaml", filters: "Filter", sections: "Bereiche", exportConfig: "Konfiguration als JSON exportieren", importConfig: "Konfiguration aus JSON importieren", resetDefaults: "Auf Standardwerte zurücksetzen", resetScopeTooltip: "{scope} auf Standardwerte zurücksetzen", confirmResetScope: "Alle {scope}-Einstellungen auf ihre Standardwerte zurücksetzen? Dies aktualisiert nur das Formular — Änderungen werden erst in config.yaml geschrieben, wenn du auf Speichern drückst.", resetScopeToast: "{scope} auf Standardwerte zurückgesetzt — überprüfen und Speichern, um zu übernehmen", rawYaml: "Rohe YAML-Konfiguration", searchResults: "Suchergebnisse", fields: "Feld{s}", noFieldsMatch: 'Keine Felder entsprechen "{query}"', configSaved: "Konfiguration gespeichert", yamlConfigSaved: "YAML-Konfiguration gespeichert", failedToSave: "Speichern fehlgeschlagen", failedToSaveYaml: "YAML konnte nicht gespeichert werden", failedToLoadRaw: "Rohe Konfiguration konnte nicht geladen werden", configImported: "Konfiguration importiert — überprüfen und speichern", invalidJson: "Ungültige JSON-Datei", categories: { general: "Allgemein", agent: "Agent", terminal: "Terminal", display: "Anzeige", delegation: "Delegation", memory: "Speicher", compression: "Komprimierung", security: "Sicherheit", browser: "Browser", voice: "Stimme", tts: "Text-zu-Sprache", stt: "Sprache-zu-Text", logging: "Protokollierung", discord: "Discord", auxiliary: "Hilfs", }, }, env: { changesNote: "Änderungen werden sofort auf der Festplatte gespeichert. Aktive Sitzungen übernehmen neue Schlüssel automatisch.", confirmClearMessage: "Der gespeicherte Wert für diese Variable wird aus deiner .env-Datei entfernt. Dies kann über die UI nicht rückgängig gemacht werden.", confirmClearTitle: "Diesen Schlüssel löschen?", description: "Verwalte API-Schlüssel und Geheimnisse, die hier gespeichert sind", hideAdvanced: "Erweitert ausblenden", showAdvanced: "Erweitert anzeigen", llmProviders: "LLM-Anbieter", providersConfigured: "{configured} von {total} Anbietern konfiguriert", getKey: "Schlüssel holen", notConfigured: "{count} nicht konfiguriert", notSet: "Nicht gesetzt", keysCount: "{count} Schlüssel", enterValue: "Wert eingeben...", replaceCurrentValue: "Aktuellen Wert ersetzen ({preview})", showValue: "Echten Wert anzeigen", hideValue: "Wert ausblenden", }, oauth: { title: "Anbieter-Logins (OAuth)", providerLogins: "Anbieter-Logins (OAuth)", description: "{connected} von {total} OAuth-Anbietern verbunden. Login-Abläufe laufen derzeit über die CLI; klicke auf Befehl kopieren und füge ihn in ein Terminal ein, um einzurichten.", connected: "Verbunden", expired: "Abgelaufen", notConnected: "Nicht verbunden. Führe {command} in einem Terminal aus.", runInTerminal: "in einem Terminal.", noProviders: "Keine OAuth-fähigen Anbieter erkannt.", login: "Anmelden", disconnect: "Trennen", managedExternally: "Extern verwaltet", copied: "Kopiert ✓", cli: "CLI", copyCliCommand: "CLI-Befehl kopieren (für extern / Fallback)", connect: "Verbinden", sessionExpires: "Sitzung läuft in {time} ab", initiatingLogin: "Login-Ablauf wird gestartet…", exchangingCode: "Code wird gegen Tokens getauscht…", connectedClosing: "Verbunden! Wird geschlossen…", loginFailed: "Anmeldung fehlgeschlagen.", sessionExpired: "Sitzung abgelaufen. Klicke auf Erneut versuchen, um eine neue Anmeldung zu starten.", reOpenAuth: "Authentifizierungsseite erneut öffnen", reOpenVerification: "Verifizierungsseite erneut öffnen", submitCode: "Code einreichen", pasteCode: "Autorisierungscode einfügen (mit #state-Suffix ist okay)", waitingAuth: "Warte, bis du im Browser autorisierst…", enterCodePrompt: "Ein neuer Tab wurde geöffnet. Gib bei Aufforderung diesen Code ein:", pkceStep1: "Ein neuer Tab wurde zu claude.ai geöffnet. Melde dich an und klicke auf Autorisieren.", pkceStep2: "Kopiere den Autorisierungscode, der nach der Autorisierung angezeigt wird.", pkceStep3: "Füge ihn unten ein und sende ab.", flowLabels: { pkce: "Browser-Login (PKCE)", device_code: "Gerätecode", external: "Externe CLI", }, expiresIn: "läuft in {time} ab", }, language: { switchTo: "Zu Englisch wechseln", }, theme: { title: "Design", switchTheme: "Design wechseln", }, achievements: { hero: { kicker: "Agentic Gamerscore", title: "Hermes Achievements", subtitle: "Sammelbare Hermes-Abzeichen, verdient durch echten Sitzungsverlauf. Bekannte, noch nicht abgeschlossene Achievements werden als Entdeckt angezeigt; geheime Achievements bleiben verborgen, bis das erste passende Verhalten auftritt.", scan_subtitle: "Hermes-Sitzungsverlauf wird gescannt. Der erste Scan kann bei umfangreichem Verlauf 5–10 Sekunden dauern.", }, actions: { rescan: "Neu scannen", }, stats: { unlocked: "Freigeschaltet", unlocked_hint: "verdiente Abzeichen", discovered: "Entdeckt", discovered_hint: "bekannt, noch nicht verdient", secrets: "Geheimnisse", secrets_hint: "verborgen bis zum ersten Signal", highest_tier: "Höchste Stufe", highest_tier_hint: "Copper → Silver → Gold → Diamond → Olympian", latest: "Neueste", latest_hint_empty: "nutze Hermes mehr", none_yet: "Noch keine", }, state: { unlocked: "Freigeschaltet", discovered: "Entdeckt", secret: "Geheim", }, tier: { target: "Ziel {tier}", hidden: "Verborgen", complete: "Abgeschlossen", objective: "Ziel", }, progress: { hidden: "verborgen", }, scan: { building_headline: "Achievement-Profil wird erstellt…", building_detail: "Sitzungen, Tool-Aufrufe, Modell-Metadaten und Freischaltstatus werden gelesen.", starting_headline: "Achievement-Scan wird gestartet…", progress_detail: "{scanned} von {total} Sitzungen gescannt · {pct}%. Abzeichen werden freigeschaltet, sobald mehr Verlauf eingelesen wird.", idle_detail: "Sitzungen, Tool-Aufrufe, Modell-Metadaten und Freischaltstatus werden gelesen. Abzeichen erscheinen hier, sobald sie freigeschaltet werden.", }, guide: { tiers_header: "Stufen", secret_header: "Geheime Achievements", secret_body: "Geheimnisse verbergen ihren genauen Auslöser. Sobald Hermes ein verwandtes Signal erkennt, wird die Karte zu Entdeckt und zeigt ihre Anforderung an.", scan_status_header: "Scan-Status", scan_status_body: "Hermes scannt den lokalen Verlauf einmalig, danach erscheinen die Karten automatisch. Es ist nichts hängengeblieben, wenn dies ein paar Sekunden dauert.", what_scanned_header: "Was gescannt wird", what_scanned_body: "Sitzungen, Tool-Aufrufe, Modell-Metadaten, Fehler, Achievements und lokaler Freischaltstatus.", }, card: { share_title: "Dieses Achievement teilen", share_label: "{name} teilen", share_text: "Teilen", how_to_reveal: "Wie aufdecken", what_counts: "Was zählt", evidence_label: "Beleg", evidence_session_fallback: "Sitzung", no_evidence: "Noch kein Beleg", }, latest: { header: "Letzte Freischaltungen", }, empty: { no_secrets_header: "Keine verborgenen Geheimnisse mehr in diesem Scan.", no_secrets_body: "Hinweis: Geheimnisse beginnen meist bei ungewöhnlichen Fehlern oder Power-User-Mustern – Port-Konflikten, Berechtigungswänden, fehlenden Umgebungsvariablen, YAML-Fehlern, Docker-Kollisionen, Rollback-/Checkpoint-Nutzung, Cache-Treffern oder kleinen Fixes nach viel rotem Text.", }, filters: { all_categories: "Alle", visibility_all: "alle", visibility_unlocked: "freigeschaltet", visibility_discovered: "entdeckt", visibility_secret: "geheim", }, share: { dialog_label: "Achievement teilen", header: "Teilen: {name}", close: "Schließen", rendering: "Wird gerendert…", card_alt: "{name} Share-Karte", error_generic: "Etwas ist schiefgelaufen.", x_title: "Öffnet X mit einem vorgefertigten Post", x_button: "Auf X teilen", copy_title: "Bild kopieren, um es in deinen Post einzufügen", copy_button: "Bild kopieren", copied: "Kopiert ✓", download_button: "PNG herunterladen", hint: "Auf X teilen öffnet einen vorgefertigten Post in einem neuen Tab. Klicke zuerst auf Bild kopieren, wenn du das 1200×630-Abzeichen anhängen möchtest – X lässt dich es direkt in den Tweet-Editor einfügen. PNG herunterladen speichert die Datei zur Nutzung an beliebiger Stelle.", clipboard_unsupported: "Bildkopie über die Zwischenablage wird in diesem Browser nicht unterstützt – nutze stattdessen Herunterladen.", tweet_text: "Just unlocked {tier_part}\"{name}\" in Hermes Agent ☤", }, }, kanban: { loading: "Kanban-Board wird geladen…", loadFailed: "Laden des Kanban-Boards fehlgeschlagen: ", loadFailedHint: "Das Backend erstellt kanban.db beim ersten Lesen automatisch. Wenn das Problem bestehen bleibt, prüfe die Dashboard-Logs.", board: "Board", newBoard: "+ Neues Board", newBoardTitle: "Neues Board", newBoardDescription: "Mit Boards kannst du voneinander unabhängige Arbeitsabläufe trennen — eines pro Projekt, Repository oder Domäne. Worker auf einem Board sehen niemals die Aufgaben eines anderen Boards.", slug: "Slug", slugHint: "— Kleinbuchstaben, Bindestriche, z. B. atm10-server", displayName: "Anzeigename", displayNameHint: "(optional)", description: "Beschreibung", descriptionHint: "(optional)", icon: "Symbol", iconHint: "(einzelnes Zeichen oder Emoji)", switchAfterCreate: "Nach dem Erstellen zu diesem Board wechseln", cancel: "Abbrechen", creating: "Wird erstellt…", createBoard: "Board erstellen", search: "Suchen", filterCards: "Karten filtern…", tenant: "Tenant", allTenants: "Alle Tenants", assignee: "Zuständige Person", allProfiles: "Alle Profile", showArchived: "Archivierte anzeigen", lanesByProfile: "Spuren nach Profil", nudgeDispatcher: "Dispatcher anstoßen", refresh: "Aktualisieren", selected: "ausgewählt", complete: "Abschließen", archive: "Archivieren", apply: "Anwenden", clear: "Zurücksetzen", createTask: "Aufgabe in dieser Spalte erstellen", noTasks: "— keine Aufgaben —", unassigned: "nicht zugewiesen", untitled: "(ohne Titel)", loadingDetail: "Wird geladen…", addComment: "Kommentar hinzufügen… (Enter zum Senden)", comment: "Kommentar", status: "Status", workspace: "Arbeitsbereich", skills: "Fähigkeiten", createdBy: "Erstellt von", result: "Ergebnis", comments: "Kommentare", events: "Ereignisse", runHistory: "Ausführungsverlauf", workerLog: "Worker-Log", loadingLog: "Log wird geladen…", noWorkerLog: "— noch kein Worker-Log (Aufgabe wurde nicht gestartet oder Log wurde rotiert) —", noDescription: "— keine Beschreibung —", noComments: "— keine Kommentare —", edit: "bearbeiten", save: "Speichern", dependencies: "Abhängigkeiten", parents: "Übergeordnet:", children: "Untergeordnet:", none: "keine", addParent: "— übergeordnete Aufgabe hinzufügen —", addChild: "— untergeordnete Aufgabe hinzufügen —", removeDependency: "Abhängigkeit entfernen", block: "Blockieren", unblock: "Freigeben", notifyHomeChannels: "Home-Kanäle benachrichtigen", diagnostics: "Diagnose", hide: "Ausblenden", show: "Anzeigen", attention: "Achtung", tasksNeedAttention: "Aufgaben benötigen Aufmerksamkeit", taskNeedsAttention: "1 Aufgabe benötigt Aufmerksamkeit", diagnostic: "Diagnose", open: "Öffnen", close: "Schließen (Esc)", reassignTo: "Neu zuweisen an:", copied: "Kopiert", copyCommand: "Befehl in die Zwischenablage kopieren", reclaim: "Zurückholen", reassign: "Neu zuweisen", renderingError: "Im Kanban-Tab ist ein Renderfehler aufgetreten", reloadView: "Ansicht neu laden", wsAuthFailed: "WebSocket-Authentifizierung fehlgeschlagen — lade die Seite neu, um das Sitzungs-Token zu aktualisieren.", markDone: "{n} Aufgabe(n) als erledigt markieren?", markArchived: "{n} Aufgabe(n) archivieren?", warning: "Warnung", phantomIds: "Phantom-IDs:", active: "aktiv", ended: "beendet", noProfile: "(kein Profil)", showAllAttempts: "Alle Versuche anzeigen", sendingUpdates: "Aktualisierungen werden gesendet an ", sendNotifications: "Benachrichtigungen für Abgeschlossen / Blockiert / Aufgegeben senden an", archiveBoardConfirm: "Board „{name}“ archivieren? Es wird nach boards/_archived/ verschoben, sodass du es später wiederherstellen kannst. Aufgaben auf diesem Board erscheinen nirgendwo mehr in der UI.", archiveBoardTitle: "Dieses Board archivieren", boardSwitcherHint: "Mit Boards kannst du voneinander unabhängige Arbeitsabläufe trennen", taskCreatedWarning: "Aufgabe erstellt, aber: ", moveFailed: "Verschieben fehlgeschlagen: ", bulkFailed: "Bulk: ", completionBlockedHallucination: "⚠ Abschluss blockiert — Phantom-Karten-IDs", suspectedHallucinatedReferences: "⚠ Text verweist auf Phantom-Karten-IDs", pickProfileFirst: "Wähle zuerst ein Profil aus.", unblockedMessage: "{id} freigegeben. Aufgabe ist bereit für den nächsten Tick.", unblockFailed: "Freigeben fehlgeschlagen: ", reclaimedMessage: "{id} zurückgeholt. Aufgabe ist wieder auf ready.", reclaimFailed: "Zurückholen fehlgeschlagen: ", reassignedMessage: "{id} an {profile} neu zugewiesen.", reassignFailed: "Neu zuweisen fehlgeschlagen: ", selectForBulk: "Für Bulk-Aktionen auswählen", clickToEdit: "Zum Bearbeiten klicken", clickToEditAssignee: "Klicken, um zuständige Person zu bearbeiten", emptyAssignee: "(leer = Zuweisung aufheben)", columnLabels: { triage: "Triage", todo: "Zu erledigen", ready: "Bereit", running: "In Bearbeitung", blocked: "Blockiert", done: "Erledigt", archived: "Archiviert", }, columnHelp: { triage: "Rohe Ideen — ein Specifier wird die Spezifikation ausarbeiten", todo: "Wartet auf Abhängigkeiten oder ist nicht zugewiesen", ready: "Zugewiesen und wartet auf einen Dispatcher-Tick", running: "Von einem Worker übernommen — in Bearbeitung", blocked: "Worker hat um menschliche Eingabe gebeten", done: "Abgeschlossen", archived: "Archiviert", }, confirmDone: "Diese Aufgabe als erledigt markieren? Der Anspruch des Workers wird freigegeben und abhängige untergeordnete Aufgaben werden bereit.", confirmArchive: "Diese Aufgabe archivieren? Sie verschwindet aus der Standard-Board-Ansicht.", confirmBlocked: "Diese Aufgabe als blockiert markieren? Der Anspruch des Workers wird freigegeben.", completionSummary: "Abschluss-Zusammenfassung für {label}. Diese wird als Ergebnis der Aufgabe gespeichert.", completionSummaryRequired: "Eine Abschluss-Zusammenfassung ist erforderlich, bevor eine Aufgabe als erledigt markiert werden kann.", triagePlaceholder: "Grobe Idee — die KI wird die Spezifikation erstellen…", taskTitlePlaceholder: "Titel der neuen Aufgabe…", specifier: "Specifier", assigneePlaceholder: "Zuständige Person", priority: "Priorität", skillsPlaceholder: "Fähigkeiten (optional, kommagetrennt): translation, github-code-review", noParent: "— keine übergeordnete Aufgabe —", workspacePathDir: "Arbeitsbereichs-Pfad (erforderlich, z. B. ~/projects/my-app)", workspacePathOptional: "Arbeitsbereichs-Pfad (optional, wird aus zuständiger Person abgeleitet, wenn leer)", logTruncated: "(zeige die letzten 100 KB — vollständiges Log unter ", logAt: ")", }, };