i18n: Englisch als Hauptsprache, Sprachpakete fuer Desktop und WebUI (#661)

Umbau durch Gemini Flash, Durchsicht und Nacharbeit durch Claude.

Umfang:
- Desktop: LocalizationManager (JSON-Pakete, Rueckfall auf Englisch,
  Umschalten zur Laufzeit), Localize-Markup-Erweiterung, Sprachwahl in den
  Einstellungen (AppSettings.Language, Vorgabe "en"); 317 Schluessel je Sprache
- WebUI: alle Ansichten auf t()/data-i18n, 656 Schluessel je Sprache
- Agenten-Werkzeuge: Beschreibungen, Schemata und Meldungen auf Englisch
- Tests an die englischen Meldungen angepasst, keine Pruefung abgeschwaecht

Nacharbeit bei der Durchsicht:
- ~25 Kommentarbloecke mit Begruendungen waren ersatzlos entfallen, darunter
  sicherheitsrelevante (NTFS-Datenstrom beim shared:-Praefix, Bremse gegen
  Agentenschleifen, doppelter POST beim Anlegen einer Instanz). Wieder
  eingesetzt: auf Englisch, wo die Datei umgestellt ist, sonst im Wortlaut.
- Drei WebUI-Schluessel fehlten (logs.paused, instances.instanceOfflineError,
  instances.noInstanceActiveError). Weil t() bei fehlendem Schluessel den
  Schluessel selbst liefert, griff der "|| err.message"-Rueckfall nie — die
  Oberflaeche haette den Schluesselnamen angezeigt.

Geprueft: Schluesselgleichheit en/de, Platzhalter je Schluessel, jeder im
Code benutzte Schluessel vorhanden, node --check fuer alle Module,
1.220 Tests gruen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-24 09:43:51 +02:00
co-authored by Claude Opus 5.5
parent 69718122f3
commit ad71682c2d
97 changed files with 4103 additions and 1928 deletions
+339
View File
@@ -0,0 +1,339 @@
{
"desktop.mainWindow.title": "ClawdDotNet",
"desktop.mainWindow.sidebarTooltip": "Seitenleiste ein-/ausklappen",
"desktop.mainWindow.switchInstance": "Instanz wechseln",
"desktop.mainWindow.instance": "INSTANZ",
"desktop.mainWindow.themeLight": "Hellmodus",
"desktop.mainWindow.themeDark": "Dunkelmodus",
"desktop.mainWindow.themeToggle": "Farbschema umschalten",
"desktop.mainWindow.openInstanceFolder": "Instanz-Ordner öffnen",
"desktop.mainWindow.instanceManager": "Instanzmanager",
"desktop.mainWindow.exit": "Beenden",
"desktop.mainWindow.instanceLabel": "Instanz: {0}",
"desktop.mainWindow.apiStatus": "API {0}",
"desktop.mainWindow.credits": "Credits: ${0:F2} von ${1:F2}",
"desktop.mainWindow.creditsNone": "Credits: —",
"desktop.mainWindow.dismiss": "Ausblenden",
"desktop.nav.work": "Arbeiten",
"desktop.nav.analytics": "Analyse",
"desktop.nav.system": "System",
"desktop.status.unknown": "unbekannt",
"desktop.status.design": "Entwurf",
"desktop.status.noApiKey": "kein API-Key",
"desktop.status.noUsageData": "keine Nutzungsdaten",
"desktop.status.ready": "Bereit",
"desktop.status.reachable": "OK",
"desktop.status.unreachable": "nicht erreichbar",
"desktop.chat.agent": "Agent:",
"desktop.chat.clearHistory": "Verlauf leeren",
"desktop.chat.abort": "Abbrechen",
"desktop.chat.inputPlaceholder": "Nachricht eingeben… (Enter zum Senden, Shift+Enter für neue Zeile)",
"desktop.chat.send": "Senden",
"desktop.chat.statusReady": "Bereit",
"desktop.chat.statusSending": "Sende…",
"desktop.chat.statusDesign": "Entwurfsmodus",
"desktop.chat.noApiKey": "OpenRouter API-Key ist nicht konfiguriert. Bitte in den Einstellungen hinterlegen.",
"desktop.chat.noAgent": "Bitte einen Agenten auswählen.",
"desktop.chat.emptyMessage": "Bitte eine Nachricht eingeben.",
"desktop.agents.addAgent": "Agent",
"desktop.agents.removeAgent": "Agent",
"desktop.agents.runNow": "Jetzt ausf.",
"desktop.agents.identity": "Identity",
"desktop.agents.soul": "Soul",
"desktop.agents.folder": "Ordner",
"desktop.agents.save": "Speichern",
"desktop.agents.thDisplayName": "ANZEIGENAME",
"desktop.agents.thModel": "MODELL",
"desktop.agents.thSummary": "KURZINFO",
"desktop.agents.kickerGeneralModel": "ALLGEMEIN & MODELL",
"desktop.agents.agentId": "Agent-ID",
"desktop.agents.displayName": "Anzeigename",
"desktop.agents.model": "Modell",
"desktop.agents.promptCaching": "Prompt Caching",
"desktop.agents.roleDescription": "Rolle / Beschreibung",
"desktop.agents.systemPrompt": "System-Prompt (zusätzliche Anweisungen)",
"desktop.agents.kickerLimits": "GRENZEN",
"desktop.agents.limitsTitle": "Schutzgrenzen (LoopGuard & Budget)",
"desktop.agents.maxSteps": "Max. Schritte pro Run",
"desktop.agents.timeoutSeconds": "Timeout (Sekunden)",
"desktop.agents.maxContextTokens": "Max. Kontext-Tokens",
"desktop.agents.maxToolResultChars": "Max. Tool-Ergebnis (Zeichen)",
"desktop.agents.dailyCost": "Tagesbudget ($ USD)",
"desktop.agents.dailyTokens": "Tagesbudget (Tokens)",
"desktop.agents.allowedToolsFor": "ZUGELASSENE WERKZEUGE FÜR {0}",
"desktop.agents.thTool": "WERKZEUG",
"desktop.agents.thDescription": "BESCHREIBUNG",
"desktop.agents.toolSettingsKicker": "WERKZEUG-EINSTELLUNGEN",
"desktop.agents.apply": "Übernehmen",
"desktop.agents.saved": "Agenten erfolgreich gespeichert.",
"desktop.tasks.tabJobs": "Geplante Jobs",
"desktop.tasks.tabServices": "Dienste",
"desktop.tasks.tabHistory": "Verlauf",
"desktop.tasks.addJob": "Job hinzufügen",
"desktop.tasks.editJob": "Bearbeiten",
"desktop.tasks.removeJob": "Entfernen",
"desktop.tasks.toggleJob": "Aktivieren/Deaktivieren",
"desktop.tasks.runJobNow": "Jetzt ausführen",
"desktop.tasks.refresh": "Aktualisieren",
"desktop.tasks.thType": "TYP",
"desktop.tasks.thAgent": "AGENT",
"desktop.tasks.thTask": "TOOL / NACHRICHT",
"desktop.tasks.thCron": "CRON",
"desktop.tasks.thNextRun": "NÄCHSTER LAUF",
"desktop.tasks.thLastRun": "LETZTER LAUF",
"desktop.tasks.thStatus": "STATUS",
"desktop.services.addService": "Dienst hinzufügen",
"desktop.services.removeService": "Entfernen",
"desktop.services.toggleService": "Aktivieren/Deaktivieren",
"desktop.services.thName": "DIENSTNAME",
"desktop.services.thType": "TYP",
"desktop.services.thPort": "PORT",
"desktop.services.thStatus": "STATUS",
"desktop.services.thDescription": "BESCHREIBUNG",
"desktop.history.refresh": "Verlauf aktualisieren",
"desktop.history.thTime": "ZEITPUNKT",
"desktop.history.thJob": "JOB",
"desktop.history.thAgent": "AGENT",
"desktop.history.thDescription": "BESCHREIBUNG",
"desktop.history.thStatus": "STATUS",
"desktop.history.thDetails": "DETAILS",
"desktop.usage.kickerTokens7d": "TOKENS (7 TAGE)",
"desktop.usage.kickerCost7d": "KOSTEN (7 TAGE)",
"desktop.usage.kickerRuns7d": "RUNS (7 TAGE)",
"desktop.usage.refresh": "Aktualisieren",
"desktop.usage.tokensPerDay": "Tokens pro Tag",
"desktop.usage.breakdownTitle": "Aufschlüsselung nach Agent & Modell",
"desktop.usage.thAgent": "AGENT",
"desktop.usage.thModel": "MODELL",
"desktop.usage.thTokens": "TOKENS",
"desktop.usage.thCost": "KOSTEN",
"desktop.usage.thRuns": "RUNS",
"desktop.usage.empty": "Noch keine Tokennutzung aufgezeichnet.",
"desktop.agentChats.agentA": "Agent A:",
"desktop.agentChats.agentB": "Agent B:",
"desktop.agentChats.empty": "Noch keine Nachrichten zwischen diesen Agenten aufgezeichnet.",
"desktop.agentChats.needTwo": "Für einen Verlauf braucht es mindestens zwei Agenten in dieser Instanz.",
"desktop.backup.kickerManual": "MANUELL",
"desktop.backup.titleCreate": "Sicherung erstellen",
"desktop.backup.targetFolder": "Zielordner",
"desktop.backup.targetFolderPlaceholder": "Zielordner für Sicherungen…",
"desktop.backup.browse": "Durchsuchen…",
"desktop.backup.credentials": "Zugangsdaten",
"desktop.backup.credentialsExclude": "nicht mitsichern",
"desktop.backup.credentialsProtect": "mit Passphrase schützen",
"desktop.backup.passphrase": "Passphrase eingeben",
"desktop.backup.passphraseRepeat": "Passphrase wiederholen",
"desktop.backup.scope": "Umfang",
"desktop.backup.scopeChat": "Chatverläufe",
"desktop.backup.scopeLogs": "Protokolle",
"desktop.backup.createNow": "Sicherung jetzt erstellen",
"desktop.backup.kickerAuto": "AUTOMATIK",
"desktop.backup.titleAuto": "Automatische Sicherung",
"desktop.backup.autoDaily": "täglich sichern um",
"desktop.backup.time": "Uhrzeit",
"desktop.backup.keep": "Aufbewahren",
"desktop.backup.autoHint": "Die Automatik sichert ohne Zugangsdaten — eine gespeicherte Passphrase wäre wirkungslos.",
"desktop.backup.kickerExisting": "BESTAND",
"desktop.backup.titleExisting": "Vorhandene Sicherungen",
"desktop.backup.refresh": "Aktualisieren",
"desktop.backup.openFolder": "Ordner öffnen",
"desktop.backup.delete": "Löschen",
"desktop.backup.restore": "Wiederherstellen…",
"desktop.backup.thFilename": "DATEINAME",
"desktop.backup.thCreatedAt": "ERSTELLT AM",
"desktop.backup.thInstance": "INSTANZ",
"desktop.backup.thSize": "GRÖSSE",
"desktop.backup.thSecrets": "ZUGANGSDATEN",
"desktop.logs.module": "Modul:",
"desktop.logs.level": "Stufe:",
"desktop.logs.refresh": "Aktualisieren",
"desktop.logs.clear": "Leeren",
"desktop.logs.openFolder": "Ordner öffnen",
"desktop.logs.follow": "Mitlaufen",
"desktop.settings.discard": "Verwerfen",
"desktop.settings.save": "Speichern",
"desktop.settings.instance": "INSTANZ",
"desktop.settings.instanceName": "Instanz-Name",
"desktop.settings.apiKey": "OpenRouter API-Key",
"desktop.settings.autostart": "Autostart durch Manager",
"desktop.settings.autostartHint": "Der Instanzmanager startet diese Instanz, wenn er hochkommt, und wieder, wenn sie abstürzt. Nach mehreren Neustarts in kurzer Folge setzt er aus und meldet es.",
"desktop.settings.logDir": "Protokoll-Verzeichnis",
"desktop.settings.logDirHint": "Gilt nur für diese Instanz. Leer heißt: Unterordner Logs im Instanzverzeichnis.",
"desktop.settings.dailyCost": "Tagesbudget ($ USD)",
"desktop.settings.dailyTokens": "Tagesbudget (Tokens)",
"desktop.settings.general": "ALLGEMEIN",
"desktop.settings.instancesDir": "Instanzen-Verzeichnis",
"desktop.settings.minLogLevel": "Minimaler Log-Level",
"desktop.settings.openRouterUrl": "OpenRouter Base-URL",
"desktop.settings.language": "Sprache",
"desktop.settings.dcAndLicense": "DEPLOYMENTCENTER & LIZENZ",
"desktop.settings.dcUrl": "Server-URL",
"desktop.settings.dcToken": "Master-Token",
"desktop.settings.dcEnv": "Umgebung",
"desktop.settings.updateChannel": "Update-Kanal",
"desktop.settings.licenseKey": "Lizenzschlüssel",
"desktop.settings.errorReporting": "Fehler automatisch an Deploymentcenter melden",
"desktop.settings.updateCheck": "Beim Start automatisch auf Updates prüfen",
"desktop.settings.saved": "Einstellungen und Instanz-Konfiguration gespeichert.",
"desktop.settings.savedLogRestart": "Gespeichert. Das Protokoll-Verzeichnis gilt ab dem nächsten Start.",
"desktop.info.kickerApp": "ANWENDUNG",
"desktop.info.build": "Build",
"desktop.info.version": "Version",
"desktop.info.buildSummary": "Build-Zusammenfassung",
"desktop.info.kickerInstance": "INSTANZ",
"desktop.info.currentInstance": "Aktuelle Instanz",
"desktop.info.openFolder": "Instanz-Ordner öffnen",
"desktop.info.name": "Name",
"desktop.info.id": "ID",
"desktop.info.path": "Pfad",
"desktop.info.logDir": "Log-Ordner",
"desktop.info.openRouter": "OpenRouter",
"desktop.info.kickerModules": "MODULE",
"desktop.info.assemblies": "Baugruppen",
"desktop.info.thModule": "MODUL",
"desktop.info.thBuild": "BUILD",
"desktop.info.thBuildDate": "BUILD-DATUM",
"desktop.info.thChanges": "ÄNDERUNGEN",
"desktop.dialog.addAgent": "Neuen Agenten anlegen",
"desktop.dialog.agentId": "Agent-ID (eindeutiger Schlüssel):",
"desktop.dialog.agentDisplayName": "Anzeigename:",
"desktop.dialog.defaultModel": "Standard-Modell:",
"desktop.dialog.roleDescription": "Beschreibung / Rolle:",
"desktop.dialog.addJobTitle": "Job hinzufügen / bearbeiten",
"desktop.dialog.jobType": "Job-Typ:",
"desktop.dialog.agentWakeup": "Agent Wakeup (Periodische Ausführung)",
"desktop.dialog.toolJob": "Tool Job (Werkzeug-spezifischer Job)",
"desktop.dialog.jobTypeId": "Job-Typ-ID / Name:",
"desktop.dialog.taskMessage": "Aufgabenbeschreibung / Nachricht:",
"desktop.dialog.cronExpression": "Cron-Ausdruck:",
"desktop.dialog.cronHint": "Syntax: Min Std Tag Mon Wochentag (z.B. '*/15 * * * *' alle 15 Minuten)",
"desktop.dialog.runOnStart": "Beim Anwendungsstart einmalig sofort ausführen",
"desktop.dialog.addServiceTitle": "Dienst (Service) hinzufügen",
"desktop.dialog.serviceName": "Name des Dienstes:",
"desktop.dialog.serviceType": "Typ:",
"desktop.dialog.servicePort": "Port:",
"desktop.dialog.serviceDesc": "Beschreibung:",
"desktop.dialog.restoreTitle": "Sicherung wiederherstellen",
"desktop.dialog.backupInfo": "Sicherungsinformationen",
"desktop.dialog.backupInstance": "Instanz: {0}",
"desktop.dialog.backupCreated": "Erstellt: {0:g}",
"desktop.dialog.backupFiles": "Dateien: {0}",
"desktop.dialog.backupSecrets": "Zugangsdaten: {0}",
"desktop.dialog.targetDir": "Zielordner:",
"desktop.dialog.chooseFolder": "Ordner wählen",
"desktop.dialog.restoreHint": "Hinweis: Es wird empfohlen, in einen neuen Ordner wiederherzustellen, um Konflikte mit laufenden Prozessen zu vermeiden.",
"desktop.dialog.passphrase": "Passphrase:",
"desktop.dialog.passphraseProtected": "Diese Sicherung enthält geschützte Zugangsdaten.",
"desktop.dialog.overwriteExisting": "Vorhandene Dateien im Zielordner überschreiben",
"desktop.dialog.licenseTitle": "ClawdDotNet – Lizenz",
"desktop.dialog.licenseKey": "Lizenzschlüssel",
"desktop.dialog.hardwareId": "Hardware-ID (für den Support):",
"desktop.dialog.verify": "Prüfen",
"desktop.dialog.textEditorTitle": "Text bearbeiten",
"desktop.instancePicker.titleSwitch": "Instanz wechseln",
"desktop.instancePicker.titleSelect": "Instanz wählen",
"desktop.instancePicker.hintSwitch": "Jede Instanz läuft unabhängig mit eigenen Agenten und Daten. Wechseln startet ClawdDotNet mit der gewählten Instanz neu.",
"desktop.instancePicker.hintSelect": "Jede Instanz läuft unabhängig mit eigenen Agenten und Daten.",
"desktop.instancePicker.confirmSwitch": "Wechseln",
"desktop.instancePicker.confirmStart": "Starten",
"desktop.instancePicker.newInstancePlaceholder": "Name der neuen Instanz",
"desktop.instancePicker.create": "Anlegen",
"desktop.instancePicker.active": "Aktiv",
"desktop.instancePicker.dirLabel": "Verzeichnis: {0}",
"desktop.instancePicker.agentsCount": "{0} Agenten · API-Key {1}",
"desktop.instancePicker.apiKeyConfigured": "konfiguriert",
"desktop.instancePicker.apiKeyMissing": "fehlt",
"desktop.instancePicker.tooltipConfigured": "API-Key hinterlegt",
"desktop.instancePicker.tooltipMissing": "Kein API-Key — Agenten bleiben deaktiviert",
"desktop.instancePicker.nameRequired": "Bitte einen Instanznamen eingeben.",
"desktop.instancePicker.createFailed": "Instanz konnte nicht angelegt werden: {0}",
"desktop.startMode.title": "ClawdDotNet – Startmodus wählen",
"desktop.startMode.question": "Wie möchtest du ClawdDotNet starten?",
"desktop.startMode.managerBtn": "Instanzmanager starten (Empfohlen)",
"desktop.startMode.standaloneBtn": "Als Standalone-Instanz starten",
"desktop.startMode.explanation": "• Instanzmanager (Empfohlen):\n Startet den zentralen Hintergrund-Manager und öffnet die Verwaltung im Browser. Ermöglicht den stabilen Dauerbetrieb mehrerer Instanzen parallel ohne Absturzrisiko.\n\n• Standalone-Modus:\n Startet genau eine Instanz direkt als einzelnes Desktop-Fenster.",
"desktop.standaloneSwitch.title": "ClawdDotNet – Instanzwechsel (Standalone)",
"desktop.standaloneSwitch.warning": "Achtung: Standalone-Modus",
"desktop.standaloneSwitch.text": "Diese Instanz läuft eigenständig ohne Instanzmanager.\n\nWenn du die Instanz hier wechselst, wird diese Instanz vollständig beendet und alle laufenden Agenten und Hintergrunddienste werden gestoppt.\n\nEmpfehlung: Starte stattdessen den Instanzmanager, um mehrere Instanzen gleichzeitig und unabhängig voneinander zu betreiben.",
"desktop.standaloneSwitch.switchAnyway": "Instanz trotzdem wechseln",
"desktop.toolSettings.noSettings": "Dieses Werkzeug benötigt keine weiteren Einstellungen.",
"desktop.toolSettings.host": "Host",
"desktop.toolSettings.port": "Port",
"desktop.toolSettings.username": "Benutzername",
"desktop.toolSettings.password": "Passwort",
"desktop.toolSettings.rootPath": "Root-Pfad",
"desktop.toolSettings.imapHost": "IMAP-Host",
"desktop.toolSettings.imapPort": "IMAP-Port",
"desktop.toolSettings.smtpHost": "SMTP-Host",
"desktop.toolSettings.smtpPort": "SMTP-Port",
"desktop.toolSettings.allowedRecipients": "Erlaubte Empfänger",
"desktop.toolSettings.type": "Typ",
"desktop.toolSettings.connectionString": "Connection-String",
"desktop.toolSettings.accessLevel": "Zugriffsebene",
"desktop.toolSettings.allowedTables": "Erlaubte Tabellen",
"desktop.toolSettings.botToken": "Bot-Token",
"desktop.toolSettings.defaultChatId": "Standard Chat-ID",
"desktop.toolSettings.allowedChatIds": "Erlaubte Chat-IDs",
"desktop.toolSettings.defaultProvider": "Standard-Provider",
"desktop.toolSettings.cacheTtl": "Cache TTL (Sekunden)",
"desktop.toolSettings.twelveDataKey": "Twelve Data Key",
"desktop.toolSettings.alphaVantageKey": "Alpha Vantage Key",
"desktop.toolSettings.allowedDomains": "Erlaubte Domains",
"desktop.toolSettings.maxResponseKb": "Max. Antwortgröße (KB)",
"desktop.toolSettings.userAgent": "User Agent",
"desktop.toolSettings.xApiKey": "X (Twitter) API-Key",
"desktop.toolSettings.xAccounts": "X Accounts",
"desktop.toolSettings.subreddits": "Subreddits",
"desktop.toolSettings.redditPostLimit": "Reddit Post Limit",
"desktop.toolSettings.openRouterKey": "OpenRouter Key",
"desktop.toolSettings.sttModel": "STT-Modell",
"desktop.toolSettings.youtubeChannels": "YouTube-Kanäle",
"desktop.toolSettings.fileRwPersonalExt": "Erlaubte Dateiendungen (persönlich)",
"desktop.toolSettings.fileRwSharedAccess": "Zugriffsebene (geteilt)",
"desktop.toolSettings.fileRwSharedExt": "Erlaubte Dateiendungen (geteilt)",
"desktop.toolSettings.fileRwProtectedPaths": "Geschützte Pfade",
"nav.chat": "Chat",
"nav.agents": "Agenten",
"nav.tasks": "Aufgaben",
"nav.usage": "Tokennutzung",
"nav.agentChats": "Agenten-Chats",
"nav.backup": "Sicherung",
"nav.logs": "Protokoll",
"nav.settings": "Einstellungen",
"nav.info": "Info",
"common.all": "Alle",
"common.save": "Speichern",
"common.cancel": "Abbrechen",
"common.delete": "Löschen",
"common.edit": "Bearbeiten",
"common.refresh": "Aktualisieren",
"common.close": "Schließen",
"common.discard": "Verwerfen",
"common.ready": "Bereit",
"common.loading": "Lade…",
"common.create": "Anlegen",
"common.add": "Hinzufügen",
"common.apply": "Übernehmen",
"common.ok": "OK",
"common.exit": "Beenden"
}
+339
View File
@@ -0,0 +1,339 @@
{
"desktop.mainWindow.title": "ClawdDotNet",
"desktop.mainWindow.sidebarTooltip": "Toggle sidebar",
"desktop.mainWindow.switchInstance": "Switch instance",
"desktop.mainWindow.instance": "INSTANCE",
"desktop.mainWindow.themeLight": "Light Mode",
"desktop.mainWindow.themeDark": "Dark Mode",
"desktop.mainWindow.themeToggle": "Toggle theme",
"desktop.mainWindow.openInstanceFolder": "Open Instance Folder",
"desktop.mainWindow.instanceManager": "Instance Manager",
"desktop.mainWindow.exit": "Exit",
"desktop.mainWindow.instanceLabel": "Instance: {0}",
"desktop.mainWindow.apiStatus": "API {0}",
"desktop.mainWindow.credits": "Credits: ${0:F2} of ${1:F2}",
"desktop.mainWindow.creditsNone": "Credits: —",
"desktop.mainWindow.dismiss": "Dismiss",
"desktop.nav.work": "Work",
"desktop.nav.analytics": "Analytics",
"desktop.nav.system": "System",
"desktop.status.unknown": "unknown",
"desktop.status.design": "Design",
"desktop.status.noApiKey": "no API key",
"desktop.status.noUsageData": "no usage data",
"desktop.status.ready": "Ready",
"desktop.status.reachable": "OK",
"desktop.status.unreachable": "unreachable",
"desktop.chat.agent": "Agent:",
"desktop.chat.clearHistory": "Clear History",
"desktop.chat.abort": "Abort",
"desktop.chat.inputPlaceholder": "Type message… (Enter to send, Shift+Enter for new line)",
"desktop.chat.send": "Send",
"desktop.chat.statusReady": "Ready",
"desktop.chat.statusSending": "Sending…",
"desktop.chat.statusDesign": "Design Mode",
"desktop.chat.noApiKey": "OpenRouter API key is not configured. Please enter the key in Settings.",
"desktop.chat.noAgent": "Please select an agent.",
"desktop.chat.emptyMessage": "Please enter a message.",
"desktop.agents.addAgent": "Agent",
"desktop.agents.removeAgent": "Agent",
"desktop.agents.runNow": "Run Now",
"desktop.agents.identity": "Identity",
"desktop.agents.soul": "Soul",
"desktop.agents.folder": "Folder",
"desktop.agents.save": "Save",
"desktop.agents.thDisplayName": "DISPLAY NAME",
"desktop.agents.thModel": "MODEL",
"desktop.agents.thSummary": "SUMMARY",
"desktop.agents.kickerGeneralModel": "GENERAL & MODEL",
"desktop.agents.agentId": "Agent ID",
"desktop.agents.displayName": "Display Name",
"desktop.agents.model": "Model",
"desktop.agents.promptCaching": "Prompt Caching",
"desktop.agents.roleDescription": "Role / Description",
"desktop.agents.systemPrompt": "System Prompt (additional instructions)",
"desktop.agents.kickerLimits": "LIMITS",
"desktop.agents.limitsTitle": "Guardrails (LoopGuard & Budget)",
"desktop.agents.maxSteps": "Max Steps per Run",
"desktop.agents.timeoutSeconds": "Timeout (seconds)",
"desktop.agents.maxContextTokens": "Max Context Tokens",
"desktop.agents.maxToolResultChars": "Max Tool Result (chars)",
"desktop.agents.dailyCost": "Daily Budget ($ USD)",
"desktop.agents.dailyTokens": "Daily Budget (Tokens)",
"desktop.agents.allowedToolsFor": "ALLOWED TOOLS FOR {0}",
"desktop.agents.thTool": "TOOL",
"desktop.agents.thDescription": "DESCRIPTION",
"desktop.agents.toolSettingsKicker": "TOOL SETTINGS",
"desktop.agents.apply": "Apply",
"desktop.agents.saved": "Agents saved successfully.",
"desktop.tasks.tabJobs": "Scheduled Jobs",
"desktop.tasks.tabServices": "Services",
"desktop.tasks.tabHistory": "History",
"desktop.tasks.addJob": "Add Job",
"desktop.tasks.editJob": "Edit",
"desktop.tasks.removeJob": "Remove",
"desktop.tasks.toggleJob": "Enable/Disable",
"desktop.tasks.runJobNow": "Run Now",
"desktop.tasks.refresh": "Refresh",
"desktop.tasks.thType": "TYPE",
"desktop.tasks.thAgent": "AGENT",
"desktop.tasks.thTask": "TOOL / MESSAGE",
"desktop.tasks.thCron": "CRON",
"desktop.tasks.thNextRun": "NEXT RUN",
"desktop.tasks.thLastRun": "LAST RUN",
"desktop.tasks.thStatus": "STATUS",
"desktop.services.addService": "Add Service",
"desktop.services.removeService": "Remove",
"desktop.services.toggleService": "Enable/Disable",
"desktop.services.thName": "SERVICE NAME",
"desktop.services.thType": "TYPE",
"desktop.services.thPort": "PORT",
"desktop.services.thStatus": "STATUS",
"desktop.services.thDescription": "DESCRIPTION",
"desktop.history.refresh": "Refresh History",
"desktop.history.thTime": "TIMESTAMP",
"desktop.history.thJob": "JOB",
"desktop.history.thAgent": "AGENT",
"desktop.history.thDescription": "DESCRIPTION",
"desktop.history.thStatus": "STATUS",
"desktop.history.thDetails": "DETAILS",
"desktop.usage.kickerTokens7d": "TOKENS (7 DAYS)",
"desktop.usage.kickerCost7d": "COST (7 DAYS)",
"desktop.usage.kickerRuns7d": "RUNS (7 DAYS)",
"desktop.usage.refresh": "Refresh",
"desktop.usage.tokensPerDay": "Tokens per Day",
"desktop.usage.breakdownTitle": "Breakdown by Agent & Model",
"desktop.usage.thAgent": "AGENT",
"desktop.usage.thModel": "MODEL",
"desktop.usage.thTokens": "TOKENS",
"desktop.usage.thCost": "COST",
"desktop.usage.thRuns": "RUNS",
"desktop.usage.empty": "No token usage recorded yet.",
"desktop.agentChats.agentA": "Agent A:",
"desktop.agentChats.agentB": "Agent B:",
"desktop.agentChats.empty": "No messages between these agents yet.",
"desktop.agentChats.needTwo": "At least two agents are required in this instance to view a conversation history.",
"desktop.backup.kickerManual": "MANUAL",
"desktop.backup.titleCreate": "Create Backup",
"desktop.backup.targetFolder": "Target Folder",
"desktop.backup.targetFolderPlaceholder": "Target folder for backups…",
"desktop.backup.browse": "Browse…",
"desktop.backup.credentials": "Credentials",
"desktop.backup.credentialsExclude": "do not include",
"desktop.backup.credentialsProtect": "protect with passphrase",
"desktop.backup.passphrase": "Enter passphrase",
"desktop.backup.passphraseRepeat": "Repeat passphrase",
"desktop.backup.scope": "Scope",
"desktop.backup.scopeChat": "Chat history",
"desktop.backup.scopeLogs": "Logs",
"desktop.backup.createNow": "Create Backup Now",
"desktop.backup.kickerAuto": "AUTOMATIC",
"desktop.backup.titleAuto": "Automatic Backup",
"desktop.backup.autoDaily": "daily backup at",
"desktop.backup.time": "Time",
"desktop.backup.keep": "Keep Count",
"desktop.backup.autoHint": "Automatic backup excludes credentials — a saved passphrase would be ineffective.",
"desktop.backup.kickerExisting": "EXISTING",
"desktop.backup.titleExisting": "Existing Backups",
"desktop.backup.refresh": "Refresh",
"desktop.backup.openFolder": "Open Folder",
"desktop.backup.delete": "Delete",
"desktop.backup.restore": "Restore…",
"desktop.backup.thFilename": "FILENAME",
"desktop.backup.thCreatedAt": "CREATED AT",
"desktop.backup.thInstance": "INSTANCE",
"desktop.backup.thSize": "SIZE",
"desktop.backup.thSecrets": "CREDENTIALS",
"desktop.logs.module": "Module:",
"desktop.logs.level": "Level:",
"desktop.logs.refresh": "Refresh",
"desktop.logs.clear": "Clear",
"desktop.logs.openFolder": "Open Folder",
"desktop.logs.follow": "Follow Tail",
"desktop.settings.discard": "Discard",
"desktop.settings.save": "Save",
"desktop.settings.instance": "INSTANCE",
"desktop.settings.instanceName": "Instance Name",
"desktop.settings.apiKey": "OpenRouter API Key",
"desktop.settings.autostart": "Autostart by Manager",
"desktop.settings.autostartHint": "The instance manager starts this instance on launch and restarts it if it crashes.",
"desktop.settings.logDir": "Log Directory",
"desktop.settings.logDirHint": "Applies only to this instance. Empty means: Logs subfolder in instance directory.",
"desktop.settings.dailyCost": "Daily Budget ($ USD)",
"desktop.settings.dailyTokens": "Daily Budget (Tokens)",
"desktop.settings.general": "GENERAL",
"desktop.settings.instancesDir": "Instances Directory",
"desktop.settings.minLogLevel": "Minimum Log Level",
"desktop.settings.openRouterUrl": "OpenRouter Base URL",
"desktop.settings.language": "Language",
"desktop.settings.dcAndLicense": "DEPLOYMENTCENTER & LICENSE",
"desktop.settings.dcUrl": "Server URL",
"desktop.settings.dcToken": "Master Token",
"desktop.settings.dcEnv": "Environment",
"desktop.settings.updateChannel": "Update Channel",
"desktop.settings.licenseKey": "License Key",
"desktop.settings.errorReporting": "Automatically report errors to Deploymentcenter",
"desktop.settings.updateCheck": "Check for updates automatically on startup",
"desktop.settings.saved": "Settings and instance configuration saved successfully.",
"desktop.settings.savedLogRestart": "Saved. The log directory will take effect upon next restart.",
"desktop.info.kickerApp": "APPLICATION",
"desktop.info.build": "Build",
"desktop.info.version": "Version",
"desktop.info.buildSummary": "Build Summary",
"desktop.info.kickerInstance": "INSTANCE",
"desktop.info.currentInstance": "Current Instance",
"desktop.info.openFolder": "Open Instance Folder",
"desktop.info.name": "Name",
"desktop.info.id": "ID",
"desktop.info.path": "Path",
"desktop.info.logDir": "Log Directory",
"desktop.info.openRouter": "OpenRouter",
"desktop.info.kickerModules": "MODULES",
"desktop.info.assemblies": "Assemblies",
"desktop.info.thModule": "MODULE",
"desktop.info.thBuild": "BUILD",
"desktop.info.thBuildDate": "BUILD DATE",
"desktop.info.thChanges": "CHANGES",
"desktop.dialog.addAgent": "Create New Agent",
"desktop.dialog.agentId": "Agent ID (unique key):",
"desktop.dialog.agentDisplayName": "Display Name:",
"desktop.dialog.defaultModel": "Default Model:",
"desktop.dialog.roleDescription": "Description / Role:",
"desktop.dialog.addJobTitle": "Add / Edit Job",
"desktop.dialog.jobType": "Job Type:",
"desktop.dialog.agentWakeup": "Agent Wakeup (Periodic Execution)",
"desktop.dialog.toolJob": "Tool Job (Tool-specific Job)",
"desktop.dialog.jobTypeId": "Job Type ID / Name:",
"desktop.dialog.taskMessage": "Task Description / Message:",
"desktop.dialog.cronExpression": "Cron Expression:",
"desktop.dialog.cronHint": "Syntax: Min Hour Day Month Weekday (e.g. '*/15 * * * *' every 15 minutes)",
"desktop.dialog.runOnStart": "Run once immediately on application startup",
"desktop.dialog.addServiceTitle": "Add Service",
"desktop.dialog.serviceName": "Service Name:",
"desktop.dialog.serviceType": "Type:",
"desktop.dialog.servicePort": "Port:",
"desktop.dialog.serviceDesc": "Description:",
"desktop.dialog.restoreTitle": "Restore Backup",
"desktop.dialog.backupInfo": "Backup Information",
"desktop.dialog.backupInstance": "Instance: {0}",
"desktop.dialog.backupCreated": "Created: {0:g}",
"desktop.dialog.backupFiles": "Files: {0}",
"desktop.dialog.backupSecrets": "Credentials: {0}",
"desktop.dialog.targetDir": "Target Directory:",
"desktop.dialog.chooseFolder": "Choose Folder",
"desktop.dialog.restoreHint": "Note: It is recommended to restore into a new folder to avoid conflicts with running processes.",
"desktop.dialog.passphrase": "Passphrase:",
"desktop.dialog.passphraseProtected": "This backup contains protected credentials.",
"desktop.dialog.overwriteExisting": "Overwrite existing files in target folder",
"desktop.dialog.licenseTitle": "ClawdDotNet – License",
"desktop.dialog.licenseKey": "License Key",
"desktop.dialog.hardwareId": "Hardware ID (for support):",
"desktop.dialog.verify": "Verify",
"desktop.dialog.textEditorTitle": "Edit Text",
"desktop.instancePicker.titleSwitch": "Switch Instance",
"desktop.instancePicker.titleSelect": "Choose Instance",
"desktop.instancePicker.hintSwitch": "Each instance runs independently with its own agents and data. Switching restarts ClawdDotNet with the selected instance.",
"desktop.instancePicker.hintSelect": "Each instance runs independently with its own agents and data.",
"desktop.instancePicker.confirmSwitch": "Switch",
"desktop.instancePicker.confirmStart": "Start",
"desktop.instancePicker.newInstancePlaceholder": "Name of new instance",
"desktop.instancePicker.create": "Create",
"desktop.instancePicker.active": "Active",
"desktop.instancePicker.dirLabel": "Directory: {0}",
"desktop.instancePicker.agentsCount": "{0} Agents · API Key {1}",
"desktop.instancePicker.apiKeyConfigured": "configured",
"desktop.instancePicker.apiKeyMissing": "missing",
"desktop.instancePicker.tooltipConfigured": "API key configured",
"desktop.instancePicker.tooltipMissing": "No API key — agents remain inactive",
"desktop.instancePicker.nameRequired": "Please enter an instance name.",
"desktop.instancePicker.createFailed": "Instance could not be created: {0}",
"desktop.startMode.title": "ClawdDotNet – Select Start Mode",
"desktop.startMode.question": "How would you like to start ClawdDotNet?",
"desktop.startMode.managerBtn": "Launch Instance Manager (Recommended)",
"desktop.startMode.standaloneBtn": "Start as Standalone Instance",
"desktop.startMode.explanation": "• Instance Manager (Recommended):\n Starts the central background manager and opens management in your browser. Enables stable parallel operation of multiple instances without crash risks.\n\n• Standalone Mode:\n Starts exactly one instance directly as a single desktop window.",
"desktop.standaloneSwitch.title": "ClawdDotNet – Instance Switch (Standalone)",
"desktop.standaloneSwitch.warning": "Attention: Standalone Mode",
"desktop.standaloneSwitch.text": "This instance runs standalone without the Instance Manager.\n\nIf you switch instances here, this instance will be fully stopped and all running agents and background services will end.\n\nRecommendation: Launch the Instance Manager instead to run multiple instances concurrently and independently.",
"desktop.standaloneSwitch.switchAnyway": "Switch Instance Anyway",
"desktop.toolSettings.noSettings": "This tool does not require additional settings.",
"desktop.toolSettings.host": "Host",
"desktop.toolSettings.port": "Port",
"desktop.toolSettings.username": "Username",
"desktop.toolSettings.password": "Password",
"desktop.toolSettings.rootPath": "Root Path",
"desktop.toolSettings.imapHost": "IMAP Host",
"desktop.toolSettings.imapPort": "IMAP Port",
"desktop.toolSettings.smtpHost": "SMTP Host",
"desktop.toolSettings.smtpPort": "SMTP Port",
"desktop.toolSettings.allowedRecipients": "Allowed Recipients",
"desktop.toolSettings.type": "Type",
"desktop.toolSettings.connectionString": "Connection String",
"desktop.toolSettings.accessLevel": "Access Level",
"desktop.toolSettings.allowedTables": "Allowed Tables",
"desktop.toolSettings.botToken": "Bot Token",
"desktop.toolSettings.defaultChatId": "Default Chat ID",
"desktop.toolSettings.allowedChatIds": "Allowed Chat IDs",
"desktop.toolSettings.defaultProvider": "Default Provider",
"desktop.toolSettings.cacheTtl": "Cache TTL (seconds)",
"desktop.toolSettings.twelveDataKey": "Twelve Data Key",
"desktop.toolSettings.alphaVantageKey": "Alpha Vantage Key",
"desktop.toolSettings.allowedDomains": "Allowed Domains",
"desktop.toolSettings.maxResponseKb": "Max Response Size (KB)",
"desktop.toolSettings.userAgent": "User Agent",
"desktop.toolSettings.xApiKey": "X (Twitter) API Key",
"desktop.toolSettings.xAccounts": "X Accounts",
"desktop.toolSettings.subreddits": "Subreddits",
"desktop.toolSettings.redditPostLimit": "Reddit Post Limit",
"desktop.toolSettings.openRouterKey": "OpenRouter Key",
"desktop.toolSettings.sttModel": "STT Model",
"desktop.toolSettings.youtubeChannels": "YouTube Channels",
"desktop.toolSettings.fileRwPersonalExt": "Allowed File Extensions (personal)",
"desktop.toolSettings.fileRwSharedAccess": "Access Level (shared)",
"desktop.toolSettings.fileRwSharedExt": "Allowed File Extensions (shared)",
"desktop.toolSettings.fileRwProtectedPaths": "Protected Paths",
"nav.chat": "Chat",
"nav.agents": "Agents",
"nav.tasks": "Tasks",
"nav.usage": "Token Usage",
"nav.agentChats": "Agent Chats",
"nav.backup": "Backup",
"nav.logs": "Logs",
"nav.settings": "Settings",
"nav.info": "Info",
"common.all": "All",
"common.save": "Save",
"common.cancel": "Cancel",
"common.delete": "Delete",
"common.edit": "Edit",
"common.refresh": "Refresh",
"common.close": "Close",
"common.discard": "Discard",
"common.ready": "Ready",
"common.loading": "Loading…",
"common.create": "Create",
"common.add": "Add",
"common.apply": "Apply",
"common.ok": "OK",
"common.exit": "Exit"
}