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",
    history: "Verlauf",
    overview: "Übersicht",
    filterChats: "Chats",
    filterAutomation: "Automatisierung",
    filterAll: "Alle",
    sourceFilter: "Sitzungsquelle",
    anySource: "Beliebige Quelle",
    searchPlaceholder: "Nachrichteninhalt suchen...",
    noSessions: "Noch keine Sitzungen",
    noSessionsInFilter: "Keine Sitzungen in diesem Filter",
    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",
    deleteEmpty: "Leere löschen",
    deleteEmptyConfirmTitle: "Leere Sitzungen löschen?",
    deleteEmptyConfirmMessage:
      "Dies entfernt dauerhaft {count} Sitzungen ohne Nachrichten. Aktive und archivierte Sitzungen werden übersprungen. Dies kann nicht rückgängig gemacht werden.",
    emptySessionsDeleted: "{count} leere Sitzungen gelöscht",
    failedToDeleteEmpty: "Leere Sitzungen konnten nicht gelöscht werden",
    selectSession: "Sitzung auswählen",
    selectAllOnPage: "Alle auf dieser Seite auswählen",
    clearSelection: "Auswahl aufheben",
    selectedCount: "{count} ausgewählt",
    deleteSelected: "{count} löschen",
    deleteSelectedConfirmTitle: "{count} Sitzungen löschen?",
    deleteSelectedConfirmMessage:
      "Dies entfernt {count} ausgewählte Sitzungen und alle zugehörigen Nachrichten dauerhaft. Dies kann nicht rückgängig gemacht werden.",
    selectedSessionsDeleted: "{count} Sitzungen gelöscht",
    failedToDeleteSelected: "Ausgewählte Sitzungen konnten nicht gelöscht werden",
    resumeInChat: "Im Chat fortsetzen",
    newChat: "Neuer Chat",
    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 * * *",
    scheduleMode: "Zeitplan",
    scheduleModes: {
      interval: "Wiederkehrendes Intervall",
      daily: "Täglich",
      weekly: "Wöchentlich",
      monthly: "Monatlich",
      once: "Einmalig",
      custom: "Benutzerdefiniert (Cron-Ausdruck)",
      intervalEvery: "Alle",
      intervalUnit: "Einheit",
      unitMinutes: "Minuten",
      unitHours: "Stunden",
      unitDays: "Tage",
      timeOfDay: "Uhrzeit",
      weekdays: "Wochentage",
      weekdaysShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
      dayOfMonth: "Tag des Monats",
      onceAt: "Ausführen am",
      customLabel: "Cron-Ausdruck",
      customPlaceholder: "0 9 * * *",
      customHint:
        "Cron-Ausdruck mit fünf Feldern (Minute, Stunde, Tag, Monat, Wochentag).",
      preview: "Wird gesendet als",
      previewEmpty: "(unvollständig)",
    },
    scheduleDescribe: {
      none: "—",
      everyMinutes: "Alle {n} Min.",
      everyHours: "Alle {n} Std.",
      everyDays: "Alle {n} Tage",
      dailyAt: "Täglich um {time}",
      weeklyAt: "Wöchentlich am {days} um {time}",
      monthlyAt: "Monatlich am {day} um {time}",
      onceAt: "Einmal am {time}",
    },
    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",    cloneFrom: "Konfiguration klonen von",
    cloneFromNone: "Keine (leer)",
    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: "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",
    showLess: "Weniger anzeigen",
    showMore: "Mehr 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",
    customTitle: "Benutzerdefinierte Schlüssel",
    customHint: "Beliebige Umgebungsvariablen in deiner .env, die Hermes nicht erkennt. Verwende sie, um Umgebungsvariablen für Skills, MCP-Server oder eigene Tools einzuschleusen.",
    customConfigured: "{count} benutzerdefinierte Schlüssel gesetzt",
    addCustomKey: "Benutzerdefinierten Schlüssel hinzufügen",
    customKeyName: "Variablenname",
    customKeyNamePlaceholder: "z. B. MY_SERVICE_API_KEY",
    add: "Hinzufügen",
    invalidKeyName: "Nur Buchstaben, Zahlen und Unterstriche verwenden (muss mit einem Buchstaben oder Unterstrich beginnen).",
  },

  oauth: {
    title: "Anbieter-Logins (OAuth)",
    providerLogins: "Anbieter-Logins (OAuth)",
    description:
      "{connected} von {total} OAuth-Anbietern verbunden. Nutze Anmelden für vom Dashboard unterstützte Abläufe; CLI-Befehle bleiben für externe oder Fallback-Einrichtung verfügbar.",
    connected: "Verbunden",
    expired: "Abgelaufen",
    notConnected: "Nicht verbunden. Nutze Anmelden, falls verfügbar, oder 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 ✓",
    copyCode: "Code kopieren",
    copyFailed: "Automatisches Kopieren fehlgeschlagen. Markiere den Code und kopiere ihn manuell.",
    cli: "Kopieren",
    copyCliCommand: "CLI-Befehl kopieren (für extern / Fallback)",
    connect: "Verbinden",
    sessionExpires: "Sitzung läuft in {time} ab",
    sessionExpiredNoError:
      "Die Anmeldung ist abgelaufen, ohne den Anbieter zu erreichen. Das bedeutet meist, dass die Anmeldeseite im geöffneten Tab hängen geblieben ist (serverseitiges Problem) — schließen Sie die Anmeldung dort ab und klicken Sie dann auf Erneut versuchen. Wenn es weiterhin fehlschlägt, verwenden Sie stattdessen einen API-Schlüssel oder die CLI.",
    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: "Sprache 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",
    confirmDoneMany:
      "Mark {n} tasks as done? The workers' claims are released and dependent children become ready.",
    confirmArchiveMany:
      "Archive {n} tasks? They disappear from the default board view.",
    confirmBlockedMany:
      "Mark {n} tasks as blocked? The workers' claims are released.",
    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",
      scheduled: "Geplant",
      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",
      scheduled: "Wartet auf eine bekannte Verzögerung oder eine geplante Nachverfolgung",
      ready: "Abhängigkeiten erfüllt; Profil zum Dispatch zuweisen",
      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: ")",
  },
};
