{ "@@locale": "de", "appTitle": "F∆I Studio", "navDoctor": "Diagnose", "navModules": "Module", "navStore": "Store", "navFlows": "Flows", "navAudit": "Protokoll", "navApprovals": "Freigaben", "connectionConnected": "verbunden", "connectionUnreachable": "nicht erreichbar", "connectionConnecting": "verbinde…", "connectionStartHub": "Hub starten", "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", "settingsTitle": "Hub-Endpunkt", "settingsHost": "Host", "settingsPort": "Port", "settingsTls": "TLS", "settingsSaveAndConnect": "Speichern & 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 ~/.fai/current-channel und startet den Daemon neu). Verbinden ändert nur die Wire von Studio.", "channelsActionsTooltip": "Kanal-Aktionen", "systemAiHeader": "SYSTEM-AI", "systemAiEnabled": "aktiv", "systemAiOff": "aus", "systemAiEdit": "Bearbeiten…", "systemAiConfigure": "Konfigurieren…", "systemAiOffBlurb": "Aus — Fehlererklärungen auf der Protokoll-Seite sind deaktiviert. Klicke Konfigurieren…, um einen Provider zu wählen (Ollama / OpenAI / LM Studio / vLLM / Eigene). Die Operator-Konfig wird direkt überschrieben; kein Daemon-Neustart nötig.", "mcpServersCount": "{n} {n, plural, =1{Server} other{Server}}", "@mcpServersCount": { "placeholders": { "n": { "type": "int" } } }, "mcpRediscoverTooltip": "Discovery neu ausführen", "mcpAddTooltip": "MCP-Server hinzufügen", "mcpRemoveTooltip": "Server entfernen", "mcpToolsCount": "{n} Tools", "@mcpToolsCount": { "placeholders": { "n": { "type": "int" } } }, "n8nEndpointsCount": "{n} {n, plural, =1{Endpunkt} other{Endpunkte}}", "@n8nEndpointsCount": { "placeholders": { "n": { "type": "int" } } }, "n8nWorkflowsCount": "{n} Workflows", "@n8nWorkflowsCount": { "placeholders": { "n": { "type": "int" } } }, "n8nRediscoverTooltip": "Discovery neu ausführen", "n8nAddTooltip": "n8n-Endpunkt hinzufügen", "n8nRemoveTooltip": "Endpunkt entfernen", "addMcpTitle": "MCP-Server hinzufügen", "addMcpIntro": "Tools, die der Server via `tools/list` anbietet, erscheinen im Store als `mcp..`-Capabilities.", "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..`-Capabilities.", "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, Capability…", "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": "Veröffentlicht", "storeStatusAlpha": "Alpha", "storeStatusPlanned": "Geplant", "storeInstalledOnly": "Installiert", "storeNResults": "{n} Treffer", "@storeNResults": { "placeholders": { "n": { "type": "int" } } }, "storeFederationNudgeTitle": "Mehr Capabilities?", "storeFederationNudgeBody": "MCP-Server oder n8n-Endpunkt unter Einstellungen → MCP-Clients / N8N-Endpunkte konfigurieren. Entdeckte Tools und Workflows tauchen hier als `mcp..`- und `n8n..`-Capabilities auf — jeder Anthropic-/Community-MCP-Server bringt mehrere auf einmal.", "storeFederationNudgeButton": "Einstellungen öffnen", "auditTitle": "Protokoll", "auditNoEvents": "Noch keine Ereignisse", "auditNoEventsHint": "Starte einen Flow, um den Audit-Stream zu füllen.\nEreignisse erscheinen innerhalb von Sekunden.", "auditFilterAll": "alle", "auditFilterFlow": "Flow", "auditFilterStep": "Step", "auditFilterModule": "Modul", "auditClearLogTooltip": "Protokoll löschen (nur local/dev Kanal)", "auditClearedToast": "{n} Ereignisse auf Kanal „{channel}\" gelöscht. Chain 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-Chain 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": "`fai install ` ausführen oder ~/.fai/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": "Capabilities", "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…", "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": "PAYLOAD-VORSCHAU", "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-chained 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", "doctorRecheckTooltip": "Erneut prüfen", "doctorEventLogSection": "Audit-Log", "doctorModulesApprovalsSection": "Module & Freigaben", "doctorHostServicesSection": "Host-Dienste", "doctorDaemonFilesSection": "Daemon-Dateien", "doctorDaemonControlSection": "Daemon-Steuerung", "doctorChainIntact": "Hash-Chain intakt", "doctorChainIntactDetail": "{n} Ereignisse · prev_event_sha256 lückenlos verifiziert", "@doctorChainIntactDetail": { "placeholders": { "n": { "type": "int" } } }, "doctorChainTampered": "Manipulation erkannt", "doctorChainTamperedDetail": "{verified} von {total} verifiziert vor Mismatch bei {id}", "@doctorChainTamperedDetail": { "placeholders": { "verified": { "type": "int" }, "total": { "type": "int" }, "id": { "type": "String" } } }, "doctorChainPillOk": "WORM-1", "doctorChainPillTamper": "MANIPULIERT", "doctorVerifyNow": "Jetzt prüfen", "doctorRestart": "Neustart", "doctorStart": "Starten", "doctorStop": "Stoppen", "doctorStatusAction": "Status", "doctorRunningOn": "Läuft auf {name}: {endpoint}", "@doctorRunningOn": { "placeholders": { "name": { "type": "String" }, "endpoint": { "type": "String" } } }, "doctorStoppedOn": "{name}-Daemon gestoppt", "@doctorStoppedOn": { "placeholders": { "name": { "type": "String" } } }, "doctorStatusUnknown": "Daemon-Status: …", "doctorPillRunning": "läuft", "doctorPillStopped": "gestoppt", "doctorDaemonControlHint": "Studio ruft das Platform-Binary auf — entspricht `fai 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 `fai 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 `fai 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..` Capabilities 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..` Capabilities. Einmal konfigurieren, im Store sichtbar.", "n8nEmpty": "Keine n8n-Endpunkte konfiguriert. + klicken zum Hinzufügen.", "hubUnreachable": "Hub nicht erreichbar", "hubUnreachableHint": "Hub starten mit `fai serve`.", "languageEnglish": "English", "languageGerman": "Deutsch" }