{
  "@@locale": "de",
  "appTitle": "Ch∆In Studio",
  "navWelcome": "Willkommen",
  "welcomeHeroTitle": "Ch∆In Platform",
  "welcomeHeroSubtitle": "Deterministische Workflow-Engine für KI-gestützte Dokumentenverarbeitung in regulierten Umgebungen.",
  "welcomePillarHubTitle": "Hub",
  "welcomePillarHubBody": "Ein Rust-Binary, das Module lädt und Flows ausführt. SQLite für den State. Kein Docker, kein Message-Broker, keine Hintergrunddienste, die gepflegt werden müssen.",
  "welcomePillarModuleTitle": "Modul",
  "welcomePillarModuleBody": "Eine kleine WebAssembly-Komponente, die eine Sache macht. Deklariert Netzwerk-Endpunkte, Dateien und Umgebungsvariablen, auf die sie zugreift; der Hub setzt die Liste durch.",
  "welcomePillarFlowTitle": "Flow",
  "welcomePillarFlowBody": "Eine YAML-Datei, die Module verkettet. Eingaben rein, Module laufen in der deklarierten Reihenfolge, Ausgaben raus — jeder Schritt in einem hash-verketteten Audit-Log festgehalten.",
  "welcomeTrustHeader": "TRUST-POSTURE",
  "welcomeTrustSandboxTitle": "Sandbox von Anfang an",
  "welcomeTrustSandboxBody": "Jedes Modul bringt eine explizite Berechtigungsliste mit — Netzwerk-Endpunkte, Dateien, Umgebungsvariablen. Der Hub setzt sie durch; ohne Operator-Freigabe verlässt nichts die Sandbox.",
  "welcomeTrustAuditTitle": "Manipulationssicheres Audit-Log",
  "welcomeTrustAuditBody": "Flow-Läufe, Installationen, Deinstallationen, Freigabe-Entscheidungen — alles wird in ein hash-verkettetes Audit-Log geschrieben. Die Diagnose-Seite verifiziert die Kette bei jedem Laden komplett.",
  "welcomeTrustAirgapTitle": "Air-Gap-tauglich",
  "welcomeTrustAirgapBody": "Der gesamte Hub steckt in einem einzigen Binary für Linux, macOS und Windows. Sobald ein Modul installiert ist, läuft der Flow, der es nutzt, ohne weiteren Netzwerkzugriff — ideal für regulierte Umgebungen.",
  "welcomeDocsHeader": "DOKUMENTATION",
  "welcomeDocsBody": "Operator-Erklärungen, inline gerendert. Kein Browser, kein externer Link — air-gap-tauglich.",
  "welcomeDocArchitectureTitle": "Architektur in einem Absatz",
  "welcomeDocArchitectureBlurb": "Hub, Modul, Flow — und wie die drei zusammenpassen.",
  "welcomeDocSecurityTitle": "Sandbox-Modell",
  "welcomeDocSecurityBlurb": "Was ein Modul deklariert, was der Operator deckelt, was der Hub durchsetzt.",
  "welcomeDocAuditTitle": "Manipulationssicheres Audit-Log",
  "welcomeDocAuditBlurb": "Wie die Hash-Kette funktioniert und warum WORM-1 für KRITIS reicht.",
  "welcomeDocFlowsTitle": "Flow-Komposition",
  "welcomeDocFlowsBlurb": "YAML-Grundlagen, Templating-Referenz, das Extract→Summarize-Beispiel.",
  "welcomeDocApprovalsTitle": "Freigaben",
  "welcomeDocApprovalsBlurb": "Human-in-the-Loop-Checkpoints — wann nutzen, wie das Audit-Log sie protokolliert.",
  "helpTooltip": "Hilfe",
  "errApprovalRejected": "Freigabe vom Reviewer abgelehnt.",
  "errApprovalRejectedHint": "Der Reviewer hat den Step abgelehnt. Begründung steht im Audit-Log.",
  "errApprovalTimedOut": "Freigabe-Timeout abgelaufen.",
  "errApprovalTimedOutHint": "Es wurde nicht rechtzeitig entschieden. Entweder `timeout_seconds` am Freigabe-Step erhöhen oder den Reviewer informieren.",
  "errOutputTooLarge": "Step-Output hat die Größenbegrenzung überschritten.",
  "errOutputTooLargeHint": "Entweder Output kürzen (Text truncaten, Bytes komprimieren) oder `max_output_size_mb` in der Operator-Config erhöhen.",
  "errServiceUnavailableForStep": "Host-Service nicht konfiguriert.",
  "errServiceUnavailableForStepHint": "Das Modul braucht einen Service (z.B. ollama, playwright), den der Operator nicht deklariert hat. Trage ihn unter `services:` in ~/.chain/config.yaml ein.",
  "errMissingValue": "Pflichtwert fehlt.",
  "errMissingValueHint": "Der Step erwartet eine Eingabe, die nicht verdrahtet ist — entweder zur Laufzeit liefern oder den vorgelagerten `$ref` korrigieren.",
  "errMcpUnreachable": "MCP-Endpunkt nicht erreichbar.",
  "errMcpUnreachableHint": "Der MCP-Server hat nicht geantwortet. Endpunkt in Einstellungen → Integrationen prüfen und sicherstellen, dass er läuft.",
  "errCapabilityNotInstalled": "Benötigte Capability nicht installiert.",
  "errCapabilityNotInstalledHint": "Im Text-Tab des Flows klickst du auf den Fix-Button — der installiert die Capability, sofern sie im Store ist.",
  "welcomeDocClose": "Schließen",
  "welcomeDocFailedToLoad": "Doku konnte nicht geladen werden: {error}",
  "@welcomeDocFailedToLoad": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "welcomeChecklistHeader": "ERSTE SCHRITTE",
  "welcomeChecklistBody": "Vier Schritte zu einem funktionierenden Hub. Live-Zustand — nach jeder Änderung aktualisieren.",
  "welcomeChecklistAi": "System-AI konfigurieren",
  "welcomeChecklistAiHint": "Einstellungen → System-AI. Wird für die KI-Suche und Fehlererklärungen gebraucht.",
  "welcomeChecklistMcp": "Öffentliche Capability-Quelle hinzufügen",
  "welcomeChecklistMcpHint": "Im Store eine MCP-Quelle hinzufügen oder unter Einstellungen → MCP-Clients konfigurieren.",
  "welcomeChecklistModule": "Ein Text-Modul installieren",
  "welcomeChecklistModuleHint": "Im Store ein Modul aus der Kategorie deiner Wahl installieren. Module sind sandboxed Ch∆In-Komponenten.",
  "welcomeChecklistFlow": "Einen gespeicherten Flow starten",
  "welcomeChecklistFlowHint": "Flows → einen wählen → Starten. Studio bringt einige Demo-Flows mit; auch ein eigener tut's.",
  "welcomeChecklistAllDone": "Alle vier Schritte erledigt.",
  "welcomeChecklistDismiss": "Checkliste ausblenden",
  "welcomeChecklistRefresh": "Aktualisieren",
  "welcomeChecklistRefreshing": "Prüfe…",
  "welcomeChecklistDone": "Erledigt",
  "welcomeChecklistTodo": "Offen",
  "navDoctor": "Diagnose",
  "navModules": "Module",
  "navStore": "Store",
  "navFlows": "Flows",
  "navAudit": "Protokoll",
  "navApprovals": "Freigaben",
  "connectionConnected": "verbunden",
  "connectionUnreachable": "nicht erreichbar",
  "connectionConnecting": "verbinde…",
  "connectionStartHub": "Hub starten",
  "connectionTapToStart": "antippen zum Starten",
  "sidebarSettingsTooltip": "Einstellungen (⌘;)",
  "sidebarChannelTooltip": "Aktiver Kanal — klicken zum Wechseln.\nproduction = stabil · beta = Vorabversion · dev = laufend · local = Arbeitsumgebung",
  "buttonCancel": "Abbrechen",
  "buttonSave": "Speichern",
  "buttonClose": "Schließen",
  "buttonRetry": "Erneut versuchen",
  "buttonRefresh": "Aktualisieren",
  "buttonInstall": "Installieren",
  "buttonUninstall": "Deinstallieren",
  "buttonDetails": "Details",
  "buttonAdd": "Hinzufügen",
  "buttonRemove": "Entfernen",
  "buttonOpen": "Öffnen",
  "buttonExplain": "Erklären",
  "buttonReadDocs": "Doku öffnen",
  "buttonCopy": "In Zwischenablage kopieren",
  "buttonCopied": "Kopiert",
  "buttonShowDetails": "Details anzeigen",
  "buttonHideDetails": "Details ausblenden",
  "storeInstallableOnly": "Nur installierbare",
  "storePillComingSoon": "Bald verfügbar",
  "storeNotInstallableInline": "Dieses Modul ist auf der Roadmap (Status: {status}). Es gibt noch kein installierbares Bundle — Repository verfolgen für Updates.",
  "@storeNotInstallableInline": {
    "placeholders": {
      "status": {
        "type": "String"
      }
    }
  },
  "mcpSuggestionDeepwikiDesc": "Öffentliches HTTPS — KI-gestützte Doku-Suche in GitHub-Repos. Kein Node, kein API-Key.",
  "mcpSuggestionSemgrepDesc": "Öffentliches HTTPS — Security-Scanning von Code-Schwachstellen. Kein Node, kein API-Key.",
  "mcpSuggestionFilesystemDesc": "Anthropic — Dateien in /tmp lesen / schreiben. Pfad vor dem Speichern anpassen.",
  "mcpSuggestionFetchDesc": "Anthropic — beliebige HTTP(S)-URLs als Markdown abrufen.",
  "mcpSuggestionGithubDesc": "Anthropic — Issues, PRs, Repo-Dateien. Braucht einen GitHub-PAT in der Env-Variable.",
  "mcpSuggestionPuppeteerDesc": "Anthropic — Headless-Browser-Automation für Screenshots / Scraping.",
  "mcpSuggestionPostgresDesc": "Anthropic — Read-only-SQL-Queries gegen eine Postgres-Datenbank. URL anpassen.",
  "mcpSuggestionSqliteDesc": "Anthropic — Abfragen gegen eine lokale SQLite-Datei. Pfad anpassen.",
  "mcpSuggestionBraveSearchDesc": "Anthropic — Websuche via Brave. API-Key erforderlich.",
  "mcpSuggestionMemoryDesc": "Anthropic — persistenter Knowledge-Graph als Agenten-Gedächtnis.",
  "mcpSuggestionTimeDesc": "Anthropic — aktuelle Uhrzeit + Zeitzonen-Konvertierung.",
  "mcpServerEnLanguageBadge": "Server-Text in Englisch — Studio zeigt ihn wie geliefert.",
  "themePluginHeader": "Theme-Plugin (wirkt sofort)",
  "themeApplied": "Theme aktiv: {name}",
  "@themeApplied": {
    "placeholders": {
      "name": {"type": "String"}
    }
  },
  "themePluginFailed": "Theme-Plugin konnte nicht geladen werden — vorheriges Theme bleibt.",
  "themePluginNone": "Standard (kein Plugin)",
  "themePluginHint": "Built-in- und Plugin-Kacheln bringen handkuratierte Paletten mit. Die Kachel „Eigene Farbe\" leitet aus einer gewählten Seedfarbe eine vollständige Material-3-Palette ab (primary, secondary, tertiary, surface, …) — das ist ein vollwertiges Theme, kein Einzelfarb-Tweak.",
  "themePluginEmpty": "Kein Theme-Plugin installiert. Im Store eines aus der Kategorie studio-plugin auswählen.",
  "themePluginCustom": "Eigene Farbe",
  "themePluginCustomDialogTitle": "Eigenes Theme — Seedfarbe wählen",
  "themePluginCustomHexLabel": "Hex-Farbe",
  "themePluginCustomPreview": "Live-Vorschau",
  "themePluginCustomCancel": "Abbrechen",
  "themePluginCustomApply": "Anwenden",
  "settingsTitle": "Hub-Endpunkt",
  "settingsHost": "Host",
  "settingsPort": "Port",
  "settingsTls": "TLS",
  "settingsSaveAndConnect": "Mit Endpoint verbinden",
  "settingsLanguage": "Sprache",
  "settingsLanguageHint": "Sprache der App. Wirkt auf alle Seiten; mehrsprachige Store-Einträge folgen ebenfalls.",
  "settingsHubEndpointHint": "Wohin soll Studio sich verbinden? Standard ist der lokale Hub auf 127.0.0.1:50051.",
  "settingsTlsSubtitle": "https/grpc-secure",
  "settingsPortError": "Port muss 1–65535 sein",
  "channelsBlurb": "Hub-Kanal wechseln (schreibt ~/.chain/current-channel und startet den Daemon neu). Verbinden ändert nur die Wire von Studio.",
  "channelsActionsTooltip": "Kanal-Aktionen",
  "systemAiHeader": "SYSTEM-AI",
  "systemAiEnabled": "aktiv",
  "systemAiOff": "aus",
  "systemAiEdit": "Bearbeiten…",
  "systemAiConfigure": "Konfigurieren…",
  "systemAiOffBlurb": "Aus — Fehlererklärungen auf der Protokoll-Seite sind deaktiviert. Klicke Konfigurieren…, um einen Provider zu wählen (Ollama / OpenAI / LM Studio / vLLM / Eigene). Die Operator-Konfig wird direkt überschrieben; kein Daemon-Neustart nötig.",
  "mcpServersCount": "{n} {n, plural, =1{Server} other{Server}}",
  "@mcpServersCount": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "mcpRediscoverTooltip": "Discovery neu ausführen",
  "mcpAddTooltip": "MCP-Server hinzufügen",
  "mcpRemoveTooltip": "Server entfernen",
  "mcpToolsCount": "{n} Tools",
  "@mcpToolsCount": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "n8nEndpointsCount": "{n} {n, plural, =1{Endpunkt} other{Endpunkte}}",
  "@n8nEndpointsCount": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "n8nWorkflowsCount": "{n} Workflows",
  "@n8nWorkflowsCount": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "n8nRediscoverTooltip": "Discovery neu ausführen",
  "n8nAddTooltip": "n8n-Endpunkt hinzufügen",
  "n8nRemoveTooltip": "Endpunkt entfernen",
  "addMcpTitle": "MCP-Server hinzufügen",
  "addMcpIntro": "Tools, die der Server via `tools/list` anbietet, erscheinen im Store als `mcp.<name>.<tool>`-Fähigkeiten.",
  "addMcpSuggestionsLabel": "Vorschläge — zum Vorausfüllen klicken",
  "addMcpNameLabel": "Name (keine Punkte)",
  "addMcpNameHint": "filesystem",
  "addMcpEndpointLabel": "Endpunkt",
  "addMcpEndpointHint": "http://127.0.0.1:3001/mcp",
  "addMcpApiKeyLabel": "API-Key-Umgebungsvariable (optional)",
  "addMcpApiKeyHint": "MCP_FILESYSTEM_TOKEN",
  "addMcpNotesLabel": "Notizen (optional)",
  "addMcpAddButton": "Hinzufügen + Discovery",
  "addN8nTitle": "n8n-Endpunkt hinzufügen",
  "addN8nIntro": "Aktive Workflows erscheinen im Store als `n8n.<name>.<workflow_slug>`-Fähigkeiten.",
  "addN8nNameLabel": "Name (keine Punkte)",
  "addN8nNameHint": "ops",
  "addN8nBaseUrlLabel": "Basis-URL (ohne /api/v1)",
  "addN8nBaseUrlHint": "https://n8n.example.com",
  "addN8nApiKeyLabel": "API-Key-Umgebungsvariable (optional)",
  "addN8nApiKeyHint": "N8N_OPS_KEY",
  "addN8nNotesLabel": "Notizen (optional)",
  "addN8nAddButton": "Hinzufügen + Discovery",
  "addedMcpToast": "MCP-Server „{name}\" hinzugefügt.",
  "@addedMcpToast": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "addedN8nToast": "n8n-Endpunkt „{name}\" hinzugefügt.",
  "@addedN8nToast": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "addFailedToast": "Hinzufügen fehlgeschlagen: {error}",
  "@addFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "removeFailedToast": "Entfernen fehlgeschlagen: {error}",
  "@removeFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "refreshFailedToast": "Aktualisieren fehlgeschlagen: {error}",
  "@refreshFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "channelsHeader": "KANÄLE",
  "channelsActive": "aktiv",
  "channelsRunning": "läuft",
  "channelsStopped": "gestoppt",
  "channelsConnect": "Studio mit diesem Kanal verbinden",
  "channelsSwitch": "Diesen Kanal aktivieren",
  "channelsEnableAutostart": "Autostart bei Anmeldung aktivieren",
  "channelsDisableAutostart": "Autostart deaktivieren",
  "storeSearchHint": "Module suchen — Name, Tagline, Tag, Fähigkeit…",
  "storeAskHint": "Was brauchst du? Versuch's mit „ein Modul, das tabellarische Daten liest\" oder tippe einfach einen Begriff.",
  "storeAskSubmit": "Suchen",
  "storeAskAi": "KI fragen",
  "storeAskClear": "Frage zurücksetzen",
  "storeAskAiThinking": "Module werden durchsucht…",
  "storeAskAiUnavailable": "Konfiguriere eine System-AI in den Einstellungen, um Fragen in normaler Sprache zu stellen.",
  "storeAskNoMatches": "Keine Treffer — Frage verfeinern oder im Grid unten stöbern.",
  "storeAskAnswerLabel": "KI-Vorschlag",
  "storeAskAnswerWhy": "Warum es passt",
  "storeAskMatchPill": "Treffer",
  "storeFilterLabel": "Filter",
  "storeFilterActiveCount": "{n} aktiv",
  "@storeFilterActiveCount": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "storeFilterReset": "Filter zurücksetzen",
  "storeFilterApply": "Fertig",
  "storeFilterStatusGroup": "Status",
  "storeFilterSourceGroup": "Quelle",
  "storeFilterInstalledGroup": "Nur installierte zeigen",
  "storeFeatured": "EMPFOHLEN",
  "storeFeaturedHint": "kuratierte Auswahl · klicken für Details",
  "storeNoMatches": "Keine Treffer",
  "storeNoMatchesHint": "Filter anpassen oder Suche leeren, um alle Einträge zu sehen.",
  "storeClearFilters": "Filter zurücksetzen",
  "storeStatusAll": "Alle",
  "storeStatusPublished": "stabil",
  "storeStatusAlpha": "experimentell",
  "storeStatusPlanned": "geplant",
  "storeInstalledOnly": "Installiert",
  "storeCategoryLabel": "Kategorie",
  "storeCategoryAll": "Alle Kategorien",
  "storeCategoryBridge": "Verbindungen",
  "storeCategoryDebug": "Beispiele",
  "storeCategoryText": "Text",
  "storeCategoryLlm": "KI-Modelle",
  "storeCategorySystem": "System",
  "storeCategoryAuth": "Authentifizierung",
  "storeCategoryStorage": "Speicher",
  "storeCategoryChannel": "Kanäle",
  "storeCategoryWeb": "Web",
  "storeCategoryOrchestrator": "Orchestrierung",
  "storeNResults": "{n} Treffer",
  "@storeNResults": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "storeReloadTooltip": "Aktualisieren",
  "storesManagerButton": "Store hinzufügen",
  "storesManagerTitle": "Module-Stores",
  "storesManagerIntro": "Der Hub führt die Module aller Stores unten zu einem Index zusammen. Füge die Index-URL eines Stores hinzu, damit seine Module hier installierbar werden.",
  "storesManagerAddSection": "Store hinzufügen",
  "storesManagerNameLabel": "Name",
  "storesManagerUrlLabel": "Index-URL (https:// oder file://)",
  "storesManagerAddAction": "Hinzufügen",
  "storesManagerBundled": "{count} Module · gebündelt",
  "storesManagerModuleCount": "{count} Module",
  "storesManagerAddFailed": "Store konnte nicht hinzugefügt werden",
  "storesManagerRemoveFailed": "Store konnte nicht entfernt werden",
  "storesManagerSuggested": "Vorgeschlagene Stores",
  "storesManagerAddShort": "Hinzufügen",
  "storesManagerPinnedKeyLabel": "Angepinnter Public-Key — PEM (optional)",
  "storesManagerPinnedKeyHint": "Signierte Module dieses Stores werden gegen diesen Key geprüft statt gegen den eingebauten Vendor-Key. Füge einen PEM-Public-Key ein.",
  "storesManagerNotAvailable": "Noch nicht verfügbar",
  "storesManagerNotAvailableHint": "Der Anbieter hat diesen Store-Index noch nicht veröffentlicht. Sobald er das tut, ist er installierbar.",
  "storesSuggestedReclaimDesc": "Recl∆Im — Module für Rechts- und Pflichten-Reform-Mapping",
  "storeTodayBadge": "HEUTE",
  "storeTodayDeck": "Von der Ch∆In-Redaktion",
  "storeTodayDismissTooltip": "Für diese Sitzung ausblenden",
  "storePillInstalled": "installiert",
  "storePillUpdate": "Update",
  "storeUpdateButton": "Update auf {version}",
  "@storeUpdateButton": {
    "placeholders": {
      "version": {
        "type": "String"
      }
    }
  },
  "storeUpdateTooltip": "Installiert {installed} — Store bietet v{best}",
  "@storeUpdateTooltip": {
    "placeholders": {
      "installed": {
        "type": "String"
      },
      "best": {
        "type": "String"
      }
    }
  },
  "storeNoTagline": "(keine Beschreibung)",
  "storeUninstallTitle": "Modul deinstallieren?",
  "storeUninstallBody": "Entfernt {name} aus diesem Hub. Flows, die es verwenden, schlagen beim nächsten Lauf fehl.",
  "@storeUninstallBody": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "storeInstalledToast": "{name} v{version} installiert.",
  "@storeInstalledToast": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "version": {
        "type": "String"
      }
    }
  },
  "storeInstallFailedToast": "Installation fehlgeschlagen: {error}",
  "@storeInstallFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "storeUninstalledToast": "{name} v{version} deinstalliert.",
  "@storeUninstalledToast": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "version": {
        "type": "String"
      }
    }
  },
  "storeUninstallFailedToast": "Deinstallation fehlgeschlagen: {error}",
  "@storeUninstallFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "storeOpenBrowserFailed": "Browser konnte nicht geöffnet werden: {error}",
  "@storeOpenBrowserFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "storeSectionTags": "Tags",
  "storeSectionRequiredCapabilities": "Erforderliche Fähigkeiten",
  "storeSectionRequiredHostServices": "Erforderliche Host-Dienste",
  "storeSectionScreenshots": "Screenshots",
  "storeSectionDocumentation": "Dokumentation",
  "storeSectionSource": "Quelle",
  "storeSectionPermissions": "Deklarierte Berechtigungen",
  "storeSectionDirectory": "Modul-Verzeichnis",
  "storeSectionPermissionsNone": "(keine — reines Berechnungsmodul)",
  "storeInstallingButton": "Installiere…",
  "storeNotInstallable": "Nicht installierbar",
  "storeNotInstallableTooltip": "Status „{status}\" — Installations-Pfad noch nicht verdrahtet.",
  "@storeNotInstallableTooltip": {
    "placeholders": {
      "status": {
        "type": "String"
      }
    }
  },
  "storeInstallProgressTitle": "Installation von {name}",
  "@storeInstallProgressTitle": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "storeInstallProgressBody": "Holen, verifizieren, entpacken…",
  "storeLoadDocs": "Dokumentation laden",
  "storeDocsHint": "README inline gerendert; nutzt das Registry-Token des Hubs, falls nötig.",
  "storeDocsFetching": "README wird geladen…",
  "storeOpenRepoButton": "Repository im Browser öffnen",
  "storeDocsErrorNotFound": "Dieses Modul ist nicht im Store-Index des Hubs enthalten.",
  "storeDocsErrorNoDocs": "Für dieses Modul ist keine Repository-URL hinterlegt.",
  "storeDocsErrorAuth": "Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze CHAIN_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.",
  "storeDocsErrorNetwork": "Netzwerkfehler beim Laden des README. {detail}",
  "@storeDocsErrorNetwork": {
    "placeholders": {
      "detail": {
        "type": "String"
      }
    }
  },
  "storeDocsErrorParse": "README ist kein gültiges UTF-8.",
  "storeDocsErrorGeneric": "README konnte nicht geladen werden.",
  "storeSourceLabel": "Quelle",
  "storeSourceAll": "Alle Quellen",
  "storeSourceNative": "Nativ",
  "storeSourceMcp": "MCP",
  "storeSourceN8n": "n8n",
  "storeProvenanceNative": "nativ",
  "storeProvenanceMcp": "mcp · {provider}",
  "@storeProvenanceMcp": {
    "placeholders": {
      "provider": {
        "type": "String"
      }
    }
  },
  "storeProvenanceN8n": "n8n · {provider}",
  "@storeProvenanceN8n": {
    "placeholders": {
      "provider": {
        "type": "String"
      }
    }
  },
  "storeRecommendedTitle": "Öffentliche Quelle hinzufügen — ein Klick",
  "storeRecommendedBody": "Kuratierte MCP-Server über HTTPS erreichbar. Kein Subprozess, kein API-Key, kein Node. Föderierte Fähigkeiten erscheinen sofort im Store.",
  "storeRecommendedAddTooltip": "Hinzufügen und entdecken",
  "storeRecommendedAdding": "Wird hinzugefügt…",
  "storeRecommendedDeepWikiTagline": "GitHub-Repo-Doku-Suche (KI-gestützt)",
  "storeRecommendedSemgrepTagline": "Security-Scanning für Code-Schwachstellen",
  "storeProviderAddedToast": "{name} hinzugefügt — {n} {n, plural, =1{föderierte Fähigkeit} other{föderierte Fähigkeiten}}.",
  "@storeProviderAddedToast": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "n": {
        "type": "int"
      }
    }
  },
  "storeProviderAddedZeroToast": "{name} ist eingetragen, aber der Server hat noch keine Fähigkeiten geliefert. Öffne Einstellungen → MCP-Clients, um Discovery erneut zu versuchen oder den Server zu prüfen.",
  "@storeProviderAddedZeroToast": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "storeProviderAddFailed": "{name} konnte nicht hinzugefügt werden: {error}",
  "@storeProviderAddFailed": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "error": {
        "type": "String"
      }
    }
  },
  "auditTitle": "Protokoll",
  "auditNoEvents": "Noch keine Ereignisse",
  "auditNoEventsHint": "Starte einen Flow, um den Audit-Stream zu füllen.\nEreignisse erscheinen innerhalb von Sekunden.",
  "auditFilterAll": "alle",
  "auditFilterFlow": "Flow",
  "auditFilterStep": "Step",
  "auditFilterModule": "Modul",
  "auditClearLogTooltip": "Protokoll löschen (nur local/dev Kanal)",
  "auditClearedToast": "{n} Ereignisse auf Kanal „{channel}\" gelöscht. Kette mit Marker neu geseedet.",
  "@auditClearedToast": {
    "placeholders": {
      "n": {
        "type": "int"
      },
      "channel": {
        "type": "String"
      }
    }
  },
  "auditClearFailed": "Löschen fehlgeschlagen: {detail}",
  "@auditClearFailed": {
    "placeholders": {
      "detail": {
        "type": "String"
      }
    }
  },
  "auditExplain": "Erklären",
  "auditReask": "Neu fragen",
  "auditAsking": "Frage läuft…",
  "auditSystemAi": "SYSTEM-AI",
  "auditCachedPill": "gecacht",
  "auditOriginalLatency": "ursprünglich {ms} ms",
  "@auditOriginalLatency": {
    "placeholders": {
      "ms": {
        "type": "int"
      }
    }
  },
  "auditLatency": "{ms} ms",
  "@auditLatency": {
    "placeholders": {
      "ms": {
        "type": "int"
      }
    }
  },
  "auditRegenerateTooltip": "Neu generieren — Cache überspringen, Modell erneut fragen",
  "auditLiveStatus": "live · Abfrage alle 2s · {n} {n, plural, =1{Ereignis} other{Ereignisse}}",
  "@auditLiveStatus": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "auditDisconnected": "getrennt · {error}",
  "@auditDisconnected": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "auditHashChainVerified": "Hash-Kette verifiziert",
  "auditDetailHeader": "DETAIL",
  "auditAskingFull": "Frage an die konfigurierte System-AI läuft…",
  "auditFixLabel": "FIX",
  "auditCachedTooltipKnown": "Aus dem lokalen Cache geliefert. Ursprünglich erzeugt am {at}{hits}.",
  "@auditCachedTooltipKnown": {
    "placeholders": {
      "at": {
        "type": "String"
      },
      "hits": {
        "type": "String"
      }
    }
  },
  "auditCachedTooltipUnknown": "Aus dem lokalen Cache geliefert. Ursprünglicher Zeitpunkt unbekannt{hits}.",
  "@auditCachedTooltipUnknown": {
    "placeholders": {
      "hits": {
        "type": "String"
      }
    }
  },
  "auditCachedTooltipHits": " · {n} Treffer",
  "@auditCachedTooltipHits": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "auditConfigureSystemAi": "System-AI unter Einstellungen konfigurieren (Cmd+,)",
  "auditClearDialogTitle": "Audit-Log löschen?",
  "auditClearDialogBody": "Löscht jedes Audit-Event auf dem aktiven Kanal und seedet einen neuen chain.reset-Marker mit Prüfer und Begründung. Auf beta / production verweigert. Nicht umkehrbar.",
  "auditClearReviewerLabel": "Prüfer",
  "auditClearReasonLabel": "Begründung (im chain.reset-Marker festgehalten)",
  "auditClearReasonHelper": "Erforderlich — Auditoren werden das lesen.",
  "auditClearLogButton": "Log löschen",
  "modulesTitle": "Module",
  "modulesNoneTitle": "Noch keine Module",
  "modulesNoneHint": "`chain install <capability-name>` ausführen oder ~/.chain/modules/ prüfen.",
  "modulesReloadTooltip": "Aktualisieren",
  "modulesRecentActivity": "LETZTE AKTIVITÄT",
  "modulesRecentActivityHint": "letzte {n} install/uninstall-Ereignisse aus dem Audit-Log",
  "@modulesRecentActivityHint": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "modulesActivityInstalled": "installiert",
  "modulesActivityUninstalled": "deinstalliert",
  "modulesCapabilitiesLabel": "Fähigkeiten",
  "modulesUninstallTitle": "Modul deinstallieren?",
  "modulesUninstallBody": "Entfernt {name} v{version} von diesem Hub. Flows, die es verwenden, schlagen beim nächsten Lauf fehl. Ein `module.uninstalled`-Audit-Event wird festgehalten.",
  "@modulesUninstallBody": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "version": {
        "type": "String"
      }
    }
  },
  "modulesUninstalledToast": "{name} v{version} deinstalliert.",
  "@modulesUninstalledToast": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "version": {
        "type": "String"
      }
    }
  },
  "modulesUninstallFailed": "Deinstallation fehlgeschlagen: {error}",
  "@modulesUninstallFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "modulesUninstalling": "Wird deinstalliert…",
  "moduleSheetFailedToLoad": "Laden fehlgeschlagen: {error}",
  "@moduleSheetFailedToLoad": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "moduleSheetCapabilities": "Fähigkeiten",
  "moduleSheetPermissions": "Deklarierte Berechtigungen",
  "moduleSheetNoPermissions": "(keine — reines Berechnungsmodul)",
  "flowsTitle": "Flows",
  "flowsReloadTooltip": "Aktualisieren",
  "flowsNoneTitle": "Keine gespeicherten Flows",
  "flowsNoneHint": "Flow speichern mit `chain admin flows save <name> <flow.yaml>`, dann taucht er hier auf.",
  "flowsRunDialogTitle": "{name} ausführen",
  "@flowsRunDialogTitle": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "flowsRunDialogBody": "Pro deklariertem Input ein Feld. Bytes-Inputs öffnen einen Datei-Picker; alle anderen sind Klartext. Der Starten-Button aktiviert sich, wenn alle Pflichtfelder gefüllt sind.",
  "flowsLoadingDefinition": "Inputs werden geladen…",
  "flowsDefinitionFailed": "Flow-Definition konnte nicht geladen werden",
  "flowsNoInputs": "Dieser Flow deklariert keine Inputs. Starten klicken, um loszulegen.",
  "flowsTypeBytesPick": "Datei wählen…",
  "flowsTypeBytesChange": "Datei ändern",
  "flowsTypeBytesNoFile": "Keine Datei ausgewählt",
  "flowsTypeBytesSize": "{n} Bytes",
  "@flowsTypeBytesSize": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "flowsRunErrorTitle": "Flow-Lauf fehlgeschlagen",
  "flowsFileReadFailed": "„{path}\" konnte nicht gelesen werden: {error}",
  "@flowsFileReadFailed": {
    "placeholders": {
      "path": {
        "type": "String"
      },
      "error": {
        "type": "String"
      }
    }
  },
  "flowsMissingModulesLabel": "Braucht:",
  "flowsRunDisabledTooltip": "Erst die fehlenden Module installieren.",
  "flowsInstallAllButton": "Alle installieren ({n})",
  "@flowsInstallAllButton": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "flowsInstallPillTooltip": "Zum Installieren klicken",
  "flowsInstallDepsTitle": "Abhängigkeiten installieren",
  "flowsInstallDepsBody": "Die fehlenden Module werden der Reihe nach installiert. Vorhandene Installationen bleiben unberührt.",
  "flowsInstallStatusPending": "Wartet",
  "flowsInstallStatusInstalling": "Wird installiert…",
  "flowsInstallStatusDone": "Installiert v{version}",
  "@flowsInstallStatusDone": {
    "placeholders": {
      "version": {
        "type": "String"
      }
    }
  },
  "flowsInstallStatusFailed": "Fehlgeschlagen",
  "flowsInstallStatusFailedDetail": "{error}",
  "@flowsInstallStatusFailedDetail": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "flowsInstallDepsAllDone": "Alle Abhängigkeiten installiert.",
  "flowsInstallDepsAnyFailed": "{ok} installiert, {failed} fehlgeschlagen.",
  "@flowsInstallDepsAnyFailed": {
    "placeholders": {
      "ok": {
        "type": "int"
      },
      "failed": {
        "type": "int"
      }
    }
  },
  "flowsInstallAuthWallButton": "Registry-Token einfügen",
  "flowsOpenInEditorTooltip": "Im Studio-Flow-Editor öffnen",
  "flowsOpenInEditorFailed": "Konnte Datei nicht öffnen: {error}",
  "@flowsOpenInEditorFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "registryCredentialsHeader": "REGISTRY-ZUGANGSDATEN",
  "registryCredentialsBlurb": "Token zum Herunterladen von .fai-Modulen aus einer Registry mit Anmeldepflicht (Forgejo, private GitHub-Repos). Gespeichert in ~/.chain/registry-token, Modus 0600. Die Umgebungsvariable CHAIN_REGISTRY_TOKEN hat weiterhin Vorrang, wenn gesetzt.",
  "registryTokenStatusConfigured": "Konfiguriert ({chars} Zeichen)",
  "@registryTokenStatusConfigured": {
    "placeholders": {
      "chars": {
        "type": "int"
      }
    }
  },
  "registryTokenStatusNotSet": "Nicht gesetzt",
  "registryTokenFieldLabel": "Token",
  "registryTokenFieldHint": "Forgejo- oder GitHub-PAT einfügen",
  "registryTokenSaveButton": "Speichern",
  "registryTokenClearButton": "Entfernen",
  "registryTokenStorageHint": "Lokal gespeichert in ~/.chain/registry-token. Wird nie an einen Remote-Dienst übertragen.",
  "registryTokenSavedToast": "Registry-Token gespeichert.",
  "registryTokenClearedToast": "Registry-Token entfernt.",
  "registryTokenSaveFailedToast": "Speichern fehlgeschlagen: {error}",
  "@registryTokenSaveFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "hubAuthTokenHeader": "HUB-AUTHENTIFIZIERUNG",
  "hubAuthTokenBlurb": "Bearer-Token für die Studio-Anbindung an einen Hub mit aktivierter auth.tokens-Konfiguration (RBAC Level 2). Gespeichert in ~/.chain/hub-auth-token, Modus 0600. Studio sendet ihn als Authorization: Bearer bei jedem gRPC-Aufruf.",
  "hubAuthTokenStatusConfigured": "Eingerichtet ({chars} Zeichen)",
  "@hubAuthTokenStatusConfigured": {
    "placeholders": {
      "chars": {
        "type": "int"
      }
    }
  },
  "hubAuthTokenStatusNotSet": "Nicht gesetzt (anonym)",
  "hubAuthTokenFieldLabel": "Token",
  "hubAuthTokenFieldHint": "Token aus dem auth.tokens-Eintrag des Hub-Operators einfügen",
  "hubAuthTokenSaveButton": "Speichern",
  "hubAuthTokenClearButton": "Entfernen",
  "hubAuthTokenStorageHint": "Lokal gespeichert in ~/.chain/hub-auth-token. Studio verbindet nach dem Speichern automatisch neu, der Token wirkt sofort.",
  "hubAuthTokenSavedToast": "Hub-Token gespeichert.",
  "hubAuthTokenClearedToast": "Hub-Token entfernt.",
  "hubAuthTokenSaveFailedToast": "Speichern fehlgeschlagen: {error}",
  "@hubAuthTokenSaveFailedToast": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "storeAdvisoryVersionTooltip": "Föderierter Upstream-Dienst — Version ist Richtwert; der Upstream kann ohne Versionsanhebung Kompatibilität brechen.",
  "uninstallVersionPickerTitle": "Version zum Entfernen wählen",
  "uninstallVersionPickerBody": "Mehrere Versionen von `{module}` sind parallel installiert. Wähle genau die Version aus, die entfernt werden soll — die anderen bleiben bestehen.",
  "@uninstallVersionPickerBody": {
    "placeholders": {
      "module": {
        "type": "String"
      }
    }
  },
  "uninstallVersionPickerContinue": "Weiter",
  "defaultScopeHeader": "STANDARD-SCOPE",
  "defaultScopeBlurb": "Geordnete Liste von Publisher-Segmenten, die der Hub konsultiert, wenn ein Flow eine Capability ohne explizites `<provider>/`-Präfix benennt. Erster Treffer gewinnt — die Segmente, die euer Team am häufigsten nutzt, gehören nach oben. Katalog-bekannte Publisher erscheinen als Chips; private Segmente lassen sich frei eintragen.",
  "defaultScopeAddLabel": "Publisher-Segment hinzufügen",
  "defaultScopeAddHint": "z.B. acme.team",
  "defaultScopeAddButton": "Hinzufügen",
  "defaultScopeSuggestions": "Katalog-Vorschläge:",
  "defaultScopeSavedToast": "Standard-Scope aktualisiert.",
  "defaultScopeLoadFailed": "Standard-Scope konnte nicht geladen werden.",
  "defaultScopeNonEmptyError": "Standard-Scope darf nicht leer sein — mindestens ein Segment muss erhalten bleiben.",
  "maintenanceHeader": "HUB-WARTUNG",
  "maintenanceResetBlurb": "Operator-Zustand zurücksetzen und mit einem sauberen Hub neu starten. Stoppt jeden laufenden Daemon, sichert ~/.chain/ atomar in ein Backup, legt es dann neu an — Binary, Channel-Pointer, MCP-/n8n-/System-AI-Konfiguration und Registry-Token bleiben erhalten. Wiederherstellen durch Zurückverschieben des Backup-Ordners.",
  "maintenanceKeepModulesTitle": "Installierte Module behalten",
  "maintenanceKeepModulesSubtitle": "Standardverhalten löscht ~/.chain/modules/, damit eine frische Installation den Modul-Bezugspfad end-to-end verifizieren kann.",
  "maintenanceKeepDataTitle": "Protokoll + gespeicherte Flows behalten",
  "maintenanceKeepDataSubtitle": "Standardverhalten löscht ~/.chain/data/, damit die Audit-Kette mit einer neuen Genesis startet und die mitgelieferten Sample-Flows beim ersten Daemon-Start neu importiert werden.",
  "maintenanceResetButton": "Hub zurücksetzen",
  "maintenanceResetInProgress": "Zurücksetzen…",
  "maintenanceResetConfirmTitle": "Hub zurücksetzen?",
  "maintenanceResetConfirmBody": "Stoppt jeden Daemon, verschiebt ~/.chain/ in ein Backup mit Zeitstempel und startet sauber neu. Das Backup ist vollständig wiederherstellbar. Fortfahren?",
  "maintenanceResetConfirmButton": "Zurücksetzen",
  "welcomeChecklistAllSetTitle": "Du bist eingerichtet.",
  "welcomeChecklistAllSetBody": "Drei Stränge, an denen du als nächstes ziehen kannst:",
  "welcomeChecklistNextAuditTitle": "Audit-Log lesen",
  "welcomeChecklistNextAuditBody": "Jede Installation, jeder Flow-Lauf, jede Freigabe landet im hash-verketteten Log. Im Protokoll-Tab siehst du, was dein Hub gemacht hat.",
  "welcomeChecklistNextAuditButton": "Protokoll öffnen",
  "welcomeChecklistNextTodayTitle": "Daily-Today-Story einrichten",
  "welcomeChecklistNextTodayBody": "tools/today/propose.sh per Cron laufen lassen und die Editorial-Karte im Store füllt sich mit operator-kuratierten Stories.",
  "welcomeChecklistNextTodayButton": "Today-Doku öffnen",
  "welcomeChecklistNextModuleTitle": "Eigenes Modul bauen",
  "welcomeChecklistNextModuleBody": "Mit `chain new module <name>` ein Rust+WASM-Scaffold erzeugen. Das module-sdk übernimmt die WIT-Plumbing; du schreibst nur ein typisiertes invoke.",
  "welcomeChecklistNextModuleButton": "Doku lesen",
  "auditGroupToday": "HEUTE",
  "auditGroupYesterday": "GESTERN",
  "auditGroupThisWeek": "DIESE WOCHE",
  "auditGroupOlder": "ÄLTER",
  "auditEventViewFlowRun": "Flow-Lauf ansehen",
  "auditFlowRunDialogTitle": "Flow-Lauf · {flow}",
  "@auditFlowRunDialogTitle": {
    "placeholders": {
      "flow": {
        "type": "String"
      }
    }
  },
  "auditFlowRunDialogSubtitle": "{n} {n, plural, =1{Ereignis} other{Ereignisse}} für Lauf {execution}",
  "@auditFlowRunDialogSubtitle": {
    "placeholders": {
      "n": {
        "type": "int"
      },
      "execution": {
        "type": "String"
      }
    }
  },
  "approvalsSelectAll": "Alle wählen",
  "approvalsClearSelection": "Auswahl aufheben",
  "approvalsBatchSelected": "{n} ausgewählt",
  "@approvalsBatchSelected": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "approvalsBatchApprove": "Alle freigeben",
  "approvalsBatchReject": "Alle ablehnen",
  "approvalsBatchApproveDoneToast": "{n} Freigaben erteilt.",
  "@approvalsBatchApproveDoneToast": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "approvalsBatchRejectDoneToast": "{n} Freigaben abgelehnt.",
  "@approvalsBatchRejectDoneToast": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "approvalsBatchPartialFailure": "{ok} erledigt, {failed} fehlgeschlagen.",
  "@approvalsBatchPartialFailure": {
    "placeholders": {
      "ok": {
        "type": "int"
      },
      "failed": {
        "type": "int"
      }
    }
  },
  "flowsRunButton": "Starten",
  "flowsRunningTitle": "{name} läuft",
  "@flowsRunningTitle": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "flowsResultTitle": "{name} — Ergebnis",
  "@flowsResultTitle": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "flowsErrorTitle": "{name} — fehlgeschlagen",
  "@flowsErrorTitle": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "flowsRunning": "Flow läuft…",
  "flowsNoOutputs": "Flow abgeschlossen ohne deklarierte Outputs.",
  "errGeneric": "Da ist etwas schiefgegangen.",
  "errInvalidArgument": "Ungültige Eingabe.",
  "errInvalidArgumentHint": "Werte im Formular prüfen und erneut versuchen.",
  "errNotFound": "Nicht gefunden.",
  "errNotFoundHint": "Das Angefragte ist nicht hier — entweder entfernt oder nie existiert.",
  "errAlreadyExists": "Existiert bereits.",
  "errPermissionDenied": "Berechtigung verweigert.",
  "errPermissionDeniedHint": "Die Operator-Policy des Hubs blockiert diese Aktion. `~/.chain/config.yaml` prüfen.",
  "errFailedPrecondition": "Setup-Problem hat das blockiert.",
  "errFailedPreconditionHint": "Der Hub konnte nicht weiter, weil etwas Vorausgesetztes fehlt. Details unten erklären was.",
  "errInternal": "Unerwarteter interner Fehler.",
  "errInternalHint": "Hub-Logs unter `~/.chain/logs/` prüfen. Wenn das öfter passiert, bitte melden.",
  "errUnavailable": "Hub nicht erreichbar.",
  "errUnavailableHint": "Sicherstellen, dass `chain serve` (oder `chain daemon start`) läuft und der Daemon-Endpunkt zu Studios Einstellungen passt.",
  "errUnauthenticated": "Authentifizierung erforderlich.",
  "errUnauthenticatedHint": "`CHAIN_REGISTRY_TOKEN` setzen oder in den Einstellungen anmelden, dann erneut versuchen.",
  "errCopyDetail": "Detail kopieren",
  "errDetailCopied": "Detail in die Zwischenablage kopiert.",
  "flowsOutputUnknown": "Unbekannter Output-Payload-Typ.",
  "flowsOutputBytesUnknownMime": "Binärdaten",
  "flowsOutputSaveAs": "Speichern unter…",
  "flowsOutputSaveAsTitle": "Flow-Output speichern",
  "flowsOutputSavedAt": "Gespeichert: {path}",
  "@flowsOutputSavedAt": {
    "placeholders": {
      "path": {
        "type": "String"
      }
    }
  },
  "flowsOutputSaveFailed": "Speichern fehlgeschlagen: {error}",
  "@flowsOutputSaveFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "flowsOutputOpen": "Öffnen",
  "flowsOutputOpenFailed": "Öffnen fehlgeschlagen: {error}",
  "@flowsOutputOpenFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "approvalsTitle": "Freigaben",
  "approvalsTabPending": "Offen",
  "approvalsTabHistory": "Verlauf",
  "approvalsInboxZero": "Posteingang leer",
  "approvalsInboxHint": "Alles erledigt. Neue `system.approval@^0`-Schritte landen automatisch hier.",
  "approvalsReloadTooltip": "Aktualisieren",
  "approvalsPillPending": "offen",
  "approvalsPillApproved": "freigegeben",
  "approvalsPillRejected": "abgelehnt",
  "approvalsPillExpired": "abgelaufen",
  "approvalsPayloadPreview": "ZU PRÜFENDE DATEN",
  "approvalsNoPayload": "Keine Daten zum Prüfen angehängt. Der system.approval-Schritt des Flows bestimmt über sein \"show:\"-Feld, was angezeigt wird — setze es, um die Daten hinter dieser Entscheidung sichtbar zu machen.",
  "approvalsRequestFallback": "Freigabe für diesen Schritt erforderlich",
  "approvalsFlowStepMeta": "Flow: {flow} · Schritt: {step}",
  "approvalsApproveButton": "Freigeben",
  "approvalsRejectButton": "Ablehnen",
  "approvalsRejectDialogTitle": "Freigabe ablehnen",
  "approvalsRejectReasonLabel": "Begründung (im Audit-Log festgehalten)",
  "approvalsApprovedToast": "freigegeben · {flow} › {step}",
  "@approvalsApprovedToast": {
    "placeholders": {
      "flow": {
        "type": "String"
      },
      "step": {
        "type": "String"
      }
    }
  },
  "approvalsRejectedToast": "abgelehnt · {flow} › {step}",
  "@approvalsRejectedToast": {
    "placeholders": {
      "flow": {
        "type": "String"
      },
      "step": {
        "type": "String"
      }
    }
  },
  "approvalsApproveFailed": "Freigabe fehlgeschlagen: {error}",
  "@approvalsApproveFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "approvalsRejectFailed": "Ablehnung fehlgeschlagen: {error}",
  "@approvalsRejectFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "approvalsHistoryEmpty": "Noch kein Verlauf",
  "approvalsHistoryEmptyHint": "Entschiedene Freigaben (freigegeben / abgelehnt / abgelaufen) erscheinen hier.\nDas Audit-Log enthält den vollständigen hash-verketteten Datensatz.",
  "approvalsDialogDecided": "entschieden",
  "approvalsDialogCreated": "erstellt",
  "approvalsDialogReason": "Begründung",
  "approvalsDialogPrompt": "PROMPT",
  "approvalsExpiresIn": "{minutes}m",
  "@approvalsExpiresIn": {
    "placeholders": {
      "minutes": {
        "type": "int"
      }
    }
  },
  "approvalsExpiresInHours": "{hours}h",
  "@approvalsExpiresInHours": {
    "placeholders": {
      "hours": {
        "type": "int"
      }
    }
  },
  "doctorTitle": "Diagnose",
  "doctorSummaryModules": "Module",
  "doctorSummaryApprovals": "Freigaben",
  "doctorSummaryAudit": "Protokoll",
  "doctorSummaryServices": "Dienste",
  "doctorSummaryCapabilities": "{n} Fähigkeiten",
  "@doctorSummaryCapabilities": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "doctorSummaryPending": "offen",
  "doctorSummaryChain": "{verified}/{total} Kette",
  "@doctorSummaryChain": {
    "placeholders": {
      "verified": {
        "type": "int"
      },
      "total": {
        "type": "int"
      }
    }
  },
  "doctorSummaryDeclared": "deklariert",
  "doctorModulesPanelSummary": "{n} Module · {m} Fähigkeiten",
  "@doctorModulesPanelSummary": {
    "placeholders": {
      "n": {
        "type": "int"
      },
      "m": {
        "type": "int"
      }
    }
  },
  "doctorApprovalsNone": "Keine offenen Freigaben",
  "doctorApprovalsCount": "{n, plural, =1{1 Freigabe wartet auf Prüfung} other{{n} Freigaben warten auf Prüfung}}",
  "@doctorApprovalsCount": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "doctorApprovalsAttentionPill": "wichtig",
  "doctorServicesEmpty": "Keine Host-Dienste deklariert",
  "doctorServicesEmptyHint": "in ~/.chain/config.yaml unter services: hinzufügen",
  "doctorPillLoaded": "geladen",
  "doctorPillEmpty": "leer",
  "doctorRecheckTooltip": "Erneut prüfen",
  "doctorEventLogSection": "Audit-Log",
  "doctorModulesApprovalsSection": "Module & Freigaben",
  "doctorHostServicesSection": "Host-Dienste",
  "doctorDaemonFilesSection": "Daemon-Dateien",
  "doctorDaemonControlSection": "Daemon-Steuerung",
  "doctorChainIntact": "Hash-Kette intakt",
  "doctorChainIntactDetail": "{n} Ereignisse · prev_event_sha256 lückenlos verifiziert",
  "@doctorChainIntactDetail": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "doctorChainTampered": "Manipulation erkannt",
  "doctorChainTamperedDetail": "{verified} von {total} verifiziert vor Mismatch bei {id}",
  "@doctorChainTamperedDetail": {
    "placeholders": {
      "verified": {
        "type": "int"
      },
      "total": {
        "type": "int"
      },
      "id": {
        "type": "String"
      }
    }
  },
  "doctorChainPillOk": "WORM-1",
  "doctorChainPillTamper": "MANIPULIERT",
  "doctorVerifyNow": "Jetzt prüfen",
  "doctorRestart": "Neustart",
  "doctorStart": "Starten",
  "doctorStop": "Stoppen",
  "doctorStatusAction": "Status",
  "doctorRunningOn": "Läuft auf {name}: {endpoint}",
  "@doctorRunningOn": {
    "placeholders": {
      "name": {
        "type": "String"
      },
      "endpoint": {
        "type": "String"
      }
    }
  },
  "doctorStoppedOn": "{name}-Daemon gestoppt",
  "@doctorStoppedOn": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "doctorStatusUnknown": "Daemon-Status: …",
  "doctorPillRunning": "läuft",
  "doctorPillStopped": "gestoppt",
  "doctorDaemonControlHint": "Studio ruft das Platform-Binary auf — entspricht `chain daemon …`, sodass CLI und UI im Gleichschritt bleiben.",
  "doctorDaemonControlWorking": "Wird ausgeführt…",
  "doctorPathLog": "Log",
  "doctorPathConfig": "Konfig",
  "doctorPathDb": "Audit-DB",
  "doctorPathModules": "Module-Verzeichnis",
  "doctorPathFlows": "Flow-Verzeichnis",
  "doctorPathPid": "PID-Datei",
  "doctorPathsEmpty": "Daemon hat keine Datei-Pfade gemeldet. Hub aktualisieren via `chain daemon restart`.",
  "doctorOpenError": "Konnte nicht öffnen: {detail}",
  "@doctorOpenError": {
    "placeholders": {
      "detail": {
        "type": "String"
      }
    }
  },
  "doctorUpdateAvailable": "Update verfügbar — {version}",
  "@doctorUpdateAvailable": {
    "placeholders": {
      "version": {
        "type": "String"
      }
    }
  },
  "doctorUpdateBody": "Kanal {channel} bietet jetzt {version}. Per Button anwenden — Studio ruft `chain update apply --channel {channel}` auf.",
  "@doctorUpdateBody": {
    "placeholders": {
      "channel": {
        "type": "String"
      },
      "version": {
        "type": "String"
      }
    }
  },
  "doctorUpdateUnreachable": "Release-Host nicht erreichbar",
  "doctorUpdateUnreachableBody": "Release-Feed für {channel} konnte nicht erreicht werden.",
  "@doctorUpdateUnreachableBody": {
    "placeholders": {
      "channel": {
        "type": "String"
      }
    }
  },
  "doctorReleaseNotes": "Notes: {url}",
  "@doctorReleaseNotes": {
    "placeholders": {
      "url": {
        "type": "String"
      }
    }
  },
  "doctorPillNew": "neu",
  "doctorPillOffline": "offline",
  "doctorApplyUpdate": "Update anwenden",
  "doctorApplying": "Wird angewendet…",
  "doctorApplyDone": "Update angewendet. Studio neu starten, um die neue Daemon-Version zu sehen.",
  "mcpHeader": "MCP-CLIENTS",
  "mcpHint": "Externe MCP-Server bringen ihre Tools als `mcp.<server>.<tool>` Fähigkeiten ein. Einmal konfigurieren, im Store sichtbar.",
  "mcpEmpty": "Keine MCP-Server konfiguriert. + klicken zum Hinzufügen.",
  "n8nHeader": "N8N-ENDPUNKTE",
  "n8nHint": "Aktive n8n-Workflows erscheinen als `n8n.<endpoint>.<slug>` Fähigkeiten. Einmal konfigurieren, im Store sichtbar.",
  "n8nEmpty": "Keine n8n-Endpunkte konfiguriert. + klicken zum Hinzufügen.",
  "hubUnreachable": "Hub nicht erreichbar",
  "hubUnreachableHint": "Hub starten mit `chain serve`.",
  "languageEnglish": "English",
  "languageGerman": "Deutsch",
  "searchHint": "Springe überall hin — Module, Store, Flows, Seiten…",
  "searchIndexing": "Indiziere…",
  "searchNoMatches": "Keine Treffer.",
  "searchHintNavigate": "↑↓ navigieren",
  "searchHintOpen": "Enter öffnen",
  "searchHintClose": "Esc schließen",
  "searchGroupPages": "Seiten",
  "searchGroupModules": "Module",
  "searchGroupStore": "Store",
  "searchGroupFlows": "Flows",
  "searchSettingsLabel": "Einstellungen",
  "searchPageHint": "Seite · ⌘{n}",
  "@searchPageHint": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "searchSettingsHint": "Hub-Endpunkt, Kanäle, System-AI · ⌘;",
  "searchInstalledModuleHint": "installiertes Modul · v{version}",
  "@searchInstalledModuleHint": {
    "placeholders": {
      "version": {
        "type": "String"
      }
    }
  },
  "searchStoreUncategorized": "ohne Kategorie",
  "searchStoreHintWithTagline": "Store · {tagline}",
  "@searchStoreHintWithTagline": {
    "placeholders": {
      "tagline": {
        "type": "String"
      }
    }
  },
  "searchStoreHintWithCategory": "Store · {category}",
  "@searchStoreHintWithCategory": {
    "placeholders": {
      "category": {
        "type": "String"
      }
    }
  },
  "searchSavedFlowHint": "gespeicherter Flow",
  "systemAiTitle": "System-AI",
  "systemAiIntro": "Die hub-interne LLM, die die Plattform selbst für Fehlererklärungen und Operator-Hilfe nutzt. Standardmäßig aus; hier konfigurieren. Siehe docs/architecture/system-ai.md, was über die Leitung geht.",
  "systemAiProviderLabel": "Provider",
  "systemAiEndpointLabel": "Endpunkt-URL (bis /v1)",
  "systemAiApiKeyRequired": "API-Key-Umgebungsvariable (erforderlich)",
  "systemAiApiKeyOptional": "API-Key-Umgebungsvariable (optional)",
  "systemAiApiKeyDisclaimer": "Studio liest oder speichert den Key-Wert nie — nur den Namen der Umgebungsvariable. Der Hub liest `${name}` zur Anfragezeit.",
  "@systemAiApiKeyDisclaimer": {
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "systemAiTestConnection": "Verbindung testen",
  "systemAiTesting": "Teste…",
  "systemAiSave": "Speichern",
  "systemAiPrivacyHeader": "PRIVACY-MODUS",
  "systemAiPrivacyOffLabel": "Aus",
  "systemAiPrivacyOffDesc": "Feature deaktiviert. Keine Anfragen verlassen den Hub.",
  "systemAiPrivacyRedactedLabel": "Redigiert",
  "systemAiPrivacyRedactedDesc": "Nur event_type / error / Modul-Namen. KRITIS-freundlicher Standard.",
  "systemAiPrivacyFullLabel": "Voll",
  "systemAiPrivacyFullDesc": "Enthält das Audit-Detail-JSON (nur Hash — keine Roh-Payloads).",
  "systemAiConnectionOk": "Verbindung ok",
  "systemAiConnectionFailed": "Verbindung fehlgeschlagen",
  "systemAiReplyPrefix": "Antwort: {text}",
  "@systemAiReplyPrefix": {
    "placeholders": {
      "text": {
        "type": "String"
      }
    }
  },
  "systemAiModelLabel": "Modell (erforderlich)",
  "systemAiModelHintFallback": "Modell-Identifier, den der Provider erwartet",
  "systemAiModelHelperBase": "Erforderlich: aus der Liste auswählen (Aktualisieren) oder eintippen.",
  "systemAiModelHelperOllama": "Erforderlich: aus der Liste auswählen (Aktualisieren) oder eintippen. Mit Pull von Ollama herunterladen.",
  "systemAiRefresh": "Aktualisieren",
  "systemAiPull": "Pull",
  "systemAiPulling": "Lade…",
  "systemAiCouldNotListModels": "Modelle konnten nicht aufgelistet werden: {error}",
  "@systemAiCouldNotListModels": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "systemAiNoModelsOllama": "Noch keine Modelle auf dem Ollama-Server. Oben eintippen und Pull klicken.",
  "systemAiNoModelsGeneric": "Provider lieferte keine Modelle.",
  "systemAiSuitabilityRecommended": "empfohlen",
  "systemAiSuitabilityBalanced": "ausgewogen",
  "systemAiSuitabilitySmall": "klein — Qualität evtl. eingeschränkt",
  "systemAiSuitabilityLarge": "groß — langsamer",
  "systemAiSuitabilityHuge": "sehr groß — auf einem Laptop wahrscheinlich zu langsam",
  "systemAiSuitabilityUnknown": "Größe unbekannt",
  "systemAiHwDetected": "Erkannt: {summary}",
  "@systemAiHwDetected": {
    "placeholders": {
      "summary": {
        "type": "String"
      }
    }
  },
  "systemAiHwReviewed": " · Kuratierung geprüft {date}",
  "@systemAiHwReviewed": {
    "placeholders": {
      "date": {
        "type": "String"
      }
    }
  },
  "systemAiLegendRecommended": "empfohlen für diese Hardware{tier}",
  "@systemAiLegendRecommended": {
    "placeholders": {
      "tier": {
        "type": "String"
      }
    }
  },
  "systemAiLegendBalanced": "ausgewogen (4-8B)",
  "systemAiLegendSmallLarge": "klein <3B / groß 9-15B / über Hardware",
  "systemAiLegendHuge": "sehr groß >15B",
  "systemAiLegendUnknown": "Größe unbekannt",
  "systemAiCacheRow": "Cache: {n} {n, plural, =1{gespeicherte Erklärung} other{gespeicherte Erklärungen}}. Identische Prompts treffen den Cache; Modell- oder Privacy-Modus-Wechsel leeren ihn automatisch.",
  "@systemAiCacheRow": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "systemAiCacheClear": "Leeren",
  "systemAiCacheClearedToast": "{n} gespeicherte System-AI-Erklärungen gelöscht.",
  "@systemAiCacheClearedToast": {
    "placeholders": {
      "n": {
        "type": "int"
      }
    }
  },
  "systemAiCacheClearFailed": "Cache-Löschen fehlgeschlagen: {error}",
  "@systemAiCacheClearFailed": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "systemAiPullEmptyError": "Erst eine Modell-ID eintippen (z.B. gemma3:4b).",
  "systemAiPullFailedError": "Pull fehlgeschlagen: {error}",
  "@systemAiPullFailedError": {
    "placeholders": {
      "error": {
        "type": "String"
      }
    }
  },
  "storeProvenanceTemporal": "temporal · {provider}",
  "@storeProvenanceTemporal": {
    "placeholders": {
      "provider": {
        "type": "String"
      }
    }
  },
  "storeSourceTemporal": "Temporal",

  "navFlowEditor": "Editor",
  "flowEditorBackTooltip": "Zurück",
  "flowEditorNew": "Neuer Flow",
  "flowEditorSave": "Speichern",
  "flowEditorRun": "Ausführen",
  "flowEditorRefresh": "Datei-Liste neu laden",
  "flowEditorRunOutput": "LAUF-ERGEBNIS",
  "flowEditorEmptyTitle": "Kein Flow geöffnet",
  "flowEditorEmptyBody": "Wähle links einen aus oder klicke Neuer Flow um einen neuen anzulegen.",
  "flowEditorListEmptyTitle": "Keine gespeicherten Flows",
  "flowEditorListEmptyBody": "Klicke Neuer Flow um aus einer Vorlage zu starten.",
  "flowEditorDiscardTitle": "Ungespeicherte Änderungen verwerfen?",
  "flowEditorDiscardBody": "Beim Wechsel der Datei gehen alle noch nicht gespeicherten Änderungen verloren.",
  "flowEditorDiscardKeep": "Weiterbearbeiten",
  "flowEditorDiscardThrow": "Verwerfen",
  "flowEditorNewDialogTitle": "Neuer Flow",
  "flowEditorNewDialogLabel": "Flow-Name",
  "flowEditorNewDialogHelper": "Kleinbuchstaben, Ziffern, Bindestrich, Unterstrich",
  "flowEditorNewDialogCancel": "Abbrechen",
  "flowEditorNewDialogCreate": "Anlegen",
  "flowEditorNewTemplateComment": "Von Studios Flow-Editor erstellt. Bearbeiten, speichern, ausführen.",
  "@flowEditorNewTemplateComment": {
    "placeholders": {
      "name": {"type": "String"}
    }
  },
  "flowEditorAlreadyExists": "Ein Flow namens \"{name}\" existiert bereits.",
  "@flowEditorAlreadyExists": {
    "placeholders": {
      "name": {"type": "String"}
    }
  },
  "buttonView": "Ansehen",
  "logViewerTitle": "{title} — letzte {count} Zeilen",
  "@logViewerTitle": {
    "placeholders": {
      "title": {"type": "String"},
      "count": {"type": "int"}
    }
  },
  "logViewerEmpty": "Log-Datei ist leer oder existiert noch nicht.",
  "logViewerCopyAll": "Alles kopieren",
  "logViewerOpenExternal": "Im Standardeditor öffnen",
  "logViewerLineCount": "{count, plural, =1{1 Zeile} other{{count} Zeilen}}",
  "@logViewerLineCount": {
    "placeholders": {
      "count": {"type": "int"}
    }
  },
  "doctorPathStudioErrors": "Studio-Fehler",
  "settingsCategoryGeneral": "Allgemein",
  "settingsCategoryAppearance": "Darstellung",
  "settingsCategoryAi": "System-KI",
  "settingsCategoryIntegrations": "Integrationen",
  "settingsCategorySecurity": "Sicherheit",
  "settingsCategoryMaintenance": "Wartung",
  "settingsAiPanelTitle": "System-KI",
  "settingsAiPanelBody": "Operator-verwalteter LLM-Endpunkt, den Studio für die KI-Helfer nutzt (System-KI-Edit, Install-Vorschläge, Doctor-Zusammenfassung). Kein Flow ruft das jemals auf; Module sprechen mit ihrem eigenen LLM.",
  "settingsIntegrationsPanelTitle": "Integrationen",
  "settingsIntegrationsPanelBody": "Externe Tool-Server, deren Capabilities der Hub föderiert. MCP-Server bieten Tool-Endpunkte; n8n-Endpunkte stellen gehostete Workflows bereit.",
  "settingsSecurityPanelTitle": "Sicherheit & Zugangsdaten",
  "settingsSecurityPanelBody": "Tokens, die der Hub für dich verwahrt. Liegen in ~/.chain/ mit Modus 0600; werden nie als Telemetrie versendet.",
  "settingsMaintenancePanelTitle": "Wartung",
  "settingsMaintenancePanelBody": "Destruktive Aktionen, abgesichert durch explizite Bestätigungs-Dialoge. Nutzen z.B. beim Re-Pilot-Testen oder Debuggen.",
  "tooltipMoveUp": "Nach oben",
  "tooltipMoveDown": "Nach unten",
  "tooltipRemove": "Entfernen",
  "daemonActionEnableAutostart": "Autostart aktivieren",
  "daemonActionDisableAutostart": "Autostart deaktivieren",
  "daemonActionRestart": "Daemon neu starten",
  "daemonActionStart": "Daemon starten",
  "daemonActionStop": "Daemon stoppen",
  "daemonActionStatus": "Daemon-Status",
  "daemonActionResultOk": "OK · {label}",
  "@daemonActionResultOk": {
    "placeholders": {
      "label": {"type": "String"}
    }
  },
  "daemonActionResultFailed": "Fehlgeschlagen · {label}",
  "@daemonActionResultFailed": {
    "placeholders": {
      "label": {"type": "String"}
    }
  },
  "addSourceTitle": "Modul-Quelle hinzufügen",
  "addSourceIntro": "`{capability}` ist nicht im öffentlichen Store. Zeig dem Hub eine `.fai`-Bundle-URL oder einen lokalen Bundle-Pfad — der Hub lädt es herunter, prüft (sha256 + Signatur) und installiert.",
  "@addSourceIntro": {
    "placeholders": {
      "capability": {"type": "String"}
    }
  },
  "addSourceField": "URL oder Pfad zum .fai-Bundle",
  "addSourceHint": "https://git.flemming.ai/deine-org/dein-modul/releases/download/v0.1.0/foo-0.1.0.fai",
  "addSourceHowItWorksTitle": "Wie private Module funktionieren",
  "addSourceHowItWorksBody": "Ein Modul ist ein Verzeichnis mit module.yaml + WASM-Artefakt. Zum Teilen: `chain pack <verzeichnis>` baut ein `.fai`-Bundle, das du beliebig hosten kannst (eigene Forgejo / GitHub / S3). Der Hub installiert per URL und prüft die Signatur gegen seinen Trust-Store.\n\nLokal entwickeln? Nimm das CLI — Studio installiert (noch) nicht aus einem unverpackten Verzeichnis:",
  "addSourceCliExample": "chain install --link /pfad/zum/modul",
  "addSourceInstallButton": "Installieren",
  "addSourceCancel": "Abbrechen",
  "installFailed": "Installation fehlgeschlagen: {error}",
  "@installFailed": {
    "placeholders": {
      "error": {"type": "String"}
    }
  },
  "welcomeHubDownTitle": "Der Hub läuft noch nicht",
  "welcomeHubDownBody": "Studio spricht mit einem lokalen Hub — der Engine, die Module lädt und Flows ausführt. Sie ist gerade nicht erreichbar. Starte sie, um loszulegen.",
  "welcomeHubDownStart": "Hub starten",
  "welcomeHubDownStarting": "Wird gestartet …",
  "welcomeHubDownDocsLink": "Klappt der Start nicht? Zur Erste-Schritte-Anleitung",
  "welcomeHubDownEndpoint": "Endpunkt: {endpoint}",
  "@welcomeHubDownEndpoint": {
    "placeholders": {
      "endpoint": {"type": "String"}
    }
  },
  "daemonStartRequested": "Start des Daemons angefordert. Verbinde neu …",
  "daemonStartFailed": "Daemon konnte nicht gestartet werden: {detail}",
  "@daemonStartFailed": {
    "placeholders": {
      "detail": {"type": "String"}
    }
  },
  "chainBinaryNotFound": "Das Programm `chain` wurde auf diesem Rechner nicht gefunden.",
  "chainBinaryNotFoundHint": "Installiere die Ch∆In-Plattform oder verweise Studio auf eine vorhandene `chain`-Datei.",
  "chainBinaryLocateButton": "`chain`-Programm suchen …",
  "chainBinaryInstallDocsButton": "Installationsanleitung öffnen",
  "chainBinaryPickerTitle": "`chain`-Programm auswählen",
  "chainBinarySetOk": "Verwende `chain` unter {path}",
  "@chainBinarySetOk": {
    "placeholders": {
      "path": {"type": "String"}
    }
  },
  "sysAiFixParse": "Der Anbieter hat in einem unerwarteten Format geantwortet. Anbieter, die nicht OpenAI-kompatibel sind, brauchen ggf. einen Übersetzungs-Proxy.",
  "sysAiFixUnknown": "Unerwarteter Fehler ({kind}). Siehe System-KI-Dokumentation.",
  "@sysAiFixUnknown": {
    "placeholders": {
      "kind": {"type": "String"}
    }
  },
  "sysAiFixDisabled": "Richte die System-KI in den Einstellungen (Cmd+,) → Bereich System-KI ein.",
  "sysAiFixEnvMissing": "Die Umgebungsvariable für den API-Schlüssel ist leer. Setze sie in deiner Shell und starte den Daemon neu.",
  "sysAiFixNetwork": "Der Hub erreicht den konfigurierten Endpunkt nicht. Läuft dein Anbieter?",
  "sysAiFixHttp": "Der Anbieter hat einen Status außerhalb 2xx geliefert. Prüfe Endpunkt, Modellname und API-Schlüssel.",
  "sysAiFixEmptyResponse": "Der Anbieter hat keinen Inhalt geliefert. Probiere ein anderes Modell oder formuliere den Prompt um.",
  "channelSwitchOk": "Aktiver Kanal auf \"{name}\" umgeschaltet. Daemon neu gestartet.",
  "@channelSwitchOk": {
    "placeholders": {
      "name": {"type": "String"}
    }
  },
  "channelSwitchFailed": "Kanalwechsel fehlgeschlagen: {detail}",
  "@channelSwitchFailed": {
    "placeholders": {
      "detail": {"type": "String"}
    }
  },
  "providerDescOllama": "Lokales `ollama serve`. Die Modelle bleiben auf deinem Rechner. Kein API-Schlüssel nötig.",
  "providerDescOpenai": "Gehostete OpenAI-API. Erfordert einen API-Schlüssel. Daten verlassen deinen Rechner.",
  "providerDescLmstudio": "Lokaler LM-Studio-Server. Die Modelle bleiben auf deinem Rechner. Kein API-Schlüssel nötig.",
  "providerDescVllm": "Selbst gehostetes vLLM oder ein anderer OpenAI-kompatibler Server. Endpunkt erforderlich.",
  "providerDescCustom": "Alles andere, das die OpenAI-kompatible Chat-Completions-Schnittstelle spricht (LiteLLM-Proxy, interner Spiegel, …).",
  "welcomeDocLoadFailedBody": "Die mitgelieferte Doku \"{slug}\" ({locale}) konnte nicht geladen werden.\nVersucht: {attempted}\nUrsache: {underlying}\nMeist ist der installierte Studio-Build älter als das Doku-Bundle. Baue Studio neu oder öffne die Online-Kopie.",
  "@welcomeDocLoadFailedBody": {
    "placeholders": {
      "slug": {"type": "String"},
      "locale": {"type": "String"},
      "attempted": {"type": "String"},
      "underlying": {"type": "String"}
    }
  },
  "hubUnreachableBanner": "{endpoint} nicht erreichbar — Einstellungen öffnen",
  "@hubUnreachableBanner": {
    "placeholders": {
      "endpoint": {"type": "String"}
    }
  },
  "hubUnreachableOpenSettings": "Einstellungen öffnen",
  "navFederation": "Föderation",
  "federationTitle": "Föderation",
  "federationReloadTooltip": "Satelliten neu laden",
  "federationAddSatellite": "Satellit hinzufügen",
  "federationEmptyTitle": "Keine Satelliten verbunden",
  "federationEmptyHint": "Verbinde einen weiteren Hub als Satellit, um Capabilities dort auszuführen. Stelle dazu ein Enrollment-Token aus.",
  "federationPillConnected": "verbunden",
  "federationRegionNone": "keine Region",
  "federationCapabilities": "{count} angebotene Capabilities",
  "federationAddDialogTitle": "Enrollment-Token ausstellen",
  "federationNameLabel": "Satelliten-Name",
  "federationIssueButton": "Ausstellen",
  "federationIssueFailed": "Token konnte nicht ausgestellt werden: {error}",
  "federationEnrollmentTitle": "{name} einrichten",
  "federationTokenLabel": "Bootstrap-Token (einmalig)",
  "federationConfigLabel": "Satelliten-Konfiguration (in den Satelliten einfügen)",
  "federationCopied": "In die Zwischenablage kopiert",
  "federationEnrollmentHint": "Übergib das Token dem Satelliten-Betreiber über einen sicheren Kanal. Die mitgelieferte CA macht den ersten Connect des Satelliten manipulationssicher."
}
