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"
}