{ "@@locale": "de", "errModuleDownload": "Modul-Download fehlgeschlagen", "errModuleDownloadHint": "Die Bundle-URL des Moduls ist nicht erreichbar (Statuscode unten). Der Hub läuft — URL/Host korrigieren oder anderen Store wählen.", "storeFromSource": "aus {store}", "guidedSetupTitle": "Setup-Assistent", "guidedSetupIntro": "Beantworten Sie drei Fragen — Ch∆In stellt passende Konfiguration, Modul-Set und Beispiel-Flow zusammen.", "guidedSetupScenario": "Szenario", "guidedSetupIntent": "Aufgabe", "guidedSetupTarget": "Wo läuft es?", "guidedSetupApproval": "Menschlichen Freigabe-Schritt vor dem KI-Schritt verlangen", "guidedSetupDataLocal": "Daten müssen lokal bleiben (air-gapped)", "guidedSetupReviewHeading": "Diesen Plan wird Ch∆In anwenden:", "guidedSetupApply": "Setup übernehmen", "guidedSetupApplied": "Setup übernommen. Schließe mit den Schritten unten ab:", "guidedSetupBack": "Zurück", "guidedSetupNext": "Weiter", "guidedSetupCancel": "Abbrechen", "guidedSetupClose": "Schließen", "appTitle": "Ch∆In Studio", "navWelcome": "Willkommen", "welcomeHeroTitle": "Ch∆In Platform", "welcomeHeroSubtitle": "Deterministische Workflow-Engine für KI-gestützte Datenverarbeitung in regulierten Umgebungen.", "welcomePillarHubTitle": "Hub", "welcomePillarHubBody": "Das Programm, das alles ausführt. Es läuft direkt auf Ihrem Rechner, braucht keine Zusatzsoftware und speichert alles Wichtige in einer einzigen Datei.", "welcomePillarHubTech": "Ein Rust-Binary, das Module lädt und Flows ausführt. SQLite für den Zustand. Kein Docker, kein Message-Broker, keine Hintergrunddienste, die gepflegt werden müssen.", "welcomePillarModuleTitle": "Modul", "welcomePillarModuleBody": "Ein Baustein, der genau eine Aufgabe erledigt — zum Beispiel Text aus Dokumenten lesen. Jedes Modul sagt vorab, worauf es zugreifen will; mehr erlaubt der Hub nicht.", "welcomePillarModuleTech": "Eine kleine WebAssembly-Komponente in einer Sandbox. Deklariert Netzwerk-Endpunkte, Dateien und Umgebungsvariablen, auf die sie zugreift; der Hub setzt die Liste durch.", "welcomePillarFlowTitle": "Flow", "welcomePillarFlowBody": "Ein Ablaufplan, der Module zu festen Schritten verbindet. Eingaben rein, Schritte laufen der Reihe nach, Ergebnis raus — und jeder Schritt wird fälschungssicher protokolliert.", "welcomePillarFlowTech": "Eine YAML-Datei, die Module verkettet; jeder Schritt wird in einem hash-verketteten Audit-Log festgehalten, das die Diagnose-Seite komplett verifiziert.", "welcomePillarTechToggle": "Für Technik-Interessierte", "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": "Manipulationserkennendes 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": "Manipulationserkennendes Audit-Log", "welcomeDocAuditBlurb": "Wie die Hash-Kette nachträgliche Änderungen erkennbar macht — und was die Integritätsstufe WORM-1 leistet (und was nicht).", "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.", "welcomeDocFederationTitle": "Föderation", "welcomeDocFederationBlurb": "Weitere Hubs (Satelliten) anbinden, damit ihre Fähigkeiten hier nutzbar werden — was ein Satellit ist und wie die Anbindung abläuft.", "welcomeDocRunsTitle": "Hintergrund-Läufe", "welcomeDocRunsBlurb": "Flows, die im Hintergrund weiterlaufen — wozu, wie man die Funktion einschaltet und die Läufe überwacht.", "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. Tragen Sie 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 klicken Sie 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. Die Liste zeigt den Live-Zustand — nach einer Änderung oben rechts aktualisieren.", "welcomeChecklistAi": "System-KI konfigurieren", "welcomeChecklistAiHint": "Einstellungen → System-KI. Wird für die KI-Suche und Fehlererklärungen gebraucht.", "welcomeChecklistMcp": "Öffentlichen Werkzeug-Katalog verbinden", "welcomeChecklistMcpHint": "Verbindet einen öffentlichen Werkzeug-Katalog (Fachbegriff: MCP) — dessen Fähigkeiten erscheinen dann im Store. Dort hinzufügen oder unter Einstellungen → MCP-Clients.", "welcomeChecklistModule": "Ein Text-Modul installieren", "welcomeChecklistModuleHint": "Im Store ein Modul aus der Kategorie Ihrer Wahl installieren. Module sind isolierte (sandboxed) Ch∆In-Komponenten.", "welcomeChecklistFlow": "Einen gespeicherten Flow starten", "welcomeChecklistFlowHint": "Flows → einen wählen → Starten. Studio bringt einige Demo-Flows mit; ein eigener funktioniert genauso.", "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", "buttonLearnMore": "Mehr erfahren", "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 Endpunkt 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. Klicken Sie auf 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..-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..-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 brauchen Sie? Zum Beispiel „ein Modul, das tabellarische Daten liest\" — oder geben Sie einfach einen Begriff ein.", "storeAskSubmit": "Suchen", "storeAskAi": "KI fragen", "storeAskClear": "Frage zurücksetzen", "storeAskAiThinking": "Module werden durchsucht…", "storeAskAiUnavailable": "Konfigurieren Sie 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", "storeStatusAlphaHelp": "Frühe Version: läuft, wird aber noch weiterentwickelt und ist nicht für den regulierten Produktivbetrieb freigegeben.", "storeStatusPublishedHelp": "Vom Herausgeber für den allgemeinen Einsatz freigegeben.", "storeStatusPlannedHelp": "Angekündigt, aber noch nicht verfügbar.", "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", "storeCategoryDocument": "Dokument", "storeCatDocuments": "Dokumente", "storeCatTextLanguage": "Text & Sprache", "storeCatData": "Daten & Formate", "storeCatAiLlm": "KI & LLM", "storeCatWebApi": "Web & APIs", "storeCatAnalysisDomain": "Analyse & Domäne", "storeCatStudioThemes": "Studio & Designs", "storeCatExamplesDev": "Beispiele & Dev", "storeCatOther": "Sonstiges", "storeSegmentModules": "Module", "storeSegmentStudio": "Studio & Designs", "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ügen Sie 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": "Signatur-Schlüssel anheften (PEM, optional)", "storesManagerPinnedKeyHint": "Nur Module, die mit diesem Schlüssel signiert sind, werden aus dieser Quelle angenommen. Fügen Sie den öffentlichen Schlüssel (PEM) des Herausgebers ein — statt des eingebauten Herstellerschlüssels.", "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", "storeFeaturedBadge": "EMPFOHLEN", "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. Setzen Sie CHAIN_REGISTRY_TOKEN in der Umgebung des Daemons und starten Sie 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. Öffnen Sie 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": "Starten Sie einen Flow, um den Audit-Stream zu füllen.\nEreignisse erscheinen innerhalb von Sekunden.", "auditFilterAll": "Alle", "auditFilterFlow": "Flow", "auditFilterStep": "Schritt", "auditFilterModule": "Modul", "auditFilterTooltip": "Ereignisse filtern", "auditClearLogTooltip": "Protokoll löschen (nur local/dev Kanal)", "auditMoreTooltip": "Weitere Aktionen", "auditSearchHint": "Ereignisse durchsuchen (Flow, Schritt, Modul, Fehlertext …)", "auditExportAction": "Aktuelle Ansicht als JSONL exportieren …", "auditExportAllAction": "Vollständiges Protokoll als JSONL exportieren …", "auditExportAllNothing": "Das Protokoll ist leer — nichts zu exportieren.", "auditExportNothing": "Keine Ereignisse in der aktuellen Ansicht — nichts zu exportieren.", "auditExportSaved": "{n} Ereignisse exportiert nach {path}", "@auditExportSaved": {"placeholders": {"n": {"type": "int"}, "path": {"type": "String"}}}, "auditDevResetAction": "Entwicklungs-Reset: Protokoll löschen … (nur local/dev)", "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 geprüft", "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 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 , 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 .chain-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" } } }, "authPolicyHeader": "ZUGRIFFSSCHUTZ DES HUBS", "authPolicyBlurb": "Wie der Hub eingehende Aufrufe prüft: aktives Prüfverfahren, Tokens und ihre Rechte (Scopes). Geheimnisse bleiben in Umgebungsvariablen — hier erscheinen nur deren Namen.", "authPolicyValidatorStatic": "Prüfverfahren: statische Token-Liste", "authPolicyValidatorJwt": "Prüfverfahren: JWT (RS256) über eine externe Identitätsstelle", "authPolicyAnonymous": "Keine Tokens konfiguriert — der Hub akzeptiert anonyme Aufrufe. Für lokales Arbeiten in Ordnung; für den Produktivbetrieb Tokens in ~/.chain/config.yaml einrichten.", "authPolicyReloadRequired": "Die Konfigurationsdatei (oder eine Umgebungsvariable) wurde seit dem Laden geändert — der Hub erzwingt noch den alten Stand. Unten „Neu laden“ wählen, damit die Änderung wirkt.", "authPolicyNeedsAdmin": "Diese Ansicht braucht ein Token mit admin-Recht. Hinterlegen Sie es oben unter „Hub-Authentifizierung“ und laden Sie neu.", "authPolicyHubTooOld": "Der verbundene Hub kennt diese Ansicht noch nicht — er ist älter als Studio. Aktualisieren Sie den Hub (chain update apply) und laden Sie neu.", "authPolicyRetry": "Erneut versuchen", "authPolicyReload": "Tokens neu laden", "authPolicyReloadDone": "Neu geladen — {n} Token aktiv.", "@authPolicyReloadDone": {"placeholders": {"n": {"type": "int"}}}, "authPolicyEditHint": "Bearbeitet wird die Richtlinie in ~/.chain/config.yaml (Abschnitt auth:). Nach einer Änderung oder Token-Rotation hier neu laden — der Hub übernimmt sie ohne Neustart.", "authPolicyEnvSet": "Umgebungsvariable {env} ist gesetzt", "@authPolicyEnvSet": {"placeholders": {"env": {"type": "String"}}}, "authPolicyEnvMissing": "Umgebungsvariable {env} FEHLT — das Token ist nicht nutzbar", "@authPolicyEnvMissing": {"placeholders": {"env": {"type": "String"}}}, "authPolicyRateLimit": "{n}/min", "@authPolicyRateLimit": {"placeholders": {"n": {"type": "int"}}}, "authPolicyJwtKeySource": "Schlüsselquelle", "authPolicyJwtAudience": "Audience (aud)", "authPolicyJwtIssuer": "Aussteller (iss)", "authPolicyJwtScopeClaim": "Scope-Claim", "authPolicyNotChecked": "wird nicht geprüft", "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ählen Sie 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 /-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": "Sie sind eingerichtet.", "welcomeChecklistAllSetBody": "Drei Stränge, an denen Sie als Nächstes ziehen können:", "welcomeChecklistNextAuditTitle": "Audit-Log lesen", "welcomeChecklistNextAuditBody": "Jede Installation, jeder Flow-Lauf, jede Freigabe landet im hash-verketteten Protokoll. Im Protokoll-Tab sehen Sie, was Ihr Hub gemacht hat.", "welcomeChecklistNextAuditButton": "Protokoll öffnen", "welcomeChecklistNextTodayTitle": "Daily-Today-Story einrichten", "welcomeChecklistNextTodayBody": "Für Fortgeschrittene: das Skript tools/today/propose.sh regelmäßig (Cron) laufen lassen — die Editorial-Karte im Store füllt sich dann mit kuratierten Stories.", "welcomeChecklistNextTodayButton": "Today-Doku öffnen", "welcomeChecklistNextModuleTitle": "Eigenes Modul bauen", "welcomeChecklistNextModuleBody": "Für Entwickler: Mit chain new module entsteht ein fertiges Modul-Gerüst (Rust+WASM). Das module-sdk übernimmt die technische Anbindung; Sie schreiben nur die eigentliche Logik.", "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. Wenn ein Flow eine menschliche Freigabe verlangt, erscheint die Anfrage 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 — setzen Sie es, um die Daten hinter dieser Entscheidung sichtbar zu machen.", "approvalsNoDataConfirmTitle": "Ohne Prüfdaten freigeben?", "approvalsNoDataConfirmBody": "Dieser Flow hat bewusst keine Prüfdaten hinterlegt (kein \"show:\" am Freigabe-Schritt). Sie können trotzdem freigeben — entscheiden dann aber, ohne die Daten hinter dieser Entscheidung gesehen zu haben.", "approvalsNoDataConfirmAction": "Trotzdem freigeben", "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, plural, =1{1 Fähigkeit} other{{n} Fähigkeiten}}", "@doctorSummaryCapabilities": { "placeholders": { "n": { "type": "int" } } }, "doctorSummaryPending": "offen", "doctorSummaryChain": "{verified} von {total} Ereignissen geprüft", "@doctorSummaryChain": { "placeholders": { "verified": { "type": "int" }, "total": { "type": "int" } } }, "doctorSummaryDeclared": "deklariert", "svcExposureLoopback": "nur lokal", "svcExposurePrivate": "privates Netz", "svcExposurePublic": "öffentlich erreichbar", "svcExposureUnknown": "Reichweite unbekannt", "svcExposurePublicHint": "Dieser Dienst-Endpunkt liegt auf einer öffentlichen Adresse — prüfen Sie, ob er abgesichert ist (TLS, Auth, Firewall).", "svcExposureUnknownHint": "Hostname statt IP-Adresse — der Hub löst zur Einstufung bewusst keine Namen auf.", "doctorLinkStore": "Store öffnen", "doctorLinkApprovals": "Freigaben öffnen", "doctorLinkAudit": "Protokoll öffnen", "doctorLinkConfig": "Konfiguration ansehen", "doctorLinkReleaseNotes": "Versionshinweise im Browser öffnen", "doctorModulesPanelSummary": "{n, plural, =1{1 Modul} other{{n} Module}} · {m, plural, =1{1 Fähigkeit} other{{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} {n, plural, =1{Ereignis} other{Ereignisse}} · Verkettung lückenlos geprüft", "@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": "Hash-Kette geprüft", "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…", "doctorConnLine": "Verbindung: {endpoint} · {transport} · {auth}", "@doctorConnLine": { "placeholders": { "endpoint": {"type": "String"}, "transport": {"type": "String"}, "auth": {"type": "String"} } }, "doctorConnTls": "TLS-verschlüsselt", "doctorConnPlainLocal": "unverschlüsselt (bleibt auf diesem Rechner)", "doctorConnPlainRemote": "unverschlüsselt", "doctorConnToken": "Token gesetzt ({count} Zeichen)", "@doctorConnToken": { "placeholders": { "count": {"type": "int"} } }, "doctorConnAnonymous": "ohne Token (anonym)", "doctorDbVolatileWarning": "Die Audit-Datenbank liegt in einem temporären Ordner, den das Betriebssystem jederzeit aufräumen kann. Für belastbare Nachweise gehört das Datenverzeichnis des Hubs an einen dauerhaften Ort.", "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.. 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.. Fähigkeiten. Einmal konfigurieren, im Store sichtbar.", "n8nEmpty": "Keine n8n-Endpunkte konfiguriert. + klicken zum Hinzufügen.", "hubUnreachable": "Hub nicht erreichbar", "hubViewTooOldTitle": "Diese Ansicht braucht eine neuere Hub-Version", "hubViewTooOldHint": "Der Hub ist verbunden, aber seine Version kennt diese Ansicht noch nicht. Aktualisieren Sie den Hub (Diagnose → Update), dann erscheint der Inhalt hier.", "hubViewLoadFailedTitle": "Diese Ansicht konnte nicht geladen werden", "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ählen Sie links einen aus oder klicken Sie auf Neuer Flow, um einen neuen anzulegen.", "flowEditorListEmptyTitle": "Keine gespeicherten Flows", "flowEditorListEmptyBody": "Klicken Sie auf 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", "settingsCategoryAbout": "Über", "aboutPanelTitle": "Über Ch∆In", "aboutPanelBody": "Produkt-, Hersteller- und Lizenzangaben dieser Installation — alle Werte sind kopierbar.", "aboutProduct": "Produkt", "aboutStudioVersion": "Studio-Version", "aboutHubVersion": "Hub-Version", "aboutHubVersionUnknown": "nicht verbunden", "aboutVendor": "Hersteller", "aboutAuthor": "Autor", "aboutLicense": "Lizenz", "aboutContact": "Kontakt", "aboutDocs": "Dokumentation", "aboutOpenLink": "Im Browser öffnen", "aboutCopyTooltip": "Kopieren", "aboutCopiedToast": "In die Zwischenablage kopiert.", "sidebarSearchLabel": "Suchen & Befehle", "installConfirmTitle": "„{name}\" installieren?", "@installConfirmTitle": {"placeholders": {"name": {"type": "String"}}}, "installConfirmVersion": "Version", "installConfirmSource": "Quelle", "installConfirmSourceBundled": "Mitgelieferter Store-Index", "installConfirmLicense": "Lizenz", "installConfirmStatus": "Reifegrad", "installConfirmNeedsServices": "Benötigte Dienste", "installConfirmNeedsCapabilities": "Benötigte Fähigkeiten", "installConfirmTrustTitle": "Vertrauen & Sicherheit", "installConfirmTrustBody": "Das Modul läuft in einer Sandbox: Es darf nur auf die Netzwerk-Endpunkte, Dateien und Umgebungsvariablen zugreifen, die es selbst deklariert — der Hub setzt diese Liste durch. Die vollständige Berechtigungsliste sehen Sie nach der Installation in den Modul-Details.", "storePolicyUnverifiedNotice": "Die Signaturpflicht ist in der Hub-Richtlinie ausgeschaltet — Installationen werden nicht kryptografisch geprüft. Der Installations-Dialog zeigt den Status je Modul; für geprüfte Installationen security.require_signatures aktivieren.", "verifPillUnverified": "unsigniert", "verifPillBlocked": "blockiert", "verifPinnedKey": "Signatur wird geprüft — hinterlegter Store-Schlüssel", "verifPinnedKeyBody": "Der Hub verifiziert das Paket beim Installieren gegen den fest hinterlegten Schlüssel dieser Quelle. Ein manipuliertes Paket wird abgelehnt.", "verifTrustedPublishers": "Signatur wird geprüft — vertrauenswürdige Herausgeber", "verifTrustedPublishersBody": "Der Hub verifiziert die Signatur beim Installieren gegen die Liste vertrauenswürdiger Herausgeber. Ein Paket ohne gültige Signatur wird abgelehnt.", "verifUnverified": "Wird ohne Signaturprüfung installiert", "verifUnverifiedBody": "Die Signaturpflicht ist in der Hub-Richtlinie ausgeschaltet — dieses Paket wird beim Installieren nicht kryptografisch geprüft. Für geprüfte Installationen security.require_signatures aktivieren.", "verifBlocked": "Installation würde abgelehnt", "verifBlockedBody": "Die Richtlinie verlangt Signaturen, aber für diese Quelle ist kein Schlüsselmaterial hinterlegt — der Hub würde die Installation verweigern.", "verifFederated": "Über Integration angebunden — keine Paket-Signatur", "verifFederatedBody": "Dieser Eintrag ist kein installierbares Paket, sondern läuft über eine konfigurierte Integration (z. B. MCP oder n8n). Eine Paket-Signatur gibt es hier nicht; es gilt das Vertrauen in die Integration.", "installConfirmSignatureNote": "Signaturen prüft der Hub beim Installieren, sofern die Signaturpflicht im Sicherheitsprofil aktiv ist. Einen Signaturstatus vorab zeigt der Store-Index derzeit noch nicht an (Alpha).", "settingsSidebarPinnedTitle": "Navigation immer ausgeklappt", "settingsSidebarPinnedBody": "Zeigt die Beschriftungen der Seitenleiste dauerhaft an, statt sie nur beim Überfahren mit der Maus einzublenden.", "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 Fähigkeiten 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 Sie 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. Geben Sie dem Hub eine .chain-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 .chain-Bundle", "addSourceHint": "https://git.flemming.ai/ihre-org/ihr-modul/releases/download/v0.1.0/foo-0.1.0.chain", "addSourceHowItWorksTitle": "Wie private Module funktionieren", "addSourceHowItWorksBody": "Ein Modul ist ein Verzeichnis mit module.yaml + WASM-Artefakt. Zum Teilen: chain pack baut ein .chain-Bundle, das Sie beliebig hosten können (eigene Forgejo / GitHub / S3). Der Hub installiert per URL und prüft die Signatur gegen seinen Trust-Store.\n\nLokal entwickeln? Nehmen Sie 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. Starten Sie die Engine, 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": "Installieren Sie die Ch∆In-Plattform oder verweisen Sie 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. Setzen Sie sie in Ihrer Shell und starten Sie den Daemon neu.", "sysAiFixNetwork": "Der Hub erreicht den konfigurierten Endpunkt nicht. Läuft Ihr Anbieter?", "sysAiFixHttp": "Der Anbieter hat einen Status außerhalb 2xx geliefert. Prüfen Sie Endpunkt, Modellnamen 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 Ihrem Rechner. Kein API-Schlüssel nötig.", "providerDescOpenai": "Gehostete OpenAI-API. Erfordert einen API-Schlüssel. Daten verlassen Ihren Rechner.", "providerDescLmstudio": "Lokaler LM-Studio-Server. Die Modelle bleiben auf Ihrem 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", "hubAuthRejectedBanner": "{endpoint} lehnt die Anmeldung ab — Zugriffstoken prüfen", "@hubAuthRejectedBanner": { "placeholders": { "endpoint": {"type": "String"} } }, "navFederation": "Föderation", "federationTitle": "Föderation", "federationReloadTooltip": "Satelliten neu laden", "federationAddSatellite": "Satellit hinzufügen", "federationEmptyTitle": "Keine Satelliten verbunden", "federationEmptyHint": "Verbinden Sie einen weiteren Hub als Satellit, um Fähigkeiten dort auszuführen. Stellen Sie dazu ein Registrierungs-Token aus.", "federationPillConnected": "verbunden", "federationRegionNone": "keine Region", "federationCapabilities": "{count} angebotene Fähigkeiten", "federationAddDialogTitle": "Registrierungs-Token ausstellen", "federationNameLabel": "Satelliten-Name", "federationAddIntro": "Ein Satellit ist ein weiterer Hub, den dieser Hub anbindet — dessen Fähigkeiten werden dann hier in Flows nutzbar. Sie vergeben einen Namen und erhalten ein einmaliges Token, mit dem sich der Satellit bei diesem Hub anmeldet.", "federationNameHelp": "Frei wählbarer Name, um diesen Satelliten in der Liste wiederzuerkennen (z. B. Standort oder Zweck). Rein zur Anzeige — ändert nichts an der Technik.", "federationIssueButton": "Ausstellen", "federationIssueFailed": "Token konnte nicht ausgestellt werden: {error}", "federationEnrollmentTitle": "{name} einrichten", "federationTokenLabel": "Einmal-Token für die Einrichtung", "federationConfigLabel": "Satelliten-Konfiguration (in den Satelliten einfügen)", "federationCopied": "In die Zwischenablage kopiert", "federationEnrollmentHint": "Übergeben Sie das Token dem Satelliten-Betreiber über einen sicheren Kanal. Die mitgelieferte Zertifikatsstelle authentifiziert die erste Verbindung des Satelliten.", "workspaceAll": "Alle Projekte", "workspaceDefaultProject": "Allgemein", "workspaceSwitcherTooltip": "Arbeitsbereich — filtert diese Ansicht und stempelt neue Läufe mit dem gewählten Projekt", "workspaceProtectedHint": "Geschützt: logisch getrennt im gemeinsamen Hub — keine harte Prozessgrenze. Kritische Mandate nutzen einen abgeschotteten Bereich.", "runsTitle": "Läufe", "runsReloadTooltip": "Lauf-Liste neu laden", "runsEmptyTitle": "Keine Läufe im Hintergrund", "runsEmptyHint": "Hier erscheinen Läufe, die im Hintergrund weiterlaufen, während Sie anderes tun. Diese Funktion ist optional und standardmäßig ausgeschaltet — die Anleitung zeigt Schritt für Schritt, wie sie eingeschaltet wird.", "runsEmptyEnabledHint": "Läufe im Hintergrund sind eingeschaltet — es wurde nur noch keiner gestartet. Starten Sie einen Flow mit der Option „im Hintergrund ausführen“, dann erscheint er hier.", "runsEmptyGuideButton": "Anleitung öffnen", "runsHubTooOldTitle": "Diese Ansicht braucht eine neuere Hub-Version", "runsHubTooOldHint": "Der Hub ist verbunden, aber seine Version kennt die Laufübersicht noch nicht. Aktualisieren Sie den Hub, dann erscheinen die Läufe hier.", "runsHubTooOldButton": "Diagnose öffnen", "runsLoadFailedTitle": "Läufe konnten nicht geladen werden", "runsCancelButton": "Abbrechen", "runsCancelSignalled": "Abbruch für {flow} ausgelöst.", "@runsCancelSignalled": {"placeholders": {"flow": {"type": "String"}}}, "runsCancelTooLate": "Der Lauf war schon fertig — nichts abzubrechen.", "runsCurrentStep": "Schritt: {step}", "@runsCurrentStep": {"placeholders": {"step": {"type": "String"}}}, "runsPhasePending": "Wartet", "runsPhaseRunning": "Läuft", "runsPhaseSucceeded": "Erfolgreich", "runsPhaseFailed": "Fehlgeschlagen", "runsPhaseCancelled": "Abgebrochen", "runsPhaseUnknown": "Unbekannt", "navRuns": "Läufe", "workspaceSealedHeader": "ABGESCHOTTETE BEREICHE", "workspaceSealedAggregate": "{n, plural, =1{1 abgeschotteter Bereich} other{{n} abgeschottete Bereiche}}", "@workspaceSealedAggregate": {"placeholders": {"n": {"type": "int"}}}, "workspaceSealedRevealAction": "Namen einblenden", "settingsSealedNamesTitle": "Abgeschottete Bereiche direkt mit Namen anzeigen", "settingsSealedNamesBody": "Bereichsnamen können schutzwürdig sein (Kunden-/Mandantenbezug). Standardmäßig zeigt der Projekt-Umschalter sie nur zusammengefasst; die Namen erscheinen erst nach einem Klick.", "workspaceSealedRunning": "läuft", "workspaceSealedStopped": "gestoppt", "workspaceSealedRunningHint": "Der abgeschottete Bereich läuft als eigener Hub-Prozess. Auswählen wechselt hinein.", "workspaceSealedStoppedHint": "Der abgeschottete Bereich ist gerade nicht gestartet. Auswählen startet ihn und wechselt hinein.", "workspaceSealedStarting": "Starte abgeschotteten Bereich „{name}“…", "@workspaceSealedStarting": {"placeholders": {"name": {"type": "String"}}}, "workspaceSealedStarted": "Abgeschotteter Bereich „{name}“ gestartet.", "@workspaceSealedStarted": {"placeholders": {"name": {"type": "String"}}}, "workspaceSealedSwitchFailed": "Wechsel in den abgeschotteten Bereich fehlgeschlagen: {error}", "@workspaceSealedSwitchFailed": {"placeholders": {"error": {"type": "String"}}}, "sealedIdentityBar": "Abgeschotteter Bereich — isolierter Hub, eigene Daten und Audit-Kette", "sealedLeave": "Verlassen", "setupStepOf": "Schritt {n} von {total}", "@setupStepOf": {"placeholders": {"n": {"type": "int"}, "total": {"type": "int"}}}, "setupStep1Title": "Worum geht es?", "setupStep2Title": "Was möchten Sie zuerst tun?", "setupStep3Title": "Wo läuft es?", "setupReviewTitle": "Das wird Ch∆In einrichten", "setupChooseFreeText": "Oder beschreiben Sie einfach, was Sie vorhaben", "setupScenTryingOut": "Erst mal ausprobieren", "setupScenTryingOutSub": "Ein unkomplizierter Arbeitsplatz auf diesem Rechner — ohne Signaturpflicht, ohne Schreibschutz für das Prüfprotokoll. Später jederzeit hochstufbar: die Einrichtung erneut ausführen und ein reguliertes Profil wählen.", "setupScenTeamHub": "Ein Team-Server", "setupScenTeamHubSub": "Ein abgesicherter Hub für mehrere Personen — signierte Module, Ressourcen-Grenzen.", "setupScenRegulated": "Regulierter Produktivbetrieb", "setupScenRegulatedSub": "Signierte Module, ein lückenloses, manipulationssicheres Prüfprotokoll und eine menschliche Freigabe vor jedem KI-Schritt.", "setupScenBuildModules": "Module entwickeln", "setupScenBuildModulesSub": "Eine Entwickler-Einrichtung zum Schreiben und Testen eigener Module.", "setupIntentHello": "Das Hallo-Beispiel ausführen", "setupIntentHelloSub": "Einfach einen Flow einmal von Anfang bis Ende sehen.", "setupIntentExtract": "Text aus Dokumenten extrahieren", "setupIntentExtractSub": "Reinen Text aus PDF- und DOCX-Dateien holen.", "setupIntentExtractSummarize": "Extrahieren und zusammenfassen", "setupIntentExtractSummarizeSub": "Text extrahieren und anschließend zusammenfassen.", "setupIntentClassify": "Eingehende Dokumente einsortieren", "setupIntentClassifySub": "Text extrahieren und mit einem KI-Schritt klassifizieren.", "setupIntentBuildModule": "Ein eigenes Modul bauen", "setupIntentBuildModuleSub": "Mit einem Modul-Gerüst starten.", "setupTargetLaptop": "Dieser Rechner", "setupTargetLaptopSub": "Läuft lokal auf dem Gerät, an dem Sie gerade sitzen.", "setupTargetHomeServer": "Ein eigener Server", "setupTargetHomeServerSub": "Ein Server im eigenen Haus — startet beim Hochfahren, läuft im Hintergrund.", "setupTargetAirgapped": "Ein vollständig lokaler Server (ohne Internet)", "setupTargetAirgappedSub": "Ein isolierter Server ohne Internet — die strengste, privateste Betriebsart.", "setupTargetContainer": "Ein Container", "setupTargetContainerSub": "Docker oder Podman, mit fertigem Compose-Schnipsel.", "setupApprovalPlain": "Vor jedem KI-Schritt einen Menschen um Freigabe bitten", "setupDataLocalPlain": "Daten dürfen das Haus nie verlassen (vollständig lokal)", "setupPlanIntroDev": "Ch∆In richtet einen unkomplizierten Arbeitsplatz ein.", "setupPlanIntroEnterprise": "Ch∆In richtet einen abgesicherten Betrieb für ein Team ein.", "setupPlanIntroAirgapped": "Ch∆In richtet einen vollständig lokalen, regulierten Betrieb ein.", "setupPlanSignatures": "Es werden nur signierte Module zugelassen.", "setupPlanWorm": "Das Prüfprotokoll wird zusätzlich manipulationssicher (WORM) gesichert.", "setupPlanApproval": "Vor jedem KI-Schritt fragt das System einen Menschen um Freigabe.", "setupPlanModules": "Diese Module werden vorbereitet: {modules}.", "@setupPlanModules": {"placeholders": {"modules": {"type": "String"}}}, "setupPlanFlow": "Ein Beispiel-Flow „{flow}“ wird angelegt.", "@setupPlanFlow": {"placeholders": {"flow": {"type": "String"}}}, "setupPlanFileChanged": "Geändert wird nur eine Datei: {path}.", "@setupPlanFileChanged": {"placeholders": {"path": {"type": "String"}}}, "setupPlanOverwriteWarn": "Eine vorhandene Konfiguration wird überschrieben.", "setupApplied": "Fertig — Ch∆In ist eingerichtet.", "setupNextTitle": "Nächste Schritte", "setupNextHubStart": "Hub starten", "setupHubRunning": "Der Hub läuft.", "setupStartHubFirst": "Starten Sie zuerst den Hub — dann lassen sich die Module hier installieren.", "setupActionInstall": "{module} installieren", "@setupActionInstall": {"placeholders": {"module": {"type": "String"}}}, "setupActionInstalled": "{module} ist installiert.", "@setupActionInstalled": {"placeholders": {"module": {"type": "String"}}}, "setupActionOpenFlow": "Beispiel-Flow „{flow}“ öffnen", "@setupActionOpenFlow": {"placeholders": {"flow": {"type": "String"}}}, "setupModulesOfflineHint": "Die Module kommen ohne Internet als Offline-Paket auf den Server — die Anleitung dazu steht in der Dokumentation unter „Betrieb ohne Internet“.", "setupModulesSignedHint": "Die Module kommen aus einer eigenen, signierten Quelle — nicht aus dem öffentlichen Store.", "setupSigPublicStoreNotice": "Diese Einrichtung lässt nur signierte Module zu. Der öffentliche Store liefert zurzeit unsignierte Pakete — die vorbereiteten Module kommen daher aus einer eigenen, signierten Quelle.", "setupAllowUnsigned": "Installation aus dem öffentlichen Store erlauben", "setupAllowUnsignedSub": "Lockert die Signaturpflicht bewusst. Gut zum Ausprobieren — für den regulierten Betrieb später wieder aktivieren.", "setupStartCta": "Einrichtung starten", "setupGateIntro": "Bevor es losgeht: drei Fragen, dann richtet Ch∆In diesen Rechner passend ein. Nichts wird ohne Ihre Bestätigung geändert.", "setupGateSkip": "Später einrichten", "settingsRunSetup": "Einrichtung erneut ausführen…", "settingsRunSetupHint": "Öffnet den Einrichtungs-Assistenten (drei Fragen, Vorschau, Übernehmen). Die bestehende Konfiguration wird erst nach Ihrer Bestätigung ersetzt.", "setupPlanRunbookLocal": "Eingerichtet wird dieser Rechner; der Hub läuft lokal und wird bei Bedarf gestartet.", "setupPlanRunbookService": "Eingerichtet wird dieser Rechner: Der Hub startet künftig automatisch beim Hochfahren (Hintergrund-Dienst). Für einen anderen Server führen Sie die Einrichtung dort aus.", "setupPlanRunbookAirgap": "Vorgesehen für einen isolierten Server ohne Internet — Module und Updates kommen als Offline-Paket.", "setupPlanRunbookContainer": "Vorgesehen für den Betrieb im Container — ein fertiges Compose-Beispiel wird mitgeliefert.", "setupPlanAuditChain": "Jeder Schritt landet in einem lückenlosen, hash-verketteten Prüfprotokoll — Manipulation wird erkennbar.", "setupPlanDocs": "Eine passende Leseliste ({n} Kapitel) wird mit dem Einrichtungs-Protokoll unter ~/.chain/ gespeichert.", "@setupPlanDocs": {"placeholders": {"n": {"type": "int"}}}, "setupTrustedPublishersHint": "Wichtig: Hinterlegen Sie beim Hinzufügen der Quelle den Schlüssel des Herausgebers („Signatur-Schlüssel anheften“) — sonst akzeptiert der Hub jede formal gültige Signatur, egal von wem.", "setupAddSignedSource": "Signierte Quelle hinzufügen…", "setupApplyNotes": "Hinweise aus der Einrichtung", "setupFreeTextHint": "z. B.: Eingehende Anträge vorprüfen und unvollständige markieren", "setupFreeTextSuggest": "Vorschlagen lassen", "setupFreeTextPrivacyLocal": "Ihre Beschreibung wird direkt auf diesem Rechner verarbeitet — durch das lokale KI-Modell {model}. Nichts verlässt das Gerät.", "@setupFreeTextPrivacyLocal": {"placeholders": {"model": {"type": "String"}}}, "setupFreeTextPrivacyRemote": "Ihre Beschreibung wird an die eingerichtete System-KI gesendet: {model} ({provider}).", "@setupFreeTextPrivacyRemote": {"placeholders": {"model": {"type": "String"}, "provider": {"type": "String"}}}, "setupFreeTextUnavailable": "Für den Freitext-Weg braucht Ch∆In eine eingerichtete System-KI (Einstellungen → System-KI). Die Auswahl oben funktioniert immer — ganz ohne KI.", "setupExecHint": "Für Vorschau und Einrichtung führt Studio das Programm „chain“ aus: {path}", "@setupExecHint": {"placeholders": {"path": {"type": "String"}}}, "setupExecHintTcc": "Das Programm liegt unter {path} — macOS fragt dafür eventuell einmalig nach Zugriff auf diesen Ordner (z. B. „Dokumente“). Das ist zu erwarten und in Ordnung.", "@setupExecHintTcc": {"placeholders": {"path": {"type": "String"}}}, "setupNoBinaryStepHint": "Das Programm „chain“ wurde auf diesem Rechner nicht gefunden — die Vorschau im nächsten Schritt wird fehlschlagen. Unter „Diagnose“ können Sie es auswählen oder Ch∆In installieren.", "setupNoBinary": "Das Programm „chain“ wurde auf diesem Rechner nicht gefunden.", "setupNoBinaryHint": "Ohne das Programm kann der Assistent die Einrichtung nicht anwenden. Wählen Sie es unter „Diagnose“ aus oder installieren Sie Ch∆In neu.", "setupCliTooOld": "Das installierte „chain“-Programm ist älter als Studio und kennt diesen Assistenten noch nicht.", "setupCliTooOldHint": "Gefunden wurde: {path}. Bitte Ch∆In aktualisieren (Seite „Diagnose“ → Update, oder im Terminal: chain update apply) und den Assistenten danach erneut öffnen.", "@setupCliTooOldHint": {"placeholders": {"path": {"type": "String"}}}, "setupPreviewFailed": "Die Plan-Vorschau konnte nicht erstellt werden — das Programm „chain“ meldet einen Fehler.", "setupApplyFailed": "Die Einrichtung konnte nicht angewendet werden — das Programm „chain“ meldet einen Fehler.", "setupCliUsedBinary": "Ausgeführt wurde: {path}", "@setupCliUsedBinary": {"placeholders": {"path": {"type": "String"}}}, "setupFreeTextParseError": "Die System-KI hat keinen verwertbaren Vorschlag geliefert. Wählen Sie oben aus dem Menü — oder versuchen Sie es noch einmal.", "setupReflectionTitle": "So verstehe ich Ihre Aufgabe", "setupReflectionScenario": "Worum es geht: {label}", "@setupReflectionScenario": {"placeholders": {"label": {"type": "String"}}}, "setupReflectionIntent": "Erste Aufgabe: {label}", "@setupReflectionIntent": {"placeholders": {"label": {"type": "String"}}}, "setupReflectionTarget": "Umgebung: {label}", "@setupReflectionTarget": {"placeholders": {"label": {"type": "String"}}}, "setupReflectionApproval": "Vor jedem KI-Schritt wird ein Mensch um Freigabe gebeten.", "setupReflectionDataLocal": "Daten bleiben vollständig im Haus.", "setupReflectionEditHint": "Es wird nichts ohne Ihre Bestätigung geändert. Passen Sie die Punkte an oder gehen Sie direkt zur Vorschau.", "setupReflectionAdjust": "Anpassen", "setupReflectionToPreview": "Zur Vorschau", "setupProfileDev": "unkomplizierter Arbeitsplatz", "setupProfileEnterprise": "abgesicherter Team-Betrieb", "setupProfileAirgapped": "vollständig lokaler, regulierter Betrieb", "welcomeChecklistSetupDone": "Die Grundeinrichtung ({profile}) hat der Einrichtungs-Assistent bereits erledigt — hier sehen Sie, was auf dem Hub schon passiert ist.", "@welcomeChecklistSetupDone": {"placeholders": {"profile": {"type": "String"}}} }