chain-studio/lib/l10n/app_de.arb
flemming-it 3e1ce6e1fd
Some checks are pending
Security / Security check (push) Waiting to run
fix(welcome): concept cards speak everyday language first
The Hub/Module/Flow cards explained the basics in the very
vocabulary they were supposed to introduce (Rust binary, WASM,
YAML, hash-chained). Each card now leads with a plain-language
explanation; the technical wording moved behind a per-card
'for the technically curious' toggle. DE and EN.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-07-17 23:24:46 +02:00

1853 lines
82 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"@@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.",
"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. Live-Zustand — nach jeder Änderung aktualisieren.",
"welcomeChecklistAi": "System-KI konfigurieren",
"welcomeChecklistAiHint": "Einstellungen → System-KI. Wird für die KI-Suche und Fehlererklärungen gebraucht.",
"welcomeChecklistMcp": "Öffentliche Capability-Quelle hinzufügen",
"welcomeChecklistMcpHint": "Verbindet einen öffentlichen Werkzeug-Katalog (MCP) — dessen Bausteine 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",
"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 165535 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.<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": "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",
"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",
"storeCatDocuments": "Dokumente",
"storeCatTextLanguage": "Text & Sprache",
"storeCatData": "Daten & Formate",
"storeCatAiLlm": "KI & LLM",
"storeCatWebApi": "Web & APIs",
"storeCatAnalysisDomain": "Analyse & Domäne",
"storeCatStudioThemes": "Studio & Themes",
"storeCatExamplesDev": "Beispiele & Dev",
"storeCatOther": "Sonstiges",
"storeSegmentModules": "Module",
"storeSegmentStudio": "Studio & Themes",
"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",
"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)",
"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 .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 `<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": "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 <name>` 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. 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.",
"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} 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} {n, plural, =1{Ereignis} other{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": "Integritätskette v1",
"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ä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",
"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 `.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 <verzeichnis>` 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? 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. 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 dein 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 Capabilities dort auszuführen. Stellen Sie 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 authentifiziert den ersten Connect des Satelliten.",
"workspaceAll": "Alle Projekte",
"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.",
"runsEmptyGuideButton": "Anleitung öffnen",
"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",
"workspaceSealedRunning": "läuft",
"workspaceSealedStopped": "gestoppt",
"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.",
"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 lokal auf diesem Rechner verarbeitet ({model}).",
"@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"}}}
}