diff --git a/packages/client/src/i18n/locales/de.ts b/packages/client/src/i18n/locales/de.ts index 49e808e..c289735 100644 --- a/packages/client/src/i18n/locales/de.ts +++ b/packages/client/src/i18n/locales/de.ts @@ -63,6 +63,9 @@ export default { confirm: 'Bestatigen', expand: 'Aufklappen', collapse: 'Zuklappen', + stop: 'Stoppen', + start: 'Starten', + expired: 'Abgelaufen', }, // Sidebar @@ -81,7 +84,7 @@ export default { usage: 'Nutzung', skillsUsage: 'Skill-Nutzung', channels: 'Kanale', - terminal: 'Terminal', + terminal: 'Konsole', files: 'Dateien', groupChat: 'Gruppenchat', groupConversation: 'Konversation', @@ -90,8 +93,8 @@ export default { groupAgentShort: 'Agent', groupSystem: 'System', groupSystemShort: 'Sys', - groupMonitoring: 'Monitoring', - groupMonitoringShort: 'Mon', + groupMonitoring: 'Überwachung', + groupMonitoringShort: 'Überw.', settings: 'Einstellungen', connected: 'Verbunden', disconnected: 'Getrennt', @@ -105,11 +108,17 @@ export default { nodeVersionWarning: 'Node.js v{version} erkannt. Bitte aktualisieren Sie auf Version 23 oder neuer.', changelog: 'Anderungsprotokoll', noChangelog: 'Kein Anderungsprotokoll verfugbar', + kanban: 'Kanban', + groupTools: 'Werkzeuge', + groupPlatform: 'Plattform', + gateways: 'Gateways', + expand: 'Menü ausklappen', + collapse: 'Menü einklappen', }, // Drawer drawer: { - terminal: 'Terminal', + terminal: 'Konsole', files: 'Arbeitsbereich', }, @@ -183,8 +192,8 @@ export default { pin: 'Anheften', unpin: 'Lösen', pinned: 'Angeheftet', - chatMode: 'Chat', - liveMode: 'Live', + chatMode: 'Chatmodus', + liveMode: 'Live-Modus', liveSessions: 'Live-Sitzungen', recentBadge: 'Kürzlich', linkedSessions: '{count} verknüpft', @@ -210,7 +219,7 @@ export default { arguments: 'Argumente', result: 'Ergebnis', truncated: '... (abgeschnitten)', - executionDuration: 'Execution time', thinkingLabel: 'Denkprozess', + executionDuration: 'Ausführungszeit', thinkingLabel: 'Denkprozess', thinkingInProgress: 'Denkt…', thinkingShow: 'Denkprozess anzeigen', thinkingHide: 'Denkprozess ausblenden', @@ -220,10 +229,36 @@ export default { copiedBubble: 'Nachricht kopiert', copyFailed: 'Kopieren fehlgeschlagen', playSpeech: 'Sprache abspielen', - pauseSpeech: 'Pause', + pauseSpeech: 'Pausieren', resumeSpeech: 'Fortsetzen', stopSpeech: 'Stoppen', speechNotSupported: 'Sprachwiedergabe in diesem Browser nicht unterstützt', + searchEnterHint: 'Enter zum Öffnen · Esc zum Schließen', + searchHint: 'Cmd/Ctrl+K', + searchScope: 'Suchbereich: nur lokale Web-UI-Sitzungsdatenbank; schreibgeschützte Hermes-Verlaufssitzungen sind nicht enthalten.', + searchFailed: 'Sitzungssuche fehlgeschlagen', + searchNoSnippet: 'Keine Vorschau verfügbar', + searchNoResults: 'Keine passenden Sitzungen', + searchRecent: 'Letzte Sitzung', + searchEmpty: 'Letzte Sitzungen', + searchPlaceholder: 'Sitzungen suchen...', + searchSubtitle: 'Nach Titel oder Nachrichteninhalt suchen', + searchTitle: 'Sitzungen suchen', + stopGateway: 'Gateway stoppen', + start: 'Starten', + workspaceSetFailed: 'Workspace konnte nicht festgelegt werden', + workspaceSet: 'Workspace festgelegt', + workspacePlaceholder: 'Projektpfad eingeben, z. B. /home/user/project', + workspace: 'Arbeitsbereich', + setWorkspaceTitle: 'Sitzungs-Workspace festlegen', + setWorkspace: 'Workspace festlegen', + modelSetFailed: 'Modell konnte nicht festgelegt werden', + modelSet: 'Modell festgelegt', + setModelTitle: 'Sitzungsmodell festlegen', + setModel: 'Modell festlegen', + newCliChat: 'Neue CLI', + cliEmptyState: 'CLI-Chat starten', + autoPlaySpeech: 'Sprache automatisch abspielen', }, // Jobs @@ -245,7 +280,7 @@ export default { presetEveryDay9: 'Jeden Tag um 09:00', presetEveryMonday: 'Jeden Montag um 09:00', presetEveryMonth: 'Am 1. jedes Monats um 09:00', - prompt: 'Prompt', + prompt: 'Eingabeaufforderung', promptPlaceholder: 'Der auszufuhrende Prompt', deliverTarget: 'Zustellziel', origin: 'Herkunft', @@ -377,9 +412,9 @@ jobTriggered: 'Job ausgelost', env: '{count} env', }, metadata: { - agentRoot: 'Agent root', + agentRoot: 'Agent-Stammverzeichnis', python: 'Python', - scanCwd: 'Scan cwd', + scanCwd: 'Arbeitsverzeichnis scannen', projectPlugins: 'Projekt-Plugins', }, }, @@ -431,7 +466,7 @@ jobTriggered: 'Job ausgelost', codexOpenLink: 'Autorisierungsseite öffnen', codexApproved: 'Anmeldung erfolgreich', codexExpired: 'Die Autorisierung ist abgelaufen. Bitte versuchen Sie es erneut.', - nousLoginTitle: 'Nous Portal Login', + nousLoginTitle: 'Nous-Portal-Anmeldung', nousWaiting: 'Geben Sie diesen Code auf der Autorisierungsseite ein:', nousCopyCode: 'Code kopiert', nousOpenLink: 'Autorisierungsseite öffnen', @@ -477,6 +512,35 @@ jobTriggered: 'Job ausgelost', unexpectedFormat: 'Unerwartetes Antwortformat', foundModels: '{count} Modelle gefunden', fetchFailed: 'Abrufen der Modelle fehlgeschlagen', + xaiWaiting: 'Schließen Sie die Autorisierung auf der geöffneten xAI-Seite ab. Das Fenster schließt sich nach der Freigabe automatisch.', + xaiOpenLink: 'xAI-Autorisierungsseite öffnen', + xaiLoginTitle: 'xAI Grok OAuth-Anmeldung', + xaiExpired: 'Der Autorisierungslink ist abgelaufen. Bitte erneut versuchen.', + xaiCopyLink: 'Autorisierungslink kopieren', + xaiApproved: 'Anmeldung erfolgreich!', + visibilitySelectOne: 'Mindestens ein sichtbares Modell behalten', + visibilitySaved: 'Sichtbare Modelle gespeichert', + visibilitySaveFailed: 'Sichtbare Modelle konnten nicht gespeichert werden', + visibilityHint: 'Wirkt sich nur auf Modellauswahl und Modellseite der Web UI aus. Die provider/model-Konfiguration der Hermes CLI wird nicht geändert; Aufrufe verwenden weiterhin die ursprüngliche Modell-ID.', + showAllModels: 'Alle Modelle anzeigen', + searchPlaceholder: 'Modelle suchen...', + removeCustomModel: 'Dieses nicht gelistete Modell entfernen', + more: 'weitere', + models: 'Modellliste', + manageVisibleModelsFor: 'Sichtbare Modelle für {name} verwalten', + manageVisibleModels: 'Sichtbare Modelle verwalten', + getApiKey: 'API Key abrufen', + count: 'Modelle', + aliasUseOriginal: 'Ursprüngliche ID wiederherstellen', + aliasTitleFor: 'Anzeigename für {model}', + aliasTitle: 'Modell-Anzeigename', + aliasSaveFailed: 'Anzeigename konnte nicht gespeichert werden', + aliasPlaceholder: 'Leer lassen, um die ursprüngliche Modell-ID zu verwenden', + aliasManageFor: 'Anzeigenamen für {provider}', + aliasManage: 'Anzeigenamen', + aliasHint: 'Ändert nur den Anzeigenamen in der Web UI. Hermes erhält weiterhin die ursprüngliche Modell-ID.', + aliasEdit: 'Umbenennen', + aliasCanonical: 'Original-ID: {model}', }, // Profiles @@ -529,18 +593,35 @@ jobTriggered: 'Job ausgelost', hasSoulMd: 'Hat soul.md', noProfiles: 'Keine Profile gefunden. Erstellen Sie eines, um zu beginnen.', avatar: { - title: 'Custom Avatar', - customize: 'Avatar', - upload: 'Upload Image', - random: 'Randomize', - reset: 'Use Default', - hint: 'PNG, JPEG, or WebP. Max 1MB.', - invalidType: 'Please choose a PNG, JPEG, or WebP image', - tooLarge: 'Avatar image must be 1MB or smaller', - saveSuccess: 'Avatar saved', - saveFailed: 'Failed to save avatar', - resetSuccess: 'Default avatar restored', - resetFailed: 'Failed to restore default avatar', + title: 'Eigenes Avatar', + customize: 'Avatar anpassen', + upload: 'Bild hochladen', + random: 'Zufällig erzeugen', + reset: 'Standard wiederherstellen', + hint: 'PNG, JPEG oder WebP, maximal 1 MB', + invalidType: 'Bitte ein PNG-, JPEG- oder WebP-Bild wählen', + tooLarge: 'Das Avatar-Bild darf höchstens 1 MB groß sein', + saveSuccess: 'Avatar gespeichert', + saveFailed: 'Avatar konnte nicht gespeichert werden', + resetSuccess: 'Standard-Avatar wiederhergestellt', + resetFailed: 'Standard-Avatar konnte nicht wiederhergestellt werden', + }, + runtime: { + activeProfile: 'Aktuell: {name}', + bridgeWorker: 'Bridge-Status', + gateway: 'Gateway', + active: 'Aktiv', + activeTag: 'Aktuell', + idle: 'Leerlauf', + running: 'Läuft', + stopped: 'Gestoppt', + restartGateway: 'Gateway neu starten', + restartProfile: 'Profil neu starten', + switchProfile: 'Profil wechseln', + gatewayRestarted: 'Gateway neu gestartet: {name}', + gatewayRestartFailed: 'Gateway-Neustart fehlgeschlagen', + profileRestarted: 'Profil neu gestartet: {name}', + profileRestartFailed: 'Profil-Neustart fehlgeschlagen', }, }, @@ -749,6 +830,14 @@ jobTriggered: 'Job ausgelost', unlocked: 'IP entsperrt', allUnlocked: '{count} IPs entsperrt', }, + models: { + apiKey: 'API Key', + apiKeyPlaceholder: 'API Key eingeben', + noProviders: 'Keine Provider konfiguriert', + save: 'Speichern', + saveFailed: 'Speichern fehlgeschlagen', + saved: 'Gespeichert', + }, }, // Platform channel settings @@ -809,6 +898,19 @@ jobTriggered: 'Job ausgelost', qrFetching: 'QR-Code wird abgerufen...', qrScanHint: 'Mit WeChat scannen zum Anmelden', qrScanedHint: 'Gescannt, bitte auf dem Gerat bestatigen...', + qqSandboxHint: 'Sandbox-Umgebung aktivieren (für Tests)', + qqSandbox: 'Sandbox-Modus', + qqQrScanHint: 'QR-Code oben mit QQ scannen oder Link auf dem Telefon öffnen, um die Bindung abzuschließen', + qqMarkdownHint: 'Markdown-formatierte Nachrichten aktivieren (einige Clients unterstützen dies möglicherweise nicht)', + qqMarkdown: 'Markdown-Unterstützung', + qqAppSecretHint: 'QQ Open Platform Bot App Secret', + qqAppSecret: 'App Secret', + qqAppIdHint: 'QQ Open Platform Bot App ID', + qqAppId: 'App ID', + allowedUsersHint: 'Whitelist für Benutzer-IDs oder OpenIDs, durch Kommas getrennt', + allowedUsers: 'Erlaubte Benutzer', + allowAllUsersHint: 'Nachrichten von beliebigen Benutzern erlauben; deaktiviert lassen, um die Allowlist zu verwenden', + allowAllUsers: 'Alle Benutzer erlauben', }, // Language @@ -848,8 +950,8 @@ jobTriggered: 'Job ausgelost', date: 'Datum', tokens: 'Tokens', cache: 'Cache', - cacheRead: 'Cache Read', - cacheWrite: 'Cache Write', + cacheRead: 'Cache gelesen', + cacheWrite: 'Cache geschrieben', sessions: 'Sitzungen', cost: 'Kosten', noData: 'Keine Nutzungsdaten', @@ -906,64 +1008,64 @@ jobTriggered: 'Job ausgelost', new_0_5_17_24: 'Verlaufsseite zeigt jetzt Cron-Sitzungsaufzeichnungen an', new_0_5_17_25: 'Sprachwechsel- und Themen-Symbole in eingeklappter Seitenleiste nicht mehr gequetscht', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', - new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database', - new_0_5_23_1: 'Add bridge-only chat slash commands with localized command suggestions', - new_0_5_23_2: 'Persist command history for session replay without polluting model context, usage, or compression', - new_0_5_23_3: 'Isolate gateway profile environment variables to prevent credentials leaking across profiles', - new_0_5_23_4: 'Reserve the Web UI port during gateway allocation to avoid startup conflicts', - new_0_5_23_5: 'Fix self-update restart handling so successful helper exits are not reported as failures', - new_0_5_24_1: 'Align Bridge chat with API Server handling for multimodal input, system prompt, and workspace context', - new_0_5_25_1: 'Add group chat room reset and clone actions', - new_0_5_25_2: 'Make the Web UI state directory configurable for custom deployment layouts', - new_0_5_25_3: 'Add MiMo as a TTS provider in voice settings', - new_0_5_25_4: 'Fetch custom provider model lists through the backend to avoid browser CORS failures', - new_0_5_25_5: 'Fix tool approval flow for bridge sessions', - new_0_5_25_6: 'Remove the forced CLI platform hint from bridge prompts so custom media/file instructions are preserved', - new_0_5_25_7: 'Show base64 image content correctly in user message history', - new_0_5_25_8: 'Add Playwright browser tests, chat streaming contract coverage, provider model coverage, and coverage baseline', - new_0_5_26_1: 'Support Windows and local Markdown media paths in chat history and rendered messages', - new_0_5_26_2: 'Filter empty assistant history and clear stale compression status when a new run starts', - new_0_5_26_3: 'Add locked file writes for config and profile updates to reduce concurrent write corruption', - new_0_5_26_4: 'Add QQBot and DingTalk channel settings', - new_0_5_26_5: 'Make CLI port detection portable and improve mobile terminal drawer sizing', - new_0_5_26_6: 'Isolate Bridge profile environments and fix Hermes plugin discovery across Python environments', - new_0_5_26_7: 'Explain stopped gateway states with Web UI diagnostics and keep log loading state stable', - new_0_5_26_8: 'Fix session reset mode options, custom provider base URL handling, and dynamic deliver targets', - new_0_5_26_9: 'Add a local tool-call trace visibility toggle in the chat input bar', - new_0_5_26_10: 'Support Hermes Agent package installs when no source checkout is available', - new_0_5_26_11: 'Add xAI Grok OAuth login for SuperGrok subscription users and update Grok model presets', - new_0_5_26_12: 'Expand browser, chat streaming, provider, gateway, config, plugin, and Bridge test coverage', - new_0_5_27_1: 'Add session-level model settings for Bridge chats, with independent provider and model saved per session', - new_0_5_27_2: 'Right-click a Bridge session and choose Set Model to switch the model for that session', - new_0_5_27_3: 'Runs now validate the session model and fall back to the current default model when the saved model is unavailable', - new_0_5_27_4: 'Context compression now follows the current Profile default selected model by default', - new_0_5_30_1: 'Bridge chat now preserves structured history, fixing intermittent no-response and skipped tool execution caused by text-flattened tool history', - new_0_5_30_2: 'Group chat mention routing is more reliable for multiple agents, removes each agent’s own @ mention before delivery, and keeps user display names bound after refresh', - new_0_5_30_3: 'Model pages, chat model dropdowns, and session model selection now scope providers and models to the active Profile with accurate default markers', - new_0_5_30_4: 'Gateway management is simplified: the standalone Gateway page is removed, each Profile is checked for platform configuration before starting the needed gateway, and a lightweight gateway runner handles starts and restarts', - new_0_5_30_5: 'Improve Gateway startup across Docker, Termux, and Windows with runtime-lock handling, port-conflict cleanup, background execution, and restart support', - new_0_5_30_6: 'Harden Windows compatibility for path detection, file downloads, and job/update subprocesses so they no longer flash terminal windows', - new_0_5_30_7: 'Fix config writes and provider presets: validate .env keys, route FUN-Codex through the Responses API, and refresh Z.AI/GLM model lists', - new_0_5_30_8: 'Polish frontend details including collapsed sidebar layout, short group labels, sidebar divider, and conversation outline styling', - new_0_5_30_9: 'Context compression now follows Profile compression settings and hardens stale snapshots by reusing previous summaries with a safe tail instead of recompressing full history', - new_0_5_31_1: "Harden Bridge broker restarts, fix final group-chat stream rendering, and add {'@'}all routing for group chat", - new_0_5_31_2: 'File manager can copy absolute paths, and the mobile session drawer overlay no longer falls behind chat content', - new_0_5_31_3: 'Profile selector now shows avatars, custom avatar uploads, runtime status modal, and gateway/profile restart actions', - new_0_5_31_4: 'Profile avatars now appear in single chat, group chat, and collapsed sidebar, with Web UI profile metadata storage and Windows-safe paths', - new_0_5_31_5: 'Improve Docker, Termux, and Windows gateway detection and restart checks by using gateway_state/gateway.pid for managed gateway liveness', - new_0_5_31_6: 'Add APIKEY.FUN image-generation media endpoint and bundled apikey-image-gen skill for text-to-image, image-to-image, and image editing via the active Profile fun-codex provider', - new_0_4_8_2: 'Fix nested markdown fence rendering truncation', - new_0_4_8_3: 'Fix compressed session lineage projection and search', - new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_5_18_1: 'Skills-Usage-Überwachungsseite mit täglichem Trenddiagramm und Top-Skills-Statistiken hinzugefügt', + new_0_5_18_2: 'CLI-Chat-Session-Bridge mit Python-Agent-Bridge für WebSocket-basierte Sitzungen hinzugefügt', + new_0_5_18_3: 'Ollama-Cloud-Provider-Preset mit dynamischem Modellkatalog hinzugefügt', + new_0_5_18_4: 'Umbenennen von Modellanzeigenamen (Aliase) unterstützt', + new_0_5_18_5: 'Verwaltung der Modellsichtbarkeit in der Web UI unterstützt', + new_0_5_18_6: 'Usage-Analytics-Dashboard erweitert', + new_0_5_18_7: 'Docker-Einzelcontainer-Deployment mit docker-compose und Gateway-Startkorrekturen', + new_0_5_18_8: 'HERMES_HOME-Fallback-Warnung der Plugin-Seite für nicht standardmäßige Profile korrigiert', + new_0_5_18_9: 'Gateway-Stabilität bei Dev-Neustarts korrigiert und Windows-Kompatibilität verbessert', + new_0_5_22_1: 'Hermes-Sessionlisten-API liest jetzt die Profil-Datenbank statt des lokalen Web-UI-Session-Stores', + new_0_5_23_1: 'Bridge-only Chat-Slash-Befehle mit lokalisierten Befehlsvorschlägen hinzugefügt', + new_0_5_23_2: 'Befehlsverlauf für Session-Replay gespeichert, ohne Modellkontext, Nutzung oder Komprimierung zu verunreinigen', + new_0_5_23_3: 'Gateway-Profil-Umgebungsvariablen isoliert, damit Zugangsdaten nicht zwischen Profilen durchsickern', + new_0_5_23_4: 'Web-UI-Port bei Gateway-Zuweisung reserviert, um Startkonflikte zu vermeiden', + new_0_5_23_5: 'Self-Update-Neustart korrigiert, damit erfolgreiche Helper-Exits nicht als Fehler gemeldet werden', + new_0_5_24_1: 'Bridge-Chat an API-Server-Verarbeitung für multimodale Eingaben, System-Prompt und Workspace-Kontext angepasst', + new_0_5_25_1: 'Zurücksetzen und Klonen von Gruppenchat-Räumen hinzugefügt', + new_0_5_25_2: 'Web-UI-Statusverzeichnis für eigene Deployment-Layouts konfigurierbar gemacht', + new_0_5_25_3: 'MiMo als TTS-Anbieter in den Spracheinstellungen hinzugefügt', + new_0_5_25_4: 'Modelllisten eigener Provider werden über das Backend geladen, um Browser-CORS-Fehler zu vermeiden', + new_0_5_25_5: 'Tool-Freigabeablauf für Bridge-Sitzungen korrigiert', + new_0_5_25_6: 'Erzwungenen CLI-Plattformhinweis aus Bridge-Prompts entfernt, damit eigene Medien-/Dateianweisungen erhalten bleiben', + new_0_5_25_7: 'Base64-Bildinhalte werden in der Nachrichtenhistorie korrekt angezeigt', + new_0_5_25_8: 'Playwright-Browsertests, Chat-Streaming-Vertragsabdeckung, Provider-Modellabdeckung und Coverage-Baseline hinzugefügt', + new_0_5_26_1: 'Windows- und lokale Markdown-Medienpfade in Chatverlauf und gerenderten Nachrichten unterstützt', + new_0_5_26_2: 'Leere Assistant-Historie gefiltert und veralteter Komprimierungsstatus bei neuem Lauf gelöscht', + new_0_5_26_3: 'Gesperrte Schreibvorgänge für Config- und Profil-Updates hinzugefügt, um Beschädigungen durch paralleles Schreiben zu reduzieren', + new_0_5_26_4: 'QQBot- und DingTalk-Kanaleinstellungen hinzugefügt', + new_0_5_26_5: 'CLI-Porterkennung portabler gemacht und mobile Terminal-Schublade verbessert', + new_0_5_26_6: 'Bridge-Profilumgebungen isoliert und Hermes-Plugin-Erkennung über Python-Umgebungen hinweg korrigiert', + new_0_5_26_7: 'Gestoppte Gateway-Zustände mit Web-UI-Diagnosen erklärt und Log-Ladezustand stabil gehalten', + new_0_5_26_8: 'Session-Reset-Modi, Custom-Provider-Base-URL und dynamische Zustellziele korrigiert', + new_0_5_26_9: 'Lokalen Schalter für Tool-Call-Trace-Anzeige in der Chat-Eingabeleiste hinzugefügt', + new_0_5_26_10: 'Hermes-Agent-Paketinstallationen unterstützt, wenn kein Source-Checkout verfügbar ist', + new_0_5_26_11: 'xAI-Grok-OAuth-Login für SuperGrok-Abonnenten hinzugefügt und Grok-Modellpresets aktualisiert', + new_0_5_26_12: 'Browser-, Chat-Streaming-, Provider-, Gateway-, Config-, Plugin- und Bridge-Testabdeckung erweitert', + new_0_5_27_1: 'Sitzungsbezogene Modelleinstellungen für Bridge-Chats hinzugefügt, mit unabhängig gespeichertem Provider und Modell pro Sitzung', + new_0_5_27_2: 'Bridge-Sitzung per Rechtsklick über „Modell festlegen“ auf ein anderes Modell umstellen', + new_0_5_27_3: 'Läufe prüfen jetzt das Sitzungsmodell und fallen auf das aktuelle Standardmodell zurück, wenn es nicht verfügbar ist', + new_0_5_27_4: 'Kontextkomprimierung folgt standardmäßig dem aktuell im Profil ausgewählten Standardmodell', + new_0_5_30_1: 'Bridge-Chat bewahrt jetzt strukturierte Historie und behebt sporadisch ausbleibende Antworten sowie übersprungene Tool-Ausführung durch flachgedrückte Tool-Historie', + new_0_5_30_2: 'Gruppenchat-Mention-Routing ist zuverlässiger für mehrere Agents, entfernt die eigene @-Mention vor der Zustellung und behält Anzeigenamen nach Aktualisierung bei', + new_0_5_30_3: 'Modellseiten, Chat-Modellauswahl und Sitzungsmodellwahl zeigen Provider und Modelle jetzt passend zum aktiven Profil mit korrekten Standardmarkierungen', + new_0_5_30_4: 'Gateway-Verwaltung vereinfacht: eigenständige Gateway-Seite entfernt, jedes Profil wird vor Start auf Plattformkonfiguration geprüft, und ein leichter Gateway-Runner verwaltet Starts und Neustarts', + new_0_5_30_5: 'Gateway-Start unter Docker, Termux und Windows mit Runtime-Lock-Behandlung, Portkonfliktbereinigung, Hintergrundausführung und Neustartunterstützung verbessert', + new_0_5_30_6: 'Windows-Kompatibilität für Pfaderkennung, Dateidownloads und Job-/Update-Subprozesse gehärtet, damit keine Terminalfenster aufblitzen', + new_0_5_30_7: 'Config-Schreibvorgänge und Provider-Presets korrigiert: .env-Schlüssel validieren, FUN-Codex über Responses API routen und Z.AI/GLM-Modelllisten aktualisieren', + new_0_5_30_8: 'Frontend-Details poliert, darunter eingeklappte Seitenleiste, kurze Gruppenlabels, Seitenleisten-Trenner und Gesprächs-Outline', + new_0_5_30_9: 'Kontextkomprimierung folgt nun Profil-Komprimierungseinstellungen und härtet veraltete Snapshots durch Wiederverwendung alter Zusammenfassungen mit sicherem Rest statt erneuter Vollkomprimierung', + new_0_5_31_1: 'Bridge-Broker-Neustarts gehärtet, finale Gruppenchat-Stream-Darstellung korrigiert und {\'@\'}all-Routing für Gruppenchats hinzugefügt', + new_0_5_31_2: 'Dateimanager kann absolute Pfade kopieren; mobile Session-Schublade liegt nicht mehr hinter Chat-Inhalten', + new_0_5_31_3: 'Profilauswahl zeigt jetzt Avatare, eigene Avatar-Uploads, Laufzeitstatus-Dialog sowie Gateway-/Profil-Neustartaktionen', + new_0_5_31_4: 'Profilavatare erscheinen jetzt in Einzelchat, Gruppenchat und eingeklappter Seitenleiste, mit Web-UI-Profilmetadaten und Windows-sicheren Pfaden', + new_0_5_31_5: 'Docker-, Termux- und Windows-Gateway-Erkennung sowie Neustartprüfungen verbessert, indem gateway_state/gateway.pid für Managed-Gateway-Liveness genutzt wird', + new_0_5_31_6: 'APIKEY.FUN-Bildgenerierungs-Medienendpunkt und gebündelter apikey-image-gen-Skill für Text-zu-Bild, Bild-zu-Bild und Bildbearbeitung über den fun-codex-Provider des aktiven Profils hinzugefügt', + new_0_4_8_2: 'Abgeschnittenes Rendering verschachtelter Markdown-Codeblöcke behoben', + new_0_4_8_3: 'Projektion und Suche komprimierter Sitzungsabstammung behoben', + new_0_4_8_4: 'N+1-Abfragen der Sitzungsliste optimiert und Suchfehler 500 bei Nicht-CJK-Eingaben behoben', new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs', new_0_4_8_6: 'Smooth session switch with loading transition overlay', new_0_4_8_7: 'Fix login token validation using Hermes session endpoint', @@ -982,18 +1084,23 @@ jobTriggered: 'Job ausgelost', new_0_4_7_10: 'base_url_env aus .env beim Loschen des integrierten Providers entfernen', new_0_4_7_11: 'Gruppenchat-Raum-Seitenleistenhintergrund an die Sitzungsliste anpassen', new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery', - new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting', - new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list', - new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading', - new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector', - new_0_4_5_6: 'Fix sidebar i18n missing key warnings', - new_0_4_5_7: 'Clear all localStorage on logout', - new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth', + new_0_4_5_2: 'Model-Kontext-Konfiguration auf YAML mit context_length-Einstellung umgestellt', + new_0_4_5_3: 'gpt-5.5 zur OpenAI-Codex-Modellliste hinzugefügt', + new_0_4_5_4: 'Jobs-Proxy durch lokalen Controller ersetzt und Modellladen optimiert', + new_0_4_5_5: 'i18n-Unterstützung für benutzerdefinierte Modelle im ModelSelector hinzugefügt', + new_0_4_5_6: 'Fehlende i18n-Schlüsselwarnungen in der Seitenleiste behoben', + new_0_4_5_7: 'Beim Abmelden gesamten localStorage leeren', + new_0_4_5_8: 'Periodische Logrotation hinzugefügt, um unbegrenztes Logwachstum zu verhindern', new_0_4_2_1: 'Token-Nutzungsverfolgung und dynamische Kontextlange hinzugefugt', new_0_4_2_2: 'Sitzungssuche-Modal hinzugefugt', new_0_4_2_3: 'Gruppenchat-System mit Socket.IO und SQLite wiederhergestellt', new_0_4_2_4: 'Angeheftete Sitzungen und Live-Monitor hinzugefugt', new_0_4_2_5: 'Eingebaute Provider-Erkennung und Modellabgleich behoben', + new_0_4_4_5: '500-Fehler bei Suchanfragen mit Sonderzeichen behoben', + new_0_4_4_4: 'Unterstützung für StepFun und Nous Portal Provider hinzugefügt', + new_0_4_4_3: 'Live-Status-Badge für aktive Chat-Sitzungen hinzugefügt', + new_0_4_4_2: 'Dateidownload aus Chat-Nachrichtenanhängen hinzugefügt', + new_0_4_4_1: 'Dateibrowser mit Multi-Backend-Unterstützung hinzugefügt (lokal/Docker/SSH/Singularity)', }, // Dateien @@ -1044,6 +1151,7 @@ jobTriggered: 'Job ausgelost', closeEditor: 'Editor schliessen', closePreview: 'Schliessen', saveFile: 'Speichern', + fileTree: 'Dateibaum', }, // Gruppenchat @@ -1113,4 +1221,104 @@ jobTriggered: 'Job ausgelost', download: 'Herunterladen', downloadFile: 'Datei herunterladen', }, + gateways: { + title: 'Gateways', + running: 'Läuft', + stopped: 'Gestoppt', + started: 'Gestartet', + startFailed: 'Gateway konnte nicht gestartet werden', + stopFailed: 'Gateway konnte nicht gestoppt werden', + }, + kanban: { + title: 'Kanban-Board', + createTask: 'Neue Aufgabe', + noTasks: 'Keine Aufgaben', + allStatuses: 'Alle Status', + allAssignees: 'Alle Verantwortlichen', + columns: { + triage: 'Sichtung', + todo: 'Zu erledigen', + ready: 'Bereit', + running: 'In Arbeit', + blocked: 'Blockiert', + done: 'Erledigt', + archived: 'Archiviert', + }, + card: { + assigneeTooltip: 'Verantwortlicher', + priority: { + low: 'Niedrig', + medium: 'Mittel', + high: 'Hoch', + }, + timeAgo: { + justNow: 'gerade eben', + minutes: 'vor {count} Min.', + hours: 'vor {count} Std.', + days: 'vor {count} Tg.', + }, + }, + board: { + create: 'Neues Board', + archive: 'Board archivieren', + archiveConfirm: 'Aktuelles Board archivieren?', + archived: 'Board archiviert', + created: 'Board erstellt', + slugPlaceholder: 'Board-Kennung, z. B. project-a', + namePlaceholder: 'Anzeigename (optional)', + slugRequired: 'Board-Kennung ist erforderlich', + }, + form: { + title: 'Titel', + titlePlaceholder: 'Aufgabentitel', + titleRequired: 'Titel ist erforderlich', + body: 'Beschreibung', + bodyPlaceholder: 'Aufgabenbeschreibung (optional)', + assignee: 'Verantwortlicher', + selectAssignee: 'Verantwortlichen wählen...', + priority: 'Priorität', + selectPriority: 'Priorität wählen...', + }, + detail: { + status: 'Status', + priority: 'Priorität', + assignee: 'Verantwortlicher', + tenant: 'Mandant', + createdAt: 'Erstellt', + startedAt: 'Gestartet', + completedAt: 'Abgeschlossen', + comments: 'Kommentare', + events: 'Ereignisse', + runs: 'Ausführungen', + artifacts: 'Artefakte', + result: 'Ergebnis', + highlights: 'Highlights', + sources: 'Datenquellen', + sessions: 'Zugehörige Sitzungen', + sessionMessages: 'Sitzungsnachrichten', + noSessions: 'Keine zugehörigen Sitzungen gefunden.', + }, + action: { + title: 'Aktionen', + assign: 'Zuweisen', + assignTo: 'Zuweisen an...', + block: 'Blockieren', + blockReason: 'Blockierungsgrund', + unblock: 'Blockierung aufheben', + complete: 'Abschließen', + completeSummary: 'Abschlusszusammenfassung (optional)', + }, + message: { + loadFailed: 'Aufgabe konnte nicht geladen werden', + taskCreated: 'Aufgabe erstellt', + taskAssigned: 'Aufgabe zugewiesen', + taskBlocked: 'Aufgabe blockiert', + taskUnblocked: 'Blockierung aufgehoben', + taskCompleted: 'Aufgabe abgeschlossen', + }, + stats: { + total: 'Gesamt', + tasks: 'Aufgaben', + }, + }, } diff --git a/packages/client/src/i18n/locales/en.ts b/packages/client/src/i18n/locales/en.ts index 94ecaac..2ddf71c 100644 --- a/packages/client/src/i18n/locales/en.ts +++ b/packages/client/src/i18n/locales/en.ts @@ -1311,5 +1311,14 @@ export default { new_0_4_2_3: 'Restore group chat system with Socket.IO and SQLite persistence', new_0_4_2_4: 'Add pinned sessions and live monitor in Chat page', new_0_4_2_5: 'Fix builtin provider detection and model matching', + new_0_4_8_10: 'Polish mobile drawer layout and sidebar interaction', + new_0_4_8_9: 'Fix terminal reconnect cleanup and stale PTY sessions', + new_0_4_8_8: 'Improve group chat room state recovery after refresh', + new_0_4_8_7: 'Add profile import/export safeguards and archive validation', + new_0_4_8_6: 'Improve Windows path handling in file browser and downloads', + new_0_4_8_5: 'Fix model sync compatibility with provider-scoped catalogs', + new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_4_8_3: 'Fix compressed session lineage projection and search', + new_0_4_8_2: 'Fix nested markdown fence rendering truncation', }, } diff --git a/packages/client/src/i18n/locales/es.ts b/packages/client/src/i18n/locales/es.ts index 25863c5..2d6c09f 100644 --- a/packages/client/src/i18n/locales/es.ts +++ b/packages/client/src/i18n/locales/es.ts @@ -63,6 +63,9 @@ export default { confirm: 'Confirmar', expand: 'Expandir', collapse: 'Contraer', + stop: 'Detener', + start: 'Iniciar', + expired: 'Expirado', }, // Sidebar @@ -85,13 +88,13 @@ export default { files: 'Archivos', groupChat: 'Chat grupal', groupConversation: 'Conversación', - groupConversationShort: 'Conv', + groupConversationShort: 'Conv.', groupAgent: 'Agente', groupAgentShort: 'Ag.', groupSystem: 'Sistema', groupSystemShort: 'Sist', groupMonitoring: 'Monitoreo', - groupMonitoringShort: 'Mon', + groupMonitoringShort: 'Mon.', settings: 'Configuracion', connected: 'Conectado', disconnected: 'Desconectado', @@ -105,6 +108,12 @@ export default { nodeVersionWarning: 'Se detecto Node.js v{version}. Actualiza a la version 23 o posterior.', changelog: 'Registro de cambios', noChangelog: 'No hay registro de cambios', + kanban: 'Kanban', + groupTools: 'Herramientas', + groupPlatform: 'Plataforma', + gateways: 'Puertas de enlace', + expand: 'Expandir menú', + collapse: 'Contraer menú', }, // Drawer @@ -183,7 +192,7 @@ export default { pin: 'Fijar', unpin: 'Desfijar', pinned: 'Fijados', - chatMode: 'Chat', + chatMode: 'Modo de chat', liveMode: 'En vivo', liveSessions: 'Sesiones en vivo', recentBadge: 'Reciente', @@ -210,7 +219,7 @@ export default { arguments: 'Argumentos', result: 'Resultado', truncated: '... (truncado)', - executionDuration: 'Execution time', thinkingLabel: 'Pensamiento', + executionDuration: 'Tiempo de ejecución', thinkingLabel: 'Pensamiento', thinkingInProgress: 'Pensando…', thinkingShow: 'Mostrar pensamiento', thinkingHide: 'Ocultar pensamiento', @@ -224,6 +233,32 @@ export default { resumeSpeech: 'Reanudar', stopSpeech: 'Detener', speechNotSupported: 'Reproducción de voz no soportada en este navegador', + searchEnterHint: 'Enter para abrir · Esc para cerrar', + searchHint: 'Cmd/Ctrl+K', + searchScope: 'Alcance de búsqueda: solo base de datos local de sesiones de Web UI; no incluye sesiones históricas Hermes de solo lectura.', + searchFailed: 'No se pudieron buscar sesiones', + searchNoSnippet: 'No hay resumen disponible', + searchNoResults: 'No hay sesiones que coincidan', + searchRecent: 'Sesión reciente', + searchEmpty: 'Sesiones recientes', + searchPlaceholder: 'Buscar sesiones...', + searchSubtitle: 'Buscar por título o contenido de mensajes', + searchTitle: 'Buscar sesiones', + stopGateway: 'Detener gateway', + start: 'Iniciar', + workspaceSetFailed: 'No se pudo definir el workspace', + workspaceSet: 'Workspace definido', + workspacePlaceholder: 'Introduce la ruta del proyecto, p. ej. /home/user/project', + workspace: 'Espacio de trabajo', + setWorkspaceTitle: 'Definir workspace de sesión', + setWorkspace: 'Definir workspace', + modelSetFailed: 'No se pudo definir el modelo', + modelSet: 'Modelo definido', + setModelTitle: 'Definir modelo de sesión', + setModel: 'Definir modelo', + newCliChat: 'Nuevo CLI', + cliEmptyState: 'Iniciar chat CLI', + autoPlaySpeech: 'Reproducir voz automáticamente', }, // Jobs @@ -377,9 +412,9 @@ jobTriggered: 'Job ejecutado', env: '{count} env', }, metadata: { - agentRoot: 'Agent root', + agentRoot: 'Raíz del agente', python: 'Python', - scanCwd: 'Scan cwd', + scanCwd: 'Escanear cwd', projectPlugins: 'Plugins del proyecto', }, }, @@ -405,7 +440,7 @@ jobTriggered: 'Job ejecutado', title: 'Modelos', addProvider: 'Anadir proveedor', providerType: 'Tipo de proveedor', - preset: 'Preset', + preset: 'Preajuste', custom: 'Personalizado', selectProvider: 'Seleccionar proveedor', chooseProvider: 'Elige un proveedor...', @@ -477,6 +512,35 @@ jobTriggered: 'Job ejecutado', unexpectedFormat: 'Formato de respuesta inesperado', foundModels: '{count} modelos encontrados', fetchFailed: 'Error al obtener los modelos', + xaiWaiting: 'Completa la autorización en la página de xAI abierta. La ventana se cerrará automáticamente al aprobarse.', + xaiOpenLink: 'Abrir página de autorización de xAI', + xaiLoginTitle: 'Inicio de sesión OAuth de xAI Grok', + xaiExpired: 'El enlace de autorización expiró. Inténtalo de nuevo.', + xaiCopyLink: 'Copiar enlace de autorización', + xaiApproved: '¡Inicio de sesión correcto!', + visibilitySelectOne: 'Mantén al menos un modelo visible', + visibilitySaved: 'Modelos visibles guardados', + visibilitySaveFailed: 'No se pudieron guardar los modelos visibles', + visibilityHint: 'Solo afecta al selector de modelos y a la página de modelos de Web UI. No modifica la configuración provider/model de Hermes CLI; las llamadas siguen usando el ID original del modelo.', + showAllModels: 'Mostrar todos los modelos', + searchPlaceholder: 'Buscar modelos...', + removeCustomModel: 'Eliminar este modelo no listado', + more: 'más', + models: 'Lista de modelos', + manageVisibleModelsFor: 'Gestionar modelos visibles de {name}', + manageVisibleModels: 'Gestionar modelos visibles', + getApiKey: 'Obtener API Key', + count: 'modelos', + aliasUseOriginal: 'Restaurar ID original', + aliasTitleFor: 'Nombre visible de {model}', + aliasTitle: 'Nombre visible del modelo', + aliasSaveFailed: 'No se pudo guardar el nombre visible', + aliasPlaceholder: 'Dejar vacío para usar el ID original del modelo', + aliasManageFor: 'Nombres visibles de {provider}', + aliasManage: 'Nombres visibles', + aliasHint: 'Solo cambia el nombre visible en Web UI. Hermes sigue recibiendo el ID original del modelo.', + aliasEdit: 'Renombrar', + aliasCanonical: 'ID original: {model}', }, // Profiles @@ -529,18 +593,35 @@ jobTriggered: 'Job ejecutado', hasSoulMd: 'Tiene soul.md', noProfiles: 'No se encontraron perfiles. Crea uno para comenzar.', avatar: { - title: 'Custom Avatar', - customize: 'Avatar', - upload: 'Upload Image', - random: 'Randomize', - reset: 'Use Default', - hint: 'PNG, JPEG, or WebP. Max 1MB.', - invalidType: 'Please choose a PNG, JPEG, or WebP image', - tooLarge: 'Avatar image must be 1MB or smaller', - saveSuccess: 'Avatar saved', - saveFailed: 'Failed to save avatar', - resetSuccess: 'Default avatar restored', - resetFailed: 'Failed to restore default avatar', + title: 'Avatar personalizado', + customize: 'Personalizar avatar', + upload: 'Subir imagen', + random: 'Generar aleatorio', + reset: 'Restaurar predeterminado', + hint: 'PNG, JPEG o WebP, máximo 1 MB', + invalidType: 'Elige una imagen PNG, JPEG o WebP', + tooLarge: 'La imagen del avatar no puede superar 1 MB', + saveSuccess: 'Avatar guardado', + saveFailed: 'No se pudo guardar el avatar', + resetSuccess: 'Avatar predeterminado restaurado', + resetFailed: 'No se pudo restaurar el avatar predeterminado', + }, + runtime: { + activeProfile: 'Actual: {name}', + bridgeWorker: 'Estado del Bridge', + gateway: 'Puerta de enlace', + active: 'Activo', + activeTag: 'Actual', + idle: 'Inactivo', + running: 'En ejecución', + stopped: 'Detenido', + restartGateway: 'Reiniciar gateway', + restartProfile: 'Reiniciar perfil', + switchProfile: 'Cambiar perfil', + gatewayRestarted: 'Gateway reiniciado: {name}', + gatewayRestartFailed: 'No se pudo reiniciar el gateway', + profileRestarted: 'Perfil reiniciado: {name}', + profileRestartFailed: 'No se pudo reiniciar el perfil', }, }, @@ -749,6 +830,14 @@ jobTriggered: 'Job ejecutado', unlocked: 'IP desbloqueada', allUnlocked: '{count} IPs desbloqueadas', }, + models: { + apiKey: 'API Key', + apiKeyPlaceholder: 'Introduce API Key', + noProviders: 'No hay proveedores configurados', + save: 'Guardar', + saveFailed: 'Error al guardar', + saved: 'Guardado', + }, }, // Platform channel settings @@ -809,6 +898,19 @@ jobTriggered: 'Job ejecutado', qrFetching: 'Obteniendo codigo QR...', qrScanHint: 'Escanea con WeChat para iniciar sesion', qrScanedHint: 'Escaneado, por favor confirma en el telefono...', + qqSandboxHint: 'Habilitar entorno sandbox (para pruebas)', + qqSandbox: 'Modo sandbox', + qqQrScanHint: 'Escanea el código QR con QQ o abre el enlace en el teléfono para completar la vinculación', + qqMarkdownHint: 'Habilitar mensajes con formato Markdown (algunos clientes pueden no soportarlo)', + qqMarkdown: 'Soporte Markdown', + qqAppSecretHint: 'App Secret del bot de QQ Open Platform', + qqAppSecret: 'App Secret', + qqAppIdHint: 'App ID del bot de QQ Open Platform', + qqAppId: 'App ID', + allowedUsersHint: 'Lista blanca de IDs de usuario u OpenID, separados por comas', + allowedUsers: 'Usuarios permitidos', + allowAllUsersHint: 'Permite mensajes de cualquier usuario; desactívalo para usar la lista blanca', + allowAllUsers: 'Permitir todos los usuarios', }, // Language @@ -826,6 +928,10 @@ jobTriggered: 'Job ejecutado', closeSession: 'Cerrar esta sesion?', sessionExited: 'Finalizada', processExited: 'Proceso finalizado con codigo {code}', + noSessions: 'No hay sesiones de terminal', + connectionFailed: 'No se pudo conectar al terminal', + connectionError: 'Error de conexión', + connectionClosed: 'Conexión cerrada', }, // Usage @@ -844,8 +950,8 @@ jobTriggered: 'Job ejecutado', date: 'Fecha', tokens: 'Tokens', cache: 'Caché', - cacheRead: 'Cache Read', - cacheWrite: 'Cache Write', + cacheRead: 'Lectura de caché', + cacheWrite: 'Escritura de caché', sessions: 'Sesiones', cost: 'Costo', noData: 'Sin datos de uso', @@ -902,64 +1008,64 @@ jobTriggered: 'Job ejecutado', new_0_5_17_24: 'La página de historial ahora muestra registros de sesiones Cron', new_0_5_17_25: 'Corregir iconos de cambio de idioma y tema comprimidos en la barra lateral colapsada', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', - new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database', - new_0_5_23_1: 'Add bridge-only chat slash commands with localized command suggestions', - new_0_5_23_2: 'Persist command history for session replay without polluting model context, usage, or compression', - new_0_5_23_3: 'Isolate gateway profile environment variables to prevent credentials leaking across profiles', - new_0_5_23_4: 'Reserve the Web UI port during gateway allocation to avoid startup conflicts', - new_0_5_23_5: 'Fix self-update restart handling so successful helper exits are not reported as failures', - new_0_5_24_1: 'Align Bridge chat with API Server handling for multimodal input, system prompt, and workspace context', - new_0_5_25_1: 'Add group chat room reset and clone actions', - new_0_5_25_2: 'Make the Web UI state directory configurable for custom deployment layouts', - new_0_5_25_3: 'Add MiMo as a TTS provider in voice settings', - new_0_5_25_4: 'Fetch custom provider model lists through the backend to avoid browser CORS failures', - new_0_5_25_5: 'Fix tool approval flow for bridge sessions', - new_0_5_25_6: 'Remove the forced CLI platform hint from bridge prompts so custom media/file instructions are preserved', - new_0_5_25_7: 'Show base64 image content correctly in user message history', - new_0_5_25_8: 'Add Playwright browser tests, chat streaming contract coverage, provider model coverage, and coverage baseline', - new_0_5_26_1: 'Support Windows and local Markdown media paths in chat history and rendered messages', - new_0_5_26_2: 'Filter empty assistant history and clear stale compression status when a new run starts', - new_0_5_26_3: 'Add locked file writes for config and profile updates to reduce concurrent write corruption', - new_0_5_26_4: 'Add QQBot and DingTalk channel settings', - new_0_5_26_5: 'Make CLI port detection portable and improve mobile terminal drawer sizing', - new_0_5_26_6: 'Isolate Bridge profile environments and fix Hermes plugin discovery across Python environments', - new_0_5_26_7: 'Explain stopped gateway states with Web UI diagnostics and keep log loading state stable', - new_0_5_26_8: 'Fix session reset mode options, custom provider base URL handling, and dynamic deliver targets', - new_0_5_26_9: 'Add a local tool-call trace visibility toggle in the chat input bar', - new_0_5_26_10: 'Support Hermes Agent package installs when no source checkout is available', - new_0_5_26_11: 'Add xAI Grok OAuth login for SuperGrok subscription users and update Grok model presets', - new_0_5_26_12: 'Expand browser, chat streaming, provider, gateway, config, plugin, and Bridge test coverage', - new_0_5_27_1: 'Add session-level model settings for Bridge chats, with independent provider and model saved per session', - new_0_5_27_2: 'Right-click a Bridge session and choose Set Model to switch the model for that session', - new_0_5_27_3: 'Runs now validate the session model and fall back to the current default model when the saved model is unavailable', - new_0_5_27_4: 'Context compression now follows the current Profile default selected model by default', - new_0_5_30_1: 'Bridge chat now preserves structured history, fixing intermittent no-response and skipped tool execution caused by text-flattened tool history', - new_0_5_30_2: 'Group chat mention routing is more reliable for multiple agents, removes each agent’s own @ mention before delivery, and keeps user display names bound after refresh', - new_0_5_30_3: 'Model pages, chat model dropdowns, and session model selection now scope providers and models to the active Profile with accurate default markers', - new_0_5_30_4: 'Gateway management is simplified: the standalone Gateway page is removed, each Profile is checked for platform configuration before starting the needed gateway, and a lightweight gateway runner handles starts and restarts', - new_0_5_30_5: 'Improve Gateway startup across Docker, Termux, and Windows with runtime-lock handling, port-conflict cleanup, background execution, and restart support', - new_0_5_30_6: 'Harden Windows compatibility for path detection, file downloads, and job/update subprocesses so they no longer flash terminal windows', - new_0_5_30_7: 'Fix config writes and provider presets: validate .env keys, route FUN-Codex through the Responses API, and refresh Z.AI/GLM model lists', - new_0_5_30_8: 'Polish frontend details including collapsed sidebar layout, short group labels, sidebar divider, and conversation outline styling', - new_0_5_30_9: 'Context compression now follows Profile compression settings and hardens stale snapshots by reusing previous summaries with a safe tail instead of recompressing full history', - new_0_5_31_1: "Harden Bridge broker restarts, fix final group-chat stream rendering, and add {'@'}all routing for group chat", - new_0_5_31_2: 'File manager can copy absolute paths, and the mobile session drawer overlay no longer falls behind chat content', - new_0_5_31_3: 'Profile selector now shows avatars, custom avatar uploads, runtime status modal, and gateway/profile restart actions', - new_0_5_31_4: 'Profile avatars now appear in single chat, group chat, and collapsed sidebar, with Web UI profile metadata storage and Windows-safe paths', - new_0_5_31_5: 'Improve Docker, Termux, and Windows gateway detection and restart checks by using gateway_state/gateway.pid for managed gateway liveness', - new_0_5_31_6: 'Add APIKEY.FUN image-generation media endpoint and bundled apikey-image-gen skill for text-to-image, image-to-image, and image editing via the active Profile fun-codex provider', - new_0_4_8_2: 'Fix nested markdown fence rendering truncation', - new_0_4_8_3: 'Fix compressed session lineage projection and search', - new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_5_18_1: 'Página de monitoreo de uso de skills con gráfico de tendencia diaria y estadísticas de skills principales', + new_0_5_18_2: 'Bridge de sesiones de chat CLI con bridge de agente Python para sesiones basadas en WebSocket', + new_0_5_18_3: 'Preset del proveedor Ollama Cloud con catálogo dinámico de modelos', + new_0_5_18_4: 'Soporte para renombrar nombres visibles de modelos (alias)', + new_0_5_18_5: 'Soporte para gestionar la visibilidad de modelos en la Web UI', + new_0_5_18_6: 'Panel de analíticas de uso mejorado', + new_0_5_18_7: 'Despliegue Docker de un solo contenedor con docker-compose y correcciones de arranque del gateway', + new_0_5_18_8: 'Corrección de advertencia HERMES_HOME en la página de plugins para perfiles no predeterminados', + new_0_5_18_9: 'Corrección de estabilidad del gateway tras reinicios de desarrollo y mejora de compatibilidad con Windows', + new_0_5_22_1: 'La API de lista de sesiones de Hermes lee la base de datos del perfil en vez del almacén local de sesiones de la Web UI', + new_0_5_23_1: 'Comandos slash de chat solo para Bridge con sugerencias localizadas', + new_0_5_23_2: 'Historial de comandos persistente para reproducir sesiones sin contaminar contexto, uso ni compresión', + new_0_5_23_3: 'Variables de entorno del perfil gateway aisladas para evitar filtración de credenciales entre perfiles', + new_0_5_23_4: 'Reserva del puerto de la Web UI durante la asignación del gateway para evitar conflictos de arranque', + new_0_5_23_5: 'Corrección del reinicio de autoactualización para no reportar como fallo una salida correcta del helper', + new_0_5_24_1: 'Chat Bridge alineado con API Server para entrada multimodal, prompt del sistema y contexto de workspace', + new_0_5_25_1: 'Acciones de restablecer y clonar salas de chat grupal', + new_0_5_25_2: 'Directorio de estado de la Web UI configurable para diseños de despliegue personalizados', + new_0_5_25_3: 'MiMo agregado como proveedor TTS en ajustes de voz', + new_0_5_25_4: 'Listas de modelos de proveedores personalizados cargadas desde backend para evitar errores CORS del navegador', + new_0_5_25_5: 'Corrección del flujo de aprobación de herramientas en sesiones Bridge', + new_0_5_25_6: 'Eliminada la pista de plataforma CLI forzada en prompts Bridge para preservar instrucciones personalizadas de medios y archivos', + new_0_5_25_7: 'Contenido de imagen base64 mostrado correctamente en el historial de mensajes de usuario', + new_0_5_25_8: 'Pruebas Playwright, cobertura de contrato de streaming de chat, cobertura de modelos de proveedor y línea base de cobertura', + new_0_5_26_1: 'Soporte para rutas de medios Markdown locales y de Windows en historial y mensajes renderizados', + new_0_5_26_2: 'Filtrado de historial vacío del assistant y limpieza del estado de compresión obsoleto al iniciar una nueva ejecución', + new_0_5_26_3: 'Escrituras bloqueadas para actualizaciones de configuración y perfil para reducir corrupción por concurrencia', + new_0_5_26_4: 'Ajustes de canal QQBot y DingTalk', + new_0_5_26_5: 'Detección de puerto CLI portable y mejoras de tamaño del cajón de terminal móvil', + new_0_5_26_6: 'Entornos de perfil Bridge aislados y descubrimiento de plugins Hermes corregido entre entornos Python', + new_0_5_26_7: 'Estados de gateway detenido explicados con diagnósticos de Web UI y estado de carga de logs estable', + new_0_5_26_8: 'Corrección de opciones de restablecimiento de sesión, base URL de proveedor personalizado y destinos dinámicos de entrega', + new_0_5_26_9: 'Interruptor local para mostrar trazas de tool calls en la barra de entrada del chat', + new_0_5_26_10: 'Instalación del paquete Hermes Agent cuando no hay checkout de código fuente disponible', + new_0_5_26_11: 'Login OAuth de xAI Grok para usuarios SuperGrok y actualización de presets de modelos Grok', + new_0_5_26_12: 'Cobertura ampliada de navegador, streaming de chat, proveedor, gateway, configuración, plugins y Bridge', + new_0_5_27_1: 'Ajustes de modelo por sesión para chats Bridge, con proveedor y modelo independientes guardados por sesión', + new_0_5_27_2: 'Clic derecho en una sesión Bridge y elegir Definir modelo para cambiar el modelo de esa sesión', + new_0_5_27_3: 'Las ejecuciones validan el modelo de sesión y vuelven al modelo predeterminado actual si el guardado no está disponible', + new_0_5_27_4: 'La compresión de contexto sigue por defecto el modelo predeterminado seleccionado en el perfil actual', + new_0_5_30_1: 'Bridge chat conserva historial estructurado, corrigiendo respuestas intermitentes ausentes y herramientas omitidas por historial de herramientas aplanado', + new_0_5_30_2: 'El enrutamiento de menciones en chat grupal es más fiable con varios agentes, elimina la propia mención @ antes de entregar y mantiene nombres de usuario tras refrescar', + new_0_5_30_3: 'Páginas de modelos, desplegables de modelo de chat y selección de modelo de sesión se acotan al perfil activo con marcadores predeterminados precisos', + new_0_5_30_4: 'Gestión del gateway simplificada: se elimina la página independiente, cada perfil verifica configuración de plataforma antes de iniciar y un runner ligero gestiona arranques y reinicios', + new_0_5_30_5: 'Arranque del gateway mejorado en Docker, Termux y Windows con manejo de runtime-lock, limpieza de conflictos de puerto, ejecución en segundo plano y soporte de reinicio', + new_0_5_30_6: 'Compatibilidad Windows reforzada para detección de rutas, descargas de archivos y subprocesos de tareas/actualización sin ventanas de terminal parpadeantes', + new_0_5_30_7: 'Escritura de configuración y presets de proveedores corregidos: validar claves .env, enrutar FUN-Codex por Responses API y actualizar modelos Z.AI/GLM', + new_0_5_30_8: 'Detalles del frontend pulidos, incluyendo barra lateral colapsada, etiquetas cortas de grupo, divisor lateral y estilo del esquema de conversación', + new_0_5_30_9: 'La compresión de contexto sigue ajustes del perfil y endurece snapshots obsoletos reutilizando resúmenes previos con una cola segura', + new_0_5_31_1: 'Reinicios del Bridge broker reforzados, renderizado final del stream de chat grupal corregido y enrutamiento {\'@\'}all agregado', + new_0_5_31_2: 'El gestor de archivos puede copiar rutas absolutas y el cajón móvil de sesiones ya no queda detrás del chat', + new_0_5_31_3: 'Selector de perfiles con avatares, subida de avatar personalizado, modal de estado runtime y acciones de reinicio de gateway/perfil', + new_0_5_31_4: 'Avatares de perfil en chat individual, grupal y barra lateral colapsada, con metadatos en Web UI y rutas seguras para Windows', + new_0_5_31_5: 'Mejoras en detección y reinicio de gateway en Docker, Termux y Windows usando gateway_state/gateway.pid para liveness del gateway gestionado', + new_0_5_31_6: 'Endpoint multimedia de generación de imágenes APIKEY.FUN y skill apikey-image-gen integrado para texto-a-imagen, imagen-a-imagen y edición desde el proveedor fun-codex del perfil activo', + new_0_4_8_2: 'Corrige el truncamiento al renderizar bloques Markdown anidados', + new_0_4_8_3: 'Corrige la proyección y búsqueda del linaje de sesiones comprimidas', + new_0_4_8_4: 'Optimiza consultas N+1 de la lista de sesiones y corrige error 500 en búsquedas no CJK', new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs', new_0_4_8_6: 'Smooth session switch with loading transition overlay', new_0_4_8_7: 'Fix login token validation using Hermes session endpoint', @@ -978,18 +1084,23 @@ jobTriggered: 'Job ejecutado', new_0_4_7_10: 'Limpiar base_url_env de .env al eliminar proveedor integrado', new_0_4_7_11: 'Alinear el fondo de la barra lateral del chat grupal con la lista de sesiones', new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery', - new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting', - new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list', - new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading', - new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector', - new_0_4_5_6: 'Fix sidebar i18n missing key warnings', - new_0_4_5_7: 'Clear all localStorage on logout', - new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth', + new_0_4_5_2: 'Reescribe la configuración de contexto del modelo para usar YAML con context_length', + new_0_4_5_3: 'Añade gpt-5.5 a la lista de modelos de OpenAI Codex', + new_0_4_5_4: 'Reemplaza el proxy de tareas por un controlador local y optimiza la carga de modelos', + new_0_4_5_5: 'Añade soporte i18n para modelos personalizados en ModelSelector', + new_0_4_5_6: 'Corrige advertencias por claves i18n faltantes en la barra lateral', + new_0_4_5_7: 'Limpia todo localStorage al cerrar sesión', + new_0_4_5_8: 'Añade rotación periódica de logs para evitar crecimiento ilimitado', new_0_4_2_1: 'Agregar seguimiento de uso de tokens y longitud de contexto dinamico', new_0_4_2_2: 'Agregar modal de busqueda de sesiones', new_0_4_2_3: 'Restaurar sistema de chat grupal con Socket.IO y SQLite', new_0_4_2_4: 'Agregar sesiones fijas y monitor en vivo en la pagina de chat', new_0_4_2_5: 'Corregir deteccion de proveedores integrados y coincidencia de modelos', + new_0_4_4_5: 'Error 500 por búsquedas con caracteres especiales corregido', + new_0_4_4_4: 'Soporte para proveedores StepFun y Nous Portal agregado', + new_0_4_4_3: 'Insignia de estado en vivo en sesiones de chat activas agregada', + new_0_4_4_2: 'Descarga de archivos desde adjuntos de mensajes de chat agregada', + new_0_4_4_1: 'Navegador de archivos con soporte multibackend agregado (local/Docker/SSH/Singularity)', }, // Archivos @@ -1040,6 +1151,7 @@ jobTriggered: 'Job ejecutado', closeEditor: 'Cerrar editor', closePreview: 'Cerrar', saveFile: 'Guardar', + fileTree: 'Árbol de archivos', }, // Chat grupal @@ -1109,4 +1221,104 @@ jobTriggered: 'Job ejecutado', download: 'Descargar', downloadFile: 'Descargar archivo', }, + gateways: { + title: 'Puertas de enlace', + running: 'En ejecución', + stopped: 'Detenido', + started: 'Iniciado', + startFailed: 'No se pudo iniciar el gateway', + stopFailed: 'No se pudo detener el gateway', + }, + kanban: { + title: 'Tablero Kanban', + createTask: 'Nueva tarea', + noTasks: 'Sin tareas', + allStatuses: 'Todos los estados', + allAssignees: 'Todos los responsables', + columns: { + triage: 'Clasificación', + todo: 'Pendiente', + ready: 'Listo', + running: 'En curso', + blocked: 'Bloqueado', + done: 'Completado', + archived: 'Archivado', + }, + card: { + assigneeTooltip: 'Responsable', + priority: { + low: 'Baja', + medium: 'Media', + high: 'Alta', + }, + timeAgo: { + justNow: 'ahora mismo', + minutes: 'hace {count} min', + hours: 'hace {count} h', + days: 'hace {count} d', + }, + }, + board: { + create: 'Nuevo tablero', + archive: 'Archivar tablero', + archiveConfirm: '¿Archivar el tablero actual?', + archived: 'Tablero archivado', + created: 'Tablero creado', + slugPlaceholder: 'Identificador del tablero, p. ej. project-a', + namePlaceholder: 'Nombre visible (opcional)', + slugRequired: 'El identificador del tablero es obligatorio', + }, + form: { + title: 'Título', + titlePlaceholder: 'Título de la tarea', + titleRequired: 'El título es obligatorio', + body: 'Descripción', + bodyPlaceholder: 'Descripción de la tarea (opcional)', + assignee: 'Responsable', + selectAssignee: 'Seleccionar responsable...', + priority: 'Prioridad', + selectPriority: 'Seleccionar prioridad...', + }, + detail: { + status: 'Estado', + priority: 'Prioridad', + assignee: 'Responsable', + tenant: 'Inquilino', + createdAt: 'Creada', + startedAt: 'Iniciada', + completedAt: 'Completada', + comments: 'Comentarios', + events: 'Eventos', + runs: 'Ejecuciones', + artifacts: 'Archivos generados', + result: 'Resultado', + highlights: 'Información clave', + sources: 'Fuentes de datos', + sessions: 'Sesiones relacionadas', + sessionMessages: 'Mensajes de sesión', + noSessions: 'No se encontraron sesiones relacionadas.', + }, + action: { + title: 'Acciones', + assign: 'Asignar', + assignTo: 'Asignar a...', + block: 'Bloquear', + blockReason: 'Motivo del bloqueo', + unblock: 'Desbloquear', + complete: 'Completar', + completeSummary: 'Resumen de finalización (opcional)', + }, + message: { + loadFailed: 'No se pudo cargar la tarea', + taskCreated: 'Tarea creada', + taskAssigned: 'Tarea asignada', + taskBlocked: 'Tarea bloqueada', + taskUnblocked: 'Tarea desbloqueada', + taskCompleted: 'Tarea completada', + }, + stats: { + total: 'Total', + tasks: 'Tareas', + }, + }, } diff --git a/packages/client/src/i18n/locales/fr.ts b/packages/client/src/i18n/locales/fr.ts index 1af4a2f..4f1dae9 100644 --- a/packages/client/src/i18n/locales/fr.ts +++ b/packages/client/src/i18n/locales/fr.ts @@ -63,6 +63,9 @@ export default { confirm: 'Confirmer', expand: 'Developper', collapse: 'Reduire', + stop: 'Arrêter', + start: 'Démarrer', + expired: 'Expiré', }, // Sidebar @@ -85,7 +88,7 @@ export default { files: 'Fichiers', groupChat: 'Chat de groupe', groupConversation: 'Conversation', - groupConversationShort: 'Conv', + groupConversationShort: 'Conv.', groupAgent: 'Agent', groupAgentShort: 'Agent', groupSystem: 'Systeme', @@ -105,6 +108,12 @@ export default { nodeVersionWarning: 'Node.js v{version} detecte. Veuillez passer a la version 23 ou ulterieure.', changelog: 'Journal des modifications', noChangelog: 'Aucun journal disponible', + kanban: 'Kanban', + groupTools: 'Outils', + groupPlatform: 'Plateforme', + gateways: 'Passerelles', + expand: 'Déplier le menu', + collapse: 'Replier le menu', }, // Drawer @@ -183,7 +192,7 @@ export default { pin: 'Épingler', unpin: 'Désépingler', pinned: 'Épinglés', - chatMode: 'Chat', + chatMode: 'Mode chat', liveMode: 'Direct', liveSessions: 'Sessions en direct', recentBadge: 'Récent', @@ -210,7 +219,7 @@ export default { arguments: 'Arguments', result: 'Resultat', truncated: '... (tronque)', - executionDuration: 'Execution time', thinkingLabel: 'Raisonnement', + executionDuration: 'Temps d’exécution', thinkingLabel: 'Raisonnement', thinkingInProgress: 'En réflexion…', thinkingShow: 'Afficher le raisonnement', thinkingHide: 'Masquer le raisonnement', @@ -224,6 +233,32 @@ export default { resumeSpeech: 'Reprendre', stopSpeech: 'Arrêter', speechNotSupported: 'Reproduction vocale non prise en charge dans ce navigateur', + searchEnterHint: 'Entrée pour ouvrir · Échap pour fermer', + searchHint: 'Cmd/Ctrl+K', + searchScope: 'Portée de recherche : base locale des sessions Web UI uniquement ; les sessions d’historique Hermes en lecture seule ne sont pas incluses.', + searchFailed: 'Échec de la recherche de sessions', + searchNoSnippet: 'Aucun extrait disponible', + searchNoResults: 'Aucune session correspondante', + searchRecent: 'Session récente', + searchEmpty: 'Sessions récentes', + searchPlaceholder: 'Rechercher des sessions...', + searchSubtitle: 'Rechercher par titre ou contenu des messages', + searchTitle: 'Rechercher des sessions', + stopGateway: 'Arrêter le gateway', + start: 'Démarrer', + workspaceSetFailed: 'Échec de la définition du workspace', + workspaceSet: 'Workspace défini', + workspacePlaceholder: 'Saisissez le chemin du projet, ex. /home/user/project', + workspace: 'Espace de travail', + setWorkspaceTitle: 'Définir le workspace de session', + setWorkspace: 'Définir le workspace', + modelSetFailed: 'Échec de la définition du modèle', + modelSet: 'Modèle défini', + setModelTitle: 'Définir le modèle de session', + setModel: 'Définir le modèle', + newCliChat: 'Nouveau CLI', + cliEmptyState: 'Démarrer un chat CLI', + autoPlaySpeech: 'Lire la voix automatiquement', }, // Jobs @@ -377,9 +412,9 @@ jobTriggered: 'Job declenche', env: '{count} env', }, metadata: { - agentRoot: 'Agent root', + agentRoot: 'Racine de l’agent', python: 'Python', - scanCwd: 'Scan cwd', + scanCwd: 'Analyser cwd', projectPlugins: 'Plugins du projet', }, }, @@ -405,7 +440,7 @@ jobTriggered: 'Job declenche', title: 'Modeles', addProvider: 'Ajouter un fournisseur', providerType: 'Type de fournisseur', - preset: 'Preset', + preset: 'Préréglage', custom: 'Personnalise', selectProvider: 'Selectionner un fournisseur', chooseProvider: 'Choisir un fournisseur...', @@ -477,6 +512,35 @@ jobTriggered: 'Job declenche', unexpectedFormat: 'Format de reponse inattendu', foundModels: '{count} modeles trouves', fetchFailed: 'Echec de la recuperation des modeles', + xaiWaiting: 'Terminez l’autorisation sur la page xAI ouverte. La fenêtre se fermera automatiquement après approbation.', + xaiOpenLink: 'Ouvrir la page d’autorisation xAI', + xaiLoginTitle: 'Connexion OAuth xAI Grok', + xaiExpired: 'Le lien d’autorisation a expiré. Veuillez réessayer.', + xaiCopyLink: 'Copier le lien d’autorisation', + xaiApproved: 'Connexion réussie !', + visibilitySelectOne: 'Conserver au moins un modèle visible', + visibilitySaved: 'Modèles visibles enregistrés', + visibilitySaveFailed: 'Échec de l’enregistrement des modèles visibles', + visibilityHint: 'Affecte uniquement le sélecteur de modèles et la page Modèles de la Web UI. La configuration provider/model de Hermes CLI n’est pas modifiée ; les appels utilisent toujours l’ID de modèle d’origine.', + showAllModels: 'Afficher tous les modèles', + searchPlaceholder: 'Rechercher des modèles...', + removeCustomModel: 'Retirer ce modèle non listé', + more: 'de plus', + models: 'Liste des modèles', + manageVisibleModelsFor: 'Gérer les modèles visibles de {name}', + manageVisibleModels: 'Gérer les modèles visibles', + getApiKey: 'Obtenir une API Key', + count: 'modèles', + aliasUseOriginal: 'Restaurer l’ID d’origine', + aliasTitleFor: 'Nom affiché pour {model}', + aliasTitle: 'Nom affiché du modèle', + aliasSaveFailed: 'Échec de l’enregistrement du nom affiché', + aliasPlaceholder: 'Laisser vide pour utiliser l’ID de modèle d’origine', + aliasManageFor: 'Noms affichés pour {provider}', + aliasManage: 'Noms affichés', + aliasHint: 'Modifie uniquement le nom affiché dans la Web UI. Hermes reçoit toujours l’ID de modèle d’origine.', + aliasEdit: 'Renommer', + aliasCanonical: 'ID d’origine : {model}', }, // Profiles @@ -529,18 +593,35 @@ jobTriggered: 'Job declenche', hasSoulMd: 'A un soul.md', noProfiles: 'Aucun profil trouve. Creez-en un pour commencer.', avatar: { - title: 'Custom Avatar', - customize: 'Avatar', - upload: 'Upload Image', - random: 'Randomize', - reset: 'Use Default', - hint: 'PNG, JPEG, or WebP. Max 1MB.', - invalidType: 'Please choose a PNG, JPEG, or WebP image', - tooLarge: 'Avatar image must be 1MB or smaller', - saveSuccess: 'Avatar saved', - saveFailed: 'Failed to save avatar', - resetSuccess: 'Default avatar restored', - resetFailed: 'Failed to restore default avatar', + title: 'Avatar personnalisé', + customize: 'Personnaliser l’avatar', + upload: 'Importer une image', + random: 'Générer au hasard', + reset: 'Restaurer par défaut', + hint: 'PNG, JPEG ou WebP, 1 Mo maximum', + invalidType: 'Veuillez choisir une image PNG, JPEG ou WebP', + tooLarge: 'L’image d’avatar ne doit pas dépasser 1 Mo', + saveSuccess: 'Avatar enregistré', + saveFailed: 'Échec de l’enregistrement de l’avatar', + resetSuccess: 'Avatar par défaut restauré', + resetFailed: 'Échec de la restauration de l’avatar par défaut', + }, + runtime: { + activeProfile: 'Actuel : {name}', + bridgeWorker: 'État du Bridge', + gateway: 'Passerelle', + active: 'Actif', + activeTag: 'Actuel', + idle: 'Inactif', + running: 'En cours', + stopped: 'Arrêté', + restartGateway: 'Redémarrer le gateway', + restartProfile: 'Redémarrer le profil', + switchProfile: 'Changer de profil', + gatewayRestarted: 'Gateway redémarré : {name}', + gatewayRestartFailed: 'Échec du redémarrage du gateway', + profileRestarted: 'Profil redémarré : {name}', + profileRestartFailed: 'Échec du redémarrage du profil', }, }, @@ -585,7 +666,7 @@ jobTriggered: 'Job declenche', bellOnCompleteHint: 'Jouer un son lorsque l\'IA a termine', busyInputMode: 'Mode saisie active', busyInputModeHint: 'Permettre la saisie pendant le traitement de l\'IA', - theme: 'Theme', + theme: 'Thème', themeHint: 'Choisir clair, sombre ou suivre les preferences du systeme', themeLight: 'Clair', themeDark: 'Sombre', @@ -749,6 +830,14 @@ jobTriggered: 'Job declenche', unlocked: 'IP debloquee', allUnlocked: '{count} IPs debloquees', }, + models: { + apiKey: 'API Key', + apiKeyPlaceholder: 'Saisir l’API Key', + noProviders: 'Aucun fournisseur configuré', + save: 'Enregistrer', + saveFailed: 'Échec de l’enregistrement', + saved: 'Enregistré', + }, }, // Platform channel settings @@ -757,7 +846,7 @@ jobTriggered: 'Job declenche', requireMentionGroup: "Exiger une mention {'@'} dans les groupes pour repondre", requireMentionChannel: "Exiger une mention {'@'} dans les canaux pour repondre", requireMentionRoom: "Exiger une mention {'@'} dans les salles pour repondre", - reactions: 'Reactions', + reactions: 'Réactions', reactionsHint: 'Reagir aux messages avec des emoji', freeResponseChats: 'Discussions en reponse libre', freeResponseChatsHint: "ID de discussions repondant sans mention {'@'} (separes par des virgules)", @@ -809,6 +898,19 @@ jobTriggered: 'Job declenche', qrFetching: 'Recuperation du code QR...', qrScanHint: 'Scannez avec WeChat pour vous connecter', qrScanedHint: 'Scanne, veuillez confirmer sur le telephone...', + qqSandboxHint: 'Activer l’environnement sandbox (pour les tests)', + qqSandbox: 'Mode sandbox', + qqQrScanHint: 'Scannez le QR code avec QQ ou ouvrez le lien sur téléphone pour terminer l’association', + qqMarkdownHint: 'Activer les messages au format Markdown (certains clients peuvent ne pas le prendre en charge)', + qqMarkdown: 'Support Markdown', + qqAppSecretHint: 'App Secret du bot QQ Open Platform', + qqAppSecret: 'App Secret', + qqAppIdHint: 'App ID du bot QQ Open Platform', + qqAppId: 'App ID', + allowedUsersHint: 'Liste blanche d’ID utilisateur ou OpenID, séparés par des virgules', + allowedUsers: 'Utilisateurs autorisés', + allowAllUsersHint: 'Autoriser les messages de tout utilisateur ; désactivez pour utiliser la liste blanche', + allowAllUsers: 'Autoriser tous les utilisateurs', }, // Language @@ -826,6 +928,10 @@ jobTriggered: 'Job declenche', closeSession: 'Fermer cette session ?', sessionExited: 'Terminee', processExited: 'Processus termine avec le code {code}', + noSessions: 'Aucune session terminal', + connectionFailed: 'Connexion au terminal impossible', + connectionError: 'Erreur de connexion', + connectionClosed: 'Connexion fermée', }, // Usage @@ -844,8 +950,8 @@ jobTriggered: 'Job declenche', date: 'Date', tokens: 'Jetons', cache: 'Cache', - cacheRead: 'Cache Read', - cacheWrite: 'Cache Write', + cacheRead: 'Lecture cache', + cacheWrite: 'Écriture cache', sessions: 'Sessions', cost: 'Cout', noData: 'Aucune donnee d\'utilisation', @@ -902,64 +1008,64 @@ jobTriggered: 'Job declenche', new_0_5_17_24: 'La page d\'historique affiche désormais les enregistrements de sessions Cron', new_0_5_17_25: 'Corriger les icônes de changement de langue et de thème écrasées dans la barre latérale réduite', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', - new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database', - new_0_5_23_1: 'Add bridge-only chat slash commands with localized command suggestions', - new_0_5_23_2: 'Persist command history for session replay without polluting model context, usage, or compression', - new_0_5_23_3: 'Isolate gateway profile environment variables to prevent credentials leaking across profiles', - new_0_5_23_4: 'Reserve the Web UI port during gateway allocation to avoid startup conflicts', - new_0_5_23_5: 'Fix self-update restart handling so successful helper exits are not reported as failures', - new_0_5_24_1: 'Align Bridge chat with API Server handling for multimodal input, system prompt, and workspace context', - new_0_5_25_1: 'Add group chat room reset and clone actions', - new_0_5_25_2: 'Make the Web UI state directory configurable for custom deployment layouts', - new_0_5_25_3: 'Add MiMo as a TTS provider in voice settings', - new_0_5_25_4: 'Fetch custom provider model lists through the backend to avoid browser CORS failures', - new_0_5_25_5: 'Fix tool approval flow for bridge sessions', - new_0_5_25_6: 'Remove the forced CLI platform hint from bridge prompts so custom media/file instructions are preserved', - new_0_5_25_7: 'Show base64 image content correctly in user message history', - new_0_5_25_8: 'Add Playwright browser tests, chat streaming contract coverage, provider model coverage, and coverage baseline', - new_0_5_26_1: 'Support Windows and local Markdown media paths in chat history and rendered messages', - new_0_5_26_2: 'Filter empty assistant history and clear stale compression status when a new run starts', - new_0_5_26_3: 'Add locked file writes for config and profile updates to reduce concurrent write corruption', - new_0_5_26_4: 'Add QQBot and DingTalk channel settings', - new_0_5_26_5: 'Make CLI port detection portable and improve mobile terminal drawer sizing', - new_0_5_26_6: 'Isolate Bridge profile environments and fix Hermes plugin discovery across Python environments', - new_0_5_26_7: 'Explain stopped gateway states with Web UI diagnostics and keep log loading state stable', - new_0_5_26_8: 'Fix session reset mode options, custom provider base URL handling, and dynamic deliver targets', - new_0_5_26_9: 'Add a local tool-call trace visibility toggle in the chat input bar', - new_0_5_26_10: 'Support Hermes Agent package installs when no source checkout is available', - new_0_5_26_11: 'Add xAI Grok OAuth login for SuperGrok subscription users and update Grok model presets', - new_0_5_26_12: 'Expand browser, chat streaming, provider, gateway, config, plugin, and Bridge test coverage', - new_0_5_27_1: 'Add session-level model settings for Bridge chats, with independent provider and model saved per session', - new_0_5_27_2: 'Right-click a Bridge session and choose Set Model to switch the model for that session', - new_0_5_27_3: 'Runs now validate the session model and fall back to the current default model when the saved model is unavailable', - new_0_5_27_4: 'Context compression now follows the current Profile default selected model by default', - new_0_5_30_1: 'Bridge chat now preserves structured history, fixing intermittent no-response and skipped tool execution caused by text-flattened tool history', - new_0_5_30_2: 'Group chat mention routing is more reliable for multiple agents, removes each agent’s own @ mention before delivery, and keeps user display names bound after refresh', - new_0_5_30_3: 'Model pages, chat model dropdowns, and session model selection now scope providers and models to the active Profile with accurate default markers', - new_0_5_30_4: 'Gateway management is simplified: the standalone Gateway page is removed, each Profile is checked for platform configuration before starting the needed gateway, and a lightweight gateway runner handles starts and restarts', - new_0_5_30_5: 'Improve Gateway startup across Docker, Termux, and Windows with runtime-lock handling, port-conflict cleanup, background execution, and restart support', - new_0_5_30_6: 'Harden Windows compatibility for path detection, file downloads, and job/update subprocesses so they no longer flash terminal windows', - new_0_5_30_7: 'Fix config writes and provider presets: validate .env keys, route FUN-Codex through the Responses API, and refresh Z.AI/GLM model lists', - new_0_5_30_8: 'Polish frontend details including collapsed sidebar layout, short group labels, sidebar divider, and conversation outline styling', - new_0_5_30_9: 'Context compression now follows Profile compression settings and hardens stale snapshots by reusing previous summaries with a safe tail instead of recompressing full history', - new_0_5_31_1: "Harden Bridge broker restarts, fix final group-chat stream rendering, and add {'@'}all routing for group chat", - new_0_5_31_2: 'File manager can copy absolute paths, and the mobile session drawer overlay no longer falls behind chat content', - new_0_5_31_3: 'Profile selector now shows avatars, custom avatar uploads, runtime status modal, and gateway/profile restart actions', - new_0_5_31_4: 'Profile avatars now appear in single chat, group chat, and collapsed sidebar, with Web UI profile metadata storage and Windows-safe paths', - new_0_5_31_5: 'Improve Docker, Termux, and Windows gateway detection and restart checks by using gateway_state/gateway.pid for managed gateway liveness', - new_0_5_31_6: 'Add APIKEY.FUN image-generation media endpoint and bundled apikey-image-gen skill for text-to-image, image-to-image, and image editing via the active Profile fun-codex provider', - new_0_4_8_2: 'Fix nested markdown fence rendering truncation', - new_0_4_8_3: 'Fix compressed session lineage projection and search', - new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_5_18_1: 'Page de suivi de l’utilisation des skills avec graphique de tendance quotidien et statistiques des skills principaux', + new_0_5_18_2: 'Bridge de session de chat CLI avec agent bridge Python pour les sessions WebSocket', + new_0_5_18_3: 'Preset fournisseur Ollama Cloud avec catalogue de modèles dynamique', + new_0_5_18_4: 'Prise en charge du renommage des noms affichés des modèles (alias)', + new_0_5_18_5: 'Gestion de la visibilité des modèles dans la Web UI', + new_0_5_18_6: 'Tableau de bord d’analytique d’utilisation amélioré', + new_0_5_18_7: 'Déploiement Docker en conteneur unique avec docker-compose et corrections du démarrage gateway', + new_0_5_18_8: 'Correction de l’avertissement HERMES_HOME de la page plugins pour les profils non par défaut', + new_0_5_18_9: 'Stabilité gateway corrigée lors des redémarrages dev et compatibilité Windows améliorée', + new_0_5_22_1: 'L’API de liste des sessions Hermes lit la base du profil au lieu du store local Web UI', + new_0_5_23_1: 'Commandes slash de chat réservées au Bridge avec suggestions localisées', + new_0_5_23_2: 'Historique de commandes persistant pour rejouer les sessions sans polluer le contexte, l’usage ou la compression', + new_0_5_23_3: 'Variables d’environnement du profil gateway isolées pour éviter les fuites d’identifiants entre profils', + new_0_5_23_4: 'Port Web UI réservé pendant l’allocation gateway pour éviter les conflits de démarrage', + new_0_5_23_5: 'Redémarrage d’auto-mise à jour corrigé pour ne pas signaler comme échec les sorties réussies du helper', + new_0_5_24_1: 'Chat Bridge aligné sur API Server pour l’entrée multimodale, le prompt système et le contexte workspace', + new_0_5_25_1: 'Actions de réinitialisation et clonage des salons de chat de groupe', + new_0_5_25_2: 'Répertoire d’état Web UI configurable pour les déploiements personnalisés', + new_0_5_25_3: 'MiMo ajouté comme fournisseur TTS dans les paramètres vocaux', + new_0_5_25_4: 'Listes de modèles des fournisseurs personnalisés chargées via le backend pour éviter les erreurs CORS navigateur', + new_0_5_25_5: 'Flux d’approbation des outils corrigé pour les sessions Bridge', + new_0_5_25_6: 'Indice de plateforme CLI forcé retiré des prompts Bridge afin de préserver les instructions personnalisées de média/fichier', + new_0_5_25_7: 'Contenu image base64 affiché correctement dans l’historique des messages utilisateur', + new_0_5_25_8: 'Tests navigateur Playwright, couverture du contrat de streaming chat, couverture des modèles fournisseur et baseline de couverture ajoutés', + new_0_5_26_1: 'Chemins média Markdown Windows et locaux pris en charge dans l’historique et les messages rendus', + new_0_5_26_2: 'Historique assistant vide filtré et état de compression obsolète nettoyé au démarrage d’un nouveau run', + new_0_5_26_3: 'Écritures verrouillées pour config et profils afin de réduire la corruption par écritures concurrentes', + new_0_5_26_4: 'Paramètres de canaux QQBot et DingTalk ajoutés', + new_0_5_26_5: 'Détection de port CLI rendue portable et tiroir terminal mobile amélioré', + new_0_5_26_6: 'Environnements de profil Bridge isolés et découverte des plugins Hermes corrigée entre environnements Python', + new_0_5_26_7: 'États gateway arrêtés expliqués avec diagnostics Web UI et état de chargement des logs stabilisé', + new_0_5_26_8: 'Options de réinitialisation de session, base URL fournisseur personnalisé et cibles de livraison dynamiques corrigées', + new_0_5_26_9: 'Bascule locale d’affichage des traces tool-call ajoutée dans la barre de saisie du chat', + new_0_5_26_10: 'Installations du paquet Hermes Agent prises en charge quand aucun checkout source n’est disponible', + new_0_5_26_11: 'Connexion OAuth xAI Grok pour les abonnés SuperGrok et presets de modèles Grok mis à jour', + new_0_5_26_12: 'Couverture étendue pour navigateur, streaming chat, fournisseur, gateway, config, plugin et Bridge', + new_0_5_27_1: 'Paramètres de modèle par session pour les chats Bridge, avec fournisseur et modèle indépendants enregistrés par session', + new_0_5_27_2: 'Clic droit sur une session Bridge puis Définir le modèle pour changer le modèle de cette session', + new_0_5_27_3: 'Les runs valident le modèle de session et reviennent au modèle par défaut actuel si le modèle enregistré est indisponible', + new_0_5_27_4: 'La compression de contexte suit par défaut le modèle sélectionné par défaut du profil courant', + new_0_5_30_1: 'Bridge chat conserve l’historique structuré, corrigeant les absences de réponse et outils ignorés causés par l’historique d’outils aplati', + new_0_5_30_2: 'Le routage des mentions en chat de groupe est plus fiable avec plusieurs agents, retire la mention @ de chaque agent avant livraison et garde les noms utilisateur après actualisation', + new_0_5_30_3: 'Pages modèles, menus de modèle chat et sélection de modèle de session sont limités au profil actif avec marqueurs par défaut précis', + new_0_5_30_4: 'Gestion gateway simplifiée : page Gateway autonome retirée, chaque profil vérifie sa configuration plateforme avant démarrage et un runner léger gère démarrages/redémarrages', + new_0_5_30_5: 'Démarrage gateway amélioré sur Docker, Termux et Windows avec gestion runtime-lock, nettoyage des conflits de port, exécution en arrière-plan et support du redémarrage', + new_0_5_30_6: 'Compatibilité Windows renforcée pour détection de chemins, téléchargements et sous-processus job/update sans fenêtres terminal furtives', + new_0_5_30_7: 'Écritures config et presets fournisseur corrigés : validation des clés .env, routage FUN-Codex via Responses API et listes modèles Z.AI/GLM actualisées', + new_0_5_30_8: 'Détails frontend polis : barre latérale repliée, libellés courts de groupe, séparateur latéral et style de plan de conversation', + new_0_5_30_9: 'La compression de contexte suit les paramètres de profil et durcit les snapshots obsolètes en réutilisant les résumés précédents avec une queue sûre', + new_0_5_31_1: 'Redémarrages Bridge broker renforcés, rendu final du flux de chat de groupe corrigé et routage {\'@\'}all ajouté', + new_0_5_31_2: 'Le gestionnaire de fichiers peut copier les chemins absolus et le tiroir mobile des sessions ne passe plus derrière le chat', + new_0_5_31_3: 'Sélecteur de profils avec avatars, upload d’avatar personnalisé, modal d’état runtime et actions de redémarrage gateway/profil', + new_0_5_31_4: 'Avatars de profil dans chat individuel, chat de groupe et barre latérale repliée, avec métadonnées Web UI et chemins compatibles Windows', + new_0_5_31_5: 'Détection et redémarrage gateway améliorés sur Docker, Termux et Windows via gateway_state/gateway.pid pour la vivacité du gateway géré', + new_0_5_31_6: 'Endpoint média APIKEY.FUN de génération d’images et skill apikey-image-gen intégré pour texte-image, image-image et édition via le fournisseur fun-codex du profil actif', + new_0_4_8_2: 'Corrige la troncature du rendu des blocs Markdown imbriqués', + new_0_4_8_3: 'Corrige la projection et la recherche de filiation des sessions compressées', + new_0_4_8_4: 'Optimise les requêtes N+1 de la liste des sessions et corrige l’erreur 500 sur les recherches non CJK', new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs', new_0_4_8_6: 'Smooth session switch with loading transition overlay', new_0_4_8_7: 'Fix login token validation using Hermes session endpoint', @@ -978,18 +1084,23 @@ jobTriggered: 'Job declenche', new_0_4_7_10: 'Supprimer base_url_env du .env lors de la suppression du fournisseur integre', new_0_4_7_11: 'Aligner le fond de la barre laterale du chat de groupe avec la liste des sessions', new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery', - new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting', - new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list', - new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading', - new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector', - new_0_4_5_6: 'Fix sidebar i18n missing key warnings', - new_0_4_5_7: 'Clear all localStorage on logout', - new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth', + new_0_4_5_2: 'Réécrit la configuration de contexte du modèle en YAML avec le paramètre context_length', + new_0_4_5_3: 'Ajoute gpt-5.5 à la liste des modèles OpenAI Codex', + new_0_4_5_4: 'Remplace le proxy des tâches par un contrôleur local et optimise le chargement des modèles', + new_0_4_5_5: 'Ajoute la prise en charge i18n des modèles personnalisés dans ModelSelector', + new_0_4_5_6: 'Corrige les avertissements de clés i18n manquantes dans la barre latérale', + new_0_4_5_7: 'Efface tout localStorage à la déconnexion', + new_0_4_5_8: 'Ajoute une rotation périodique des journaux pour éviter une croissance illimitée', new_0_4_2_1: 'Ajouter le suivi de l\'utilisation des tokens et la longueur de contexte dynamique', new_0_4_2_2: 'Ajouter la modal de recherche de sessions', new_0_4_2_3: 'Restaurer le systeme de chat de groupe avec Socket.IO et SQLite', new_0_4_2_4: 'Ajouter les sessions epinglees et le moniteur en direct', new_0_4_2_5: 'Corriger la detection des fournisseurs integres et l\'appariement des modeles', + new_0_4_4_5: 'Erreur 500 causée par les recherches avec caractères spéciaux corrigée', + new_0_4_4_4: 'Prise en charge des fournisseurs StepFun et Nous Portal ajoutée', + new_0_4_4_3: 'Badge d’état en direct ajouté aux sessions de chat actives', + new_0_4_4_2: 'Téléchargement de fichiers depuis les pièces jointes des messages de chat ajouté', + new_0_4_4_1: 'Navigateur de fichiers ajouté avec prise en charge multi-backend (local/Docker/SSH/Singularity)', }, // Fichiers @@ -1040,6 +1151,7 @@ jobTriggered: 'Job declenche', closeEditor: 'Fermer l\'editeur', closePreview: 'Fermer', saveFile: 'Enregistrer', + fileTree: 'Arborescence des fichiers', }, // Chat de groupe @@ -1109,4 +1221,104 @@ jobTriggered: 'Job declenche', download: 'Telecharger', downloadFile: 'Telecharger le fichier', }, + gateways: { + title: 'Passerelles', + running: 'En cours', + stopped: 'Arrêté', + started: 'Démarré', + startFailed: 'Échec du démarrage du gateway', + stopFailed: 'Échec de l’arrêt du gateway', + }, + kanban: { + title: 'Tableau Kanban', + createTask: 'Nouvelle tâche', + noTasks: 'Aucune tâche', + allStatuses: 'Tous les statuts', + allAssignees: 'Tous les responsables', + columns: { + triage: 'Triage', + todo: 'À faire', + ready: 'Prêt', + running: 'En cours', + blocked: 'Bloqué', + done: 'Terminé', + archived: 'Archivé', + }, + card: { + assigneeTooltip: 'Responsable', + priority: { + low: 'Basse', + medium: 'Moyenne', + high: 'Haute', + }, + timeAgo: { + justNow: 'à l’instant', + minutes: 'il y a {count} min', + hours: 'il y a {count} h', + days: 'il y a {count} j', + }, + }, + board: { + create: 'Nouveau tableau', + archive: 'Archiver le tableau', + archiveConfirm: 'Archiver le tableau actuel ?', + archived: 'Tableau archivé', + created: 'Tableau créé', + slugPlaceholder: 'Identifiant du tableau, ex. project-a', + namePlaceholder: 'Nom affiché (facultatif)', + slugRequired: 'L’identifiant du tableau est requis', + }, + form: { + title: 'Titre', + titlePlaceholder: 'Titre de la tâche', + titleRequired: 'Le titre est requis', + body: 'Description', + bodyPlaceholder: 'Description de la tâche (facultatif)', + assignee: 'Responsable', + selectAssignee: 'Choisir un responsable...', + priority: 'Priorité', + selectPriority: 'Choisir une priorité...', + }, + detail: { + status: 'Statut', + priority: 'Priorité', + assignee: 'Responsable', + tenant: 'Locataire', + createdAt: 'Créé', + startedAt: 'Démarré', + completedAt: 'Terminé', + comments: 'Commentaires', + events: 'Événements', + runs: 'Exécutions', + artifacts: 'Fichiers produits', + result: 'Résultat', + highlights: 'Informations clés', + sources: 'Sources de données', + sessions: 'Sessions liées', + sessionMessages: 'Messages de session', + noSessions: 'Aucune session liée trouvée.', + }, + action: { + title: 'Actions', + assign: 'Assigner', + assignTo: 'Assigner à...', + block: 'Bloquer', + blockReason: 'Raison du blocage', + unblock: 'Débloquer', + complete: 'Terminer', + completeSummary: 'Résumé de fin (facultatif)', + }, + message: { + loadFailed: 'Échec du chargement de la tâche', + taskCreated: 'Tâche créée', + taskAssigned: 'Tâche assignée', + taskBlocked: 'Tâche bloquée', + taskUnblocked: 'Tâche débloquée', + taskCompleted: 'Tâche terminée', + }, + stats: { + total: 'Total', + tasks: 'Tâches', + }, + }, } diff --git a/packages/client/src/i18n/locales/ja.ts b/packages/client/src/i18n/locales/ja.ts index 95bf50d..e9905c5 100644 --- a/packages/client/src/i18n/locales/ja.ts +++ b/packages/client/src/i18n/locales/ja.ts @@ -63,6 +63,9 @@ export default { confirm: '確認', expand: '展開', collapse: '折りたたむ', + stop: '停止', + start: '開始', + expired: '期限切れ', }, // サイドバー @@ -87,7 +90,7 @@ export default { groupConversation: '会話', groupConversationShort: '会話', groupAgent: 'エージェント', - groupAgentShort: '代理', + groupAgentShort: 'エージェント', groupSystem: 'システム', groupSystemShort: 'シス', groupMonitoring: '監視', @@ -105,6 +108,12 @@ export default { nodeVersionWarning: 'Node.js v{version} が検出されました。バージョン23以降にアップグレードしてください。', changelog: '更新履歴', noChangelog: '更新履歴はありません', + kanban: 'カンバン', + groupTools: 'ツール', + groupPlatform: 'プラットフォーム', + gateways: 'ゲートウェイ', + expand: 'メニューを展開', + collapse: 'メニューを折りたたむ', }, // ドロワー @@ -210,7 +219,7 @@ export default { arguments: '引数', result: '結果', truncated: '... (省略)', - executionDuration: 'Execution time', thinkingLabel: '思考過程', + executionDuration: '実行時間', thinkingLabel: '思考過程', thinkingInProgress: '思考中…', thinkingShow: '思考過程を表示', thinkingHide: '思考過程を隠す', @@ -224,6 +233,32 @@ export default { resumeSpeech: '再開', stopSpeech: '停止', speechNotSupported: 'このブラウザは音声読み上げをサポートしていません', + searchEnterHint: 'Enter で開く · Esc で閉じる', + searchHint: 'Cmd/Ctrl+K', + searchScope: '検索範囲: Web UI のローカルセッション DB のみ。読み取り専用の Hermes 履歴セッションは含まれません。', + searchFailed: 'セッション検索に失敗しました', + searchNoSnippet: '表示できる要約がありません', + searchNoResults: '一致するセッションがありません', + searchRecent: '最近のセッション', + searchEmpty: '最近のセッション', + searchPlaceholder: 'セッションを検索...', + searchSubtitle: 'タイトルまたはメッセージ内容で検索', + searchTitle: 'セッション検索', + stopGateway: 'Gateway を停止', + start: '開始', + workspaceSetFailed: 'Workspace の設定に失敗しました', + workspaceSet: 'Workspace を設定しました', + workspacePlaceholder: 'プロジェクトパスを入力 例: /home/user/project', + workspace: 'ワークスペース', + setWorkspaceTitle: 'セッション Workspace を設定', + setWorkspace: 'Workspace を設定', + modelSetFailed: 'モデルの設定に失敗しました', + modelSet: 'モデルを設定しました', + setModelTitle: 'セッションモデルを設定', + setModel: 'モデルを設定', + newCliChat: '新規 CLI', + cliEmptyState: 'CLI チャットを開始', + autoPlaySpeech: '音声を自動再生', }, // スケジュールジョブ @@ -251,7 +286,7 @@ export default { origin: '配信元', local: 'ローカル', repeatCount: '繰り返し回数(任意)', - modelPlaceholder: 'Default model', + modelPlaceholder: 'デフォルトモデル', repeatPlaceholder: '空白の場合は無制限', jobCreated: 'ジョブを作成しました', jobUpdated: 'ジョブを更新しました', @@ -261,7 +296,7 @@ export default { jobPaused: 'ジョブを一時停止しました', jobResumed: 'ジョブを再開しました', jobTriggered: 'ジョブをトリガーしました', - modelUpdated: 'Model updated', + modelUpdated: 'モデルを更新しました', jobDeleted: 'ジョブを削除しました', status: { running: '実行中', @@ -270,8 +305,8 @@ export default { scheduled: 'スケジュール済み', }, info: { - model: 'Model', - schedule: 'Schedule', + model: 'モデル', + schedule: 'スケジュール', lastRun: '前回実行', nextRun: '次回実行', deliver: '配信', @@ -339,28 +374,28 @@ export default { active: '有効 / 自動', inactive: '非アクティブ', disabled: '無効', - providerManaged: 'Provider 管理', + providerManaged: 'プロバイダー管理', }, status: { enabled: '有効', 'auto-active': '自動有効', inactive: '非アクティブ', disabled: '無効', - 'provider-managed': 'Provider 管理', + 'provider-managed': 'プロバイダー管理', }, statusLabel: { enabled: '設定で有効', 'auto-active': '自動有効', inactive: '非アクティブ', disabled: '無効', - 'provider-managed': 'Provider 管理', + 'provider-managed': 'プロバイダー管理', }, configStatuses: { enabled: '有効', disabled: '無効', 'not-enabled': '未有効', auto: '自動', - 'provider-managed': 'Provider 管理', + 'provider-managed': 'プロバイダー管理', }, table: { plugin: 'プラグイン', @@ -377,9 +412,9 @@ export default { env: '{count} env', }, metadata: { - agentRoot: 'Agent root', + agentRoot: 'エージェントルート', python: 'Python', - scanCwd: 'Scan cwd', + scanCwd: 'cwd をスキャン', projectPlugins: 'プロジェクトプラグイン', }, }, @@ -477,6 +512,35 @@ export default { unexpectedFormat: '予期しないレスポンス形式です', foundModels: '{count} 個のモデルが見つかりました', fetchFailed: 'モデルの取得に失敗しました', + xaiWaiting: '開いた xAI ページで認可を完了してください。承認後、このウィンドウは自動で閉じます。', + xaiOpenLink: 'xAI 認可ページを開く', + xaiLoginTitle: 'xAI Grok OAuth ログイン', + xaiExpired: '認可リンクの期限が切れました。再試行してください。', + xaiCopyLink: '認可リンクをコピー', + xaiApproved: 'ログイン成功!', + visibilitySelectOne: '少なくとも 1 つの表示モデルを残してください', + visibilitySaved: '表示モデルを保存しました', + visibilitySaveFailed: '表示モデルの保存に失敗しました', + visibilityHint: 'Web UI のモデル選択とモデルページの表示だけに影響します。Hermes CLI の provider/model 設定は変更されず、実際の呼び出しは元のモデル ID を使います。', + showAllModels: 'すべてのモデルを表示', + searchPlaceholder: 'モデルを検索...', + removeCustomModel: 'この一覧外モデルを削除', + more: '件追加', + models: 'モデル一覧', + manageVisibleModelsFor: '{name} の表示モデルを管理', + manageVisibleModels: '表示モデルを管理', + getApiKey: 'API Key を取得', + count: '個のモデル', + aliasUseOriginal: '元の ID に戻す', + aliasTitleFor: '{model} の表示名', + aliasTitle: 'モデル表示名', + aliasSaveFailed: '表示名の保存に失敗しました', + aliasPlaceholder: '空欄の場合は元のモデル ID を使用', + aliasManageFor: '{provider} の表示名', + aliasManage: '表示名', + aliasHint: 'Web UI の表示名だけを変更します。Hermes には元のモデル ID が送信されます。', + aliasEdit: '名前変更', + aliasCanonical: '元の ID: {model}', }, // プロファイル @@ -529,18 +593,35 @@ export default { hasSoulMd: 'soul.md あり', noProfiles: 'プロファイルがありません。作成して始めましょう。', avatar: { - title: 'Custom Avatar', - customize: 'Avatar', - upload: 'Upload Image', - random: 'Randomize', - reset: 'Use Default', - hint: 'PNG, JPEG, or WebP. Max 1MB.', - invalidType: 'Please choose a PNG, JPEG, or WebP image', - tooLarge: 'Avatar image must be 1MB or smaller', - saveSuccess: 'Avatar saved', - saveFailed: 'Failed to save avatar', - resetSuccess: 'Default avatar restored', - resetFailed: 'Failed to restore default avatar', + title: 'カスタムアバター', + customize: 'アバター', + upload: '画像をアップロード', + random: 'ランダム生成', + reset: 'デフォルトに戻す', + hint: 'PNG、JPEG、WebP 対応、最大 1MB', + invalidType: 'PNG、JPEG、WebP 画像を選択してください', + tooLarge: 'アバター画像は 1MB 以下にしてください', + saveSuccess: 'アバターを保存しました', + saveFailed: 'アバターの保存に失敗しました', + resetSuccess: 'デフォルトアバターに戻しました', + resetFailed: 'デフォルトアバターへの復元に失敗しました', + }, + runtime: { + activeProfile: '現在: {name}', + bridgeWorker: 'Bridge 状態', + gateway: 'ゲートウェイ', + active: 'アクティブ', + activeTag: '現在', + idle: '待機中', + running: '実行中', + stopped: '停止中', + restartGateway: 'Gateway を再起動', + restartProfile: 'プロファイルを再起動', + switchProfile: 'プロファイルを切り替え', + gatewayRestarted: 'Gateway を再起動しました: {name}', + gatewayRestartFailed: 'Gateway の再起動に失敗しました', + profileRestarted: 'プロファイルを再起動しました: {name}', + profileRestartFailed: 'プロファイルの再起動に失敗しました', }, }, @@ -680,7 +761,7 @@ export default { openaiUrlHint: '例: https://api.openai.com/v1/audio/speech', openaiModel: 'モデル', openaiModelHint: 'tts-1(高速)/ tts-1-hd(高音質)', - openaiVoice: '音色', + openaiVoice: '音声', openaiVoiceHint: '合成に使用する音色', // Custom endpoint @@ -697,7 +778,7 @@ export default { edgeUrl: 'アダプター URL', edgeUrlHint: 'Edge TTS アダプターのアドレス(例:http://127.0.0.1:9882)', edgeUrlPlaceholder: 'http://127.0.0.1:9882', - edgeVoice: '音色', + edgeVoice: '音声', edgeVoiceHint: '音声合成に使用する音色を選択', edgeRate: '速度', edgeRateHint: '音声の速度を調整(0.5~2.0倍)', @@ -749,6 +830,14 @@ export default { unlocked: 'IPをロック解除しました', allUnlocked: '{count}件のIPをロック解除しました', }, + models: { + apiKey: 'API Key', + apiKeyPlaceholder: 'API Key を入力', + noProviders: '設定済みプロバイダーがありません', + save: '保存', + saveFailed: '保存に失敗しました', + saved: '保存しました', + }, }, // プラットフォームチャンネル設定 @@ -809,6 +898,19 @@ export default { qrFetching: 'QR コードを取得中...', qrScanHint: 'WeChat でスキャンしてログイン', qrScanedHint: 'スキャン済み、スマートフォンで確認してください...', + qqSandboxHint: 'サンドボックス環境を有効化(テスト用)', + qqSandbox: 'サンドボックスモード', + qqQrScanHint: 'QQ で上の QR コードをスキャンするか、スマホでリンクを開いて連携を完了します', + qqMarkdownHint: 'Markdown 形式メッセージを有効化(一部クライアントでは未対応の場合があります)', + qqMarkdown: 'Markdown サポート', + qqAppSecretHint: 'QQ Open Platform Bot App Secret', + qqAppSecret: 'App Secret', + qqAppIdHint: 'QQ Open Platform Bot App ID', + qqAppId: 'App ID', + allowedUsersHint: 'ユーザー ID または OpenID の許可リスト。カンマ区切り', + allowedUsers: '許可ユーザー', + allowAllUsersHint: '任意のユーザーからのメッセージを許可します。オフの場合は許可リストを使用します', + allowAllUsers: 'すべてのユーザーを許可', }, // 言語 @@ -826,6 +928,10 @@ export default { closeSession: 'このセッションを閉じますか?', sessionExited: '終了しました', processExited: 'プロセスが終了しました(コード {code})', + noSessions: 'ターミナルセッションがありません', + connectionFailed: 'ターミナルに接続できませんでした', + connectionError: '接続エラー', + connectionClosed: '接続が閉じられました', }, // 使用統計 @@ -902,64 +1008,64 @@ export default { new_0_5_17_24: '履歴ページにCronセッションレコードを表示するように変更', new_0_5_17_25: '折りたたまれたサイドバーでの言語切替・テーマアイコンの圧縮表示を修正', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', - new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database', - new_0_5_23_1: 'Add bridge-only chat slash commands with localized command suggestions', - new_0_5_23_2: 'Persist command history for session replay without polluting model context, usage, or compression', - new_0_5_23_3: 'Isolate gateway profile environment variables to prevent credentials leaking across profiles', - new_0_5_23_4: 'Reserve the Web UI port during gateway allocation to avoid startup conflicts', - new_0_5_23_5: 'Fix self-update restart handling so successful helper exits are not reported as failures', - new_0_5_24_1: 'Align Bridge chat with API Server handling for multimodal input, system prompt, and workspace context', - new_0_5_25_1: 'Add group chat room reset and clone actions', - new_0_5_25_2: 'Make the Web UI state directory configurable for custom deployment layouts', - new_0_5_25_3: 'Add MiMo as a TTS provider in voice settings', - new_0_5_25_4: 'Fetch custom provider model lists through the backend to avoid browser CORS failures', - new_0_5_25_5: 'Fix tool approval flow for bridge sessions', - new_0_5_25_6: 'Remove the forced CLI platform hint from bridge prompts so custom media/file instructions are preserved', - new_0_5_25_7: 'Show base64 image content correctly in user message history', - new_0_5_25_8: 'Add Playwright browser tests, chat streaming contract coverage, provider model coverage, and coverage baseline', - new_0_5_26_1: 'Support Windows and local Markdown media paths in chat history and rendered messages', - new_0_5_26_2: 'Filter empty assistant history and clear stale compression status when a new run starts', - new_0_5_26_3: 'Add locked file writes for config and profile updates to reduce concurrent write corruption', - new_0_5_26_4: 'Add QQBot and DingTalk channel settings', - new_0_5_26_5: 'Make CLI port detection portable and improve mobile terminal drawer sizing', - new_0_5_26_6: 'Isolate Bridge profile environments and fix Hermes plugin discovery across Python environments', - new_0_5_26_7: 'Explain stopped gateway states with Web UI diagnostics and keep log loading state stable', - new_0_5_26_8: 'Fix session reset mode options, custom provider base URL handling, and dynamic deliver targets', - new_0_5_26_9: 'Add a local tool-call trace visibility toggle in the chat input bar', - new_0_5_26_10: 'Support Hermes Agent package installs when no source checkout is available', - new_0_5_26_11: 'Add xAI Grok OAuth login for SuperGrok subscription users and update Grok model presets', - new_0_5_26_12: 'Expand browser, chat streaming, provider, gateway, config, plugin, and Bridge test coverage', - new_0_5_27_1: 'Add session-level model settings for Bridge chats, with independent provider and model saved per session', - new_0_5_27_2: 'Right-click a Bridge session and choose Set Model to switch the model for that session', - new_0_5_27_3: 'Runs now validate the session model and fall back to the current default model when the saved model is unavailable', - new_0_5_27_4: 'Context compression now follows the current Profile default selected model by default', - new_0_5_30_1: 'Bridge chat now preserves structured history, fixing intermittent no-response and skipped tool execution caused by text-flattened tool history', - new_0_5_30_2: 'Group chat mention routing is more reliable for multiple agents, removes each agent’s own @ mention before delivery, and keeps user display names bound after refresh', - new_0_5_30_3: 'Model pages, chat model dropdowns, and session model selection now scope providers and models to the active Profile with accurate default markers', - new_0_5_30_4: 'Gateway management is simplified: the standalone Gateway page is removed, each Profile is checked for platform configuration before starting the needed gateway, and a lightweight gateway runner handles starts and restarts', - new_0_5_30_5: 'Improve Gateway startup across Docker, Termux, and Windows with runtime-lock handling, port-conflict cleanup, background execution, and restart support', - new_0_5_30_6: 'Harden Windows compatibility for path detection, file downloads, and job/update subprocesses so they no longer flash terminal windows', - new_0_5_30_7: 'Fix config writes and provider presets: validate .env keys, route FUN-Codex through the Responses API, and refresh Z.AI/GLM model lists', - new_0_5_30_8: 'Polish frontend details including collapsed sidebar layout, short group labels, sidebar divider, and conversation outline styling', - new_0_5_30_9: 'Context compression now follows Profile compression settings and hardens stale snapshots by reusing previous summaries with a safe tail instead of recompressing full history', - new_0_5_31_1: "Harden Bridge broker restarts, fix final group-chat stream rendering, and add {'@'}all routing for group chat", - new_0_5_31_2: 'File manager can copy absolute paths, and the mobile session drawer overlay no longer falls behind chat content', - new_0_5_31_3: 'Profile selector now shows avatars, custom avatar uploads, runtime status modal, and gateway/profile restart actions', - new_0_5_31_4: 'Profile avatars now appear in single chat, group chat, and collapsed sidebar, with Web UI profile metadata storage and Windows-safe paths', - new_0_5_31_5: 'Improve Docker, Termux, and Windows gateway detection and restart checks by using gateway_state/gateway.pid for managed gateway liveness', - new_0_5_31_6: 'Add APIKEY.FUN image-generation media endpoint and bundled apikey-image-gen skill for text-to-image, image-to-image, and image editing via the active Profile fun-codex provider', - new_0_4_8_2: 'Fix nested markdown fence rendering truncation', - new_0_4_8_3: 'Fix compressed session lineage projection and search', - new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_5_18_1: 'Skills Usage 監視ページに日次トレンドチャートと上位スキル統計を追加', + new_0_5_18_2: 'WebSocket ベースのセッション向けに Python agent bridge を使った CLI チャットセッション Bridge を追加', + new_0_5_18_3: '動的モデルカタログ付き Ollama Cloud プロバイダープリセットを追加', + new_0_5_18_4: 'モデル表示名のリネーム(エイリアス)をサポート', + new_0_5_18_5: 'Web UI でモデルの表示管理をサポート', + new_0_5_18_6: '使用状況分析ダッシュボードを強化', + new_0_5_18_7: 'docker-compose による Docker 単一コンテナデプロイと gateway 起動修正', + new_0_5_18_8: '非デフォルト Profile で plugins ページの HERMES_HOME フォールバック警告を修正', + new_0_5_18_9: '開発時の再起動における gateway 安定性を修正し Windows 互換性を改善', + new_0_5_22_1: 'Hermes セッション一覧 API が Web UI ローカルストアではなく Profile データベースを読むよう修正', + new_0_5_23_1: 'Bridge 専用チャットスラッシュコマンドとローカライズ済み候補を追加', + new_0_5_23_2: 'モデルコンテキスト、使用量、圧縮を汚さずセッション再生用のコマンド履歴を永続化', + new_0_5_23_3: '認証情報が Profile 間で漏れないよう gateway Profile 環境変数を分離', + new_0_5_23_4: '起動競合を避けるため gateway 割り当て時に Web UI ポートを予約', + new_0_5_23_5: 'self-update restart で成功した helper 終了を失敗として報告しないよう修正', + new_0_5_24_1: 'Bridge チャットを API Server のマルチモーダル入力、システムプロンプト、workspace コンテキスト処理に合わせる', + new_0_5_25_1: 'グループチャットルームのリセットと複製アクションを追加', + new_0_5_25_2: 'カスタムデプロイ構成向けに Web UI 状態ディレクトリを設定可能に変更', + new_0_5_25_3: '音声設定に MiMo TTS プロバイダーを追加', + new_0_5_25_4: 'ブラウザ CORS エラーを避けるためカスタムプロバイダーのモデル一覧をバックエンド経由で取得', + new_0_5_25_5: 'Bridge セッションのツール承認フローを修正', + new_0_5_25_6: 'カスタムメディア/ファイル指示を保持するため Bridge プロンプトから強制 CLI プラットフォームヒントを削除', + new_0_5_25_7: 'ユーザーメッセージ履歴で base64 画像コンテンツを正しく表示', + new_0_5_25_8: 'Playwright ブラウザテスト、チャットストリーミング契約カバレッジ、プロバイダーモデルカバレッジ、カバレッジ基準を追加', + new_0_5_26_1: 'チャット履歴とレンダリング済みメッセージで Windows およびローカル Markdown メディアパスをサポート', + new_0_5_26_2: '空の assistant 履歴をフィルタし、新しい実行開始時に古い圧縮状態をクリア', + new_0_5_26_3: '同時書き込みによる破損を減らすため config と Profile 更新にファイルロック書き込みを追加', + new_0_5_26_4: 'QQBot と DingTalk チャンネル設定を追加', + new_0_5_26_5: 'CLI ポート検出をポータブル化し、モバイル端末ドロワーのサイズを改善', + new_0_5_26_6: 'Bridge Profile 環境を分離し、Python 環境をまたぐ Hermes plugin 検出を修正', + new_0_5_26_7: '停止中 gateway 状態に Web UI 診断説明を追加し、ログ読み込み状態を安定化', + new_0_5_26_8: 'セッションリセットモード、カスタムプロバイダー Base URL、動的配信先を修正', + new_0_5_26_9: 'チャット入力バーにローカル保存の tool-call trace 表示切替を追加', + new_0_5_26_10: 'ソース checkout がない場合の Hermes Agent パッケージインストールをサポート', + new_0_5_26_11: 'SuperGrok サブスクユーザー向け xAI Grok OAuth ログインを追加し Grok モデルプリセットを更新', + new_0_5_26_12: 'ブラウザ、チャットストリーミング、プロバイダー、gateway、config、plugin、Bridge のテストカバレッジを拡張', + new_0_5_27_1: 'Bridge チャットにセッション単位のモデル設定を追加し、各セッションで provider と model を独立保存', + new_0_5_27_2: 'Bridge セッションを右クリックして「モデル設定」からそのセッションのモデルを切り替え可能', + new_0_5_27_3: '実行時にセッションモデルを検証し、保存済みモデルが使えない場合は現在のデフォルトモデルにフォールバック', + new_0_5_27_4: 'コンテキスト圧縮はデフォルトで現在の Profile のデフォルト選択モデルに従う', + new_0_5_30_1: 'Bridge チャットが構造化履歴を保持し、tool 履歴のテキスト化による応答なしや tool 実行スキップを修正', + new_0_5_30_2: '複数 Agent のグループチャット mention ルーティングを改善し、配信前に各 Agent 自身の @ mention を削除し、更新後も表示名を保持', + new_0_5_30_3: 'モデルページ、チャットモデルドロップダウン、セッションモデル選択を active Profile にスコープし、デフォルト表示を正確化', + new_0_5_30_4: 'Gateway 管理を簡素化:独立 Gateway ページを削除し、各 Profile の平台設定を確認して必要な gateway を起動、軽量 runner で起動/再起動を管理', + new_0_5_30_5: 'Docker、Termux、Windows での gateway 起動を改善し、runtime lock、ポート競合、バックグラウンド実行、再起動をサポート', + new_0_5_30_6: 'Windows 互換性を強化し、パス検出、ファイルダウンロード、job/update サブプロセスで端末ウィンドウが点滅しないよう修正', + new_0_5_30_7: 'config 書き込みと provider preset を修正:.env キー検証、FUN-Codex の Responses API 経由、Z.AI/GLM モデル一覧更新', + new_0_5_30_8: '折りたたみサイドバー、短いグループラベル、サイドバー区切り、会話アウトラインなど frontend の細部を調整', + new_0_5_30_9: 'コンテキスト圧縮は Profile 圧縮設定に従い、古いスナップショットでは全文再圧縮せず以前の要約と安全な末尾を再利用', + new_0_5_31_1: 'Bridge broker の再起動を強化し、グループチャット最終ストリーム表示を修正し、{\'@\'}all ルーティングを追加', + new_0_5_31_2: 'ファイルマネージャーで絶対パスをコピー可能にし、モバイルセッションドロワーがチャット内容の背面に回らないよう修正', + new_0_5_31_3: 'Profile セレクターにアバター、カスタムアバターアップロード、実行状態モーダル、gateway/Profile 再起動操作を追加', + new_0_5_31_4: 'Profile アバターを単聊、グループチャット、折りたたみサイドバーに反映し、Web UI メタデータ保存と Windows 安全パスに対応', + new_0_5_31_5: 'Docker、Termux、Windows の gateway 検出と再起動確認を改善し、managed gateway の生存判定に gateway_state/gateway.pid を使用', + new_0_5_31_6: 'APIKEY.FUN 生画像メディア endpoint と内蔵 apikey-image-gen skill を追加し、active Profile の fun-codex provider で文生図、図生図、画像編集に対応', + new_0_4_8_2: 'ネストした Markdown フェンスの描画切り詰めを修正', + new_0_4_8_3: '圧縮セッションの系譜投影と検索を修正', + new_0_4_8_4: 'セッション一覧の N+1 クエリを最適化し、非 CJK 入力検索の 500 エラーを修正', new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs', new_0_4_8_6: 'Smooth session switch with loading transition overlay', new_0_4_8_7: 'Fix login token validation using Hermes session endpoint', @@ -978,18 +1084,23 @@ export default { new_0_4_7_10: 'ビルトインプロバイダー削除時に.envからbase_url_envをクリア', new_0_4_7_11: 'グループチャットルームのサイドバー背景をセッションリストに合わせる', new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery', - new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting', - new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list', - new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading', - new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector', - new_0_4_5_6: 'Fix sidebar i18n missing key warnings', - new_0_4_5_7: 'Clear all localStorage on logout', - new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth', + new_0_4_5_2: 'モデルコンテキスト設定を context_length 設定付きの YAML に書き換え', + new_0_4_5_3: 'OpenAI Codex のモデル一覧に gpt-5.5 を追加', + new_0_4_5_4: 'ジョブプロキシをローカルコントローラーに置き換え、モデル読み込みを最適化', + new_0_4_5_5: 'ModelSelector のカスタムモデル機能に i18n 対応を追加', + new_0_4_5_6: 'サイドバーの i18n キー不足警告を修正', + new_0_4_5_7: 'ログアウト時に localStorage をすべて消去', + new_0_4_5_8: 'ログが無制限に増えないよう定期ローテーションを追加', new_0_4_2_1: 'トークン使用量追跡と動的コンテキスト長を追加', new_0_4_2_2: 'セッション検索モーダルを追加', new_0_4_2_3: 'Socket.IOとSQLiteによるグループチャットシステムを復元', new_0_4_2_4: 'チャットページにピン留めセッションとライブモニターを追加', new_0_4_2_5: '組み込みプロバイダー検出とモデルマッチングを修正', + new_0_4_4_5: '特殊文字を含む検索で 500 エラーになる問題を修正', + new_0_4_4_4: 'StepFun と Nous Portal Provider のサポートを追加', + new_0_4_4_3: 'アクティブなチャットセッションにリアルタイム状態バッジを追加', + new_0_4_4_2: 'チャットメッセージ添付ファイルのダウンロードを追加', + new_0_4_4_1: '複数バックエンド(local/Docker/SSH/Singularity)対応のファイルブラウザを追加', }, // ファイル @@ -1040,6 +1151,7 @@ export default { closeEditor: 'エディタを閉じる', closePreview: '閉じる', saveFile: '保存', + fileTree: 'ファイルツリー', }, // グループチャット @@ -1109,4 +1221,104 @@ export default { download: 'ダウンロード', downloadFile: 'ファイルをダウンロード', }, + gateways: { + title: 'ゲートウェイ', + running: '実行中', + stopped: '停止中', + started: '開始しました', + startFailed: 'Gateway の起動に失敗しました', + stopFailed: 'Gateway の停止に失敗しました', + }, + kanban: { + title: 'Kanban ボード', + createTask: '新規タスク', + noTasks: 'タスクはありません', + allStatuses: 'すべての状態', + allAssignees: 'すべての担当者', + columns: { + triage: '振り分け待ち', + todo: '未着手', + ready: '準備完了', + running: '進行中', + blocked: 'ブロック中', + done: '完了', + archived: 'アーカイブ済み', + }, + card: { + assigneeTooltip: '担当者', + priority: { + low: '低', + medium: '中', + high: '高', + }, + timeAgo: { + justNow: 'たった今', + minutes: '{count}分前', + hours: '{count}時間前', + days: '{count}日前', + }, + }, + board: { + create: '新規ボード', + archive: 'ボードをアーカイブ', + archiveConfirm: '現在のボードをアーカイブしますか?', + archived: 'ボードをアーカイブしました', + created: 'ボードを作成しました', + slugPlaceholder: 'ボード識別子 例: project-a', + namePlaceholder: '表示名(任意)', + slugRequired: 'ボード識別子は必須です', + }, + form: { + title: 'タイトル', + titlePlaceholder: 'タスクタイトル', + titleRequired: 'タイトルは必須です', + body: '説明', + bodyPlaceholder: 'タスク説明(任意)', + assignee: '担当者', + selectAssignee: '担当者を選択...', + priority: '優先度', + selectPriority: '優先度を選択...', + }, + detail: { + status: '状態', + priority: '優先度', + assignee: '担当者', + tenant: 'テナント', + createdAt: '作成時刻', + startedAt: '開始時刻', + completedAt: '完了時刻', + comments: 'コメント', + events: 'イベント', + runs: '実行履歴', + artifacts: '成果物', + result: '完了結果', + highlights: '重要情報', + sources: 'データソース', + sessions: '関連セッション', + sessionMessages: 'セッション記録', + noSessions: '関連セッションが見つかりません。', + }, + action: { + title: '操作', + assign: '割り当て', + assignTo: '割り当て先...', + block: 'ブロック', + blockReason: 'ブロック理由', + unblock: 'ブロック解除', + complete: '完了', + completeSummary: '完了サマリー(任意)', + }, + message: { + loadFailed: 'タスクの読み込みに失敗しました', + taskCreated: 'タスクを作成しました', + taskAssigned: 'タスクを割り当てました', + taskBlocked: 'タスクをブロックしました', + taskUnblocked: 'タスクのブロックを解除しました', + taskCompleted: 'タスクを完了しました', + }, + stats: { + total: '合計', + tasks: 'タスク数', + }, + }, } diff --git a/packages/client/src/i18n/locales/ko.ts b/packages/client/src/i18n/locales/ko.ts index 3942bbc..1f608db 100644 --- a/packages/client/src/i18n/locales/ko.ts +++ b/packages/client/src/i18n/locales/ko.ts @@ -63,6 +63,9 @@ export default { confirm: '확인', expand: '펼치기', collapse: '접기', + stop: '중지', + start: '시작', + expired: '만료됨', }, // 사이드바 @@ -105,6 +108,12 @@ export default { nodeVersionWarning: 'Node.js v{version}이 감지되었습니다. 버전 23 이상으로 업그레이드하세요.', changelog: '변경 이력', noChangelog: '변경 이력이 없습니다', + kanban: '칸반', + groupTools: '도구', + groupPlatform: '플랫폼', + gateways: '게이트웨이', + expand: '메뉴 펼치기', + collapse: '메뉴 접기', }, // 서랍 @@ -210,7 +219,7 @@ export default { arguments: '인수', result: '결과', truncated: '... (잘림)', - executionDuration: 'Execution time', thinkingLabel: '사고 과정', + executionDuration: '실행 시간', thinkingLabel: '사고 과정', thinkingInProgress: '사고 중…', thinkingShow: '사고 과정 펼치기', thinkingHide: '사고 과정 접기', @@ -224,6 +233,32 @@ export default { resumeSpeech: '재개', stopSpeech: '중지', speechNotSupported: '이 브라우저는 음성 재생을 지원하지 않습니다', + searchEnterHint: 'Enter로 열기 · Esc로 닫기', + searchHint: 'Cmd/Ctrl+K', + searchScope: '검색 범위: Web UI 로컬 세션 DB만 포함하며 읽기 전용 Hermes 기록 세션은 포함하지 않습니다.', + searchFailed: '세션 검색 실패', + searchNoSnippet: '표시할 요약이 없습니다', + searchNoResults: '일치하는 세션이 없습니다', + searchRecent: '최근 세션', + searchEmpty: '최근 세션', + searchPlaceholder: '세션 검색...', + searchSubtitle: '제목 또는 메시지 내용으로 검색', + searchTitle: '세션 검색', + stopGateway: 'Gateway 중지', + start: '시작', + workspaceSetFailed: 'Workspace 설정 실패', + workspaceSet: 'Workspace가 설정되었습니다', + workspacePlaceholder: '프로젝트 경로 입력, 예: /home/user/project', + workspace: '작업 공간', + setWorkspaceTitle: '세션 Workspace 설정', + setWorkspace: 'Workspace 설정', + modelSetFailed: '모델 설정 실패', + modelSet: '모델이 설정되었습니다', + setModelTitle: '세션 모델 설정', + setModel: '모델 설정', + newCliChat: '새 CLI', + cliEmptyState: 'CLI 채팅 시작', + autoPlaySpeech: '음성 자동 재생', }, // 예약 작업 @@ -251,7 +286,7 @@ export default { origin: '출처', local: '로컬', repeatCount: '반복 횟수 (선택)', - modelPlaceholder: 'Default model', + modelPlaceholder: '기본 모델', repeatPlaceholder: '비워두면 무한 반복', jobCreated: '작업이 생성되었습니다', jobUpdated: '작업이 업데이트되었습니다', @@ -261,7 +296,7 @@ export default { jobPaused: '작업이 일시 정지되었습니다', jobResumed: '작업이 재개되었습니다', jobTriggered: '작업이 실행되었습니다', - modelUpdated: 'Model updated', + modelUpdated: '모델이 업데이트되었습니다', jobDeleted: '작업이 삭제되었습니다', status: { running: '실행 중', @@ -270,8 +305,8 @@ export default { scheduled: '예약됨', }, info: { - model: 'Model', - schedule: 'Schedule', + model: '모델', + schedule: '일정', lastRun: '마지막 실행', nextRun: '다음 실행', deliver: '전송', @@ -377,9 +412,9 @@ export default { env: '{count} env', }, metadata: { - agentRoot: 'Agent root', + agentRoot: '에이전트 루트', python: 'Python', - scanCwd: 'Scan cwd', + scanCwd: 'cwd 스캔', projectPlugins: '프로젝트 플러그인', }, }, @@ -465,7 +500,7 @@ export default { defaultShort: '기본값', builtIn: '내장', customType: '사용자 지정', - provider: 'Provider', + provider: '공급자', contextLength: '컨텍스트 길이', contextLengthPlaceholder: '예: 200000 (선택사항)', local: '로컬 ({host})', @@ -477,6 +512,35 @@ export default { unexpectedFormat: '예상치 못한 응답 형식입니다', foundModels: '{count}개의 모델을 찾았습니다', fetchFailed: '모델을 가져오지 못했습니다', + xaiWaiting: '열린 xAI 페이지에서 인증을 완료하세요. 승인되면 창이 자동으로 닫힙니다.', + xaiOpenLink: 'xAI 인증 페이지 열기', + xaiLoginTitle: 'xAI Grok OAuth 로그인', + xaiExpired: '인증 링크가 만료되었습니다. 다시 시도하세요.', + xaiCopyLink: '인증 링크 복사', + xaiApproved: '로그인 성공!', + visibilitySelectOne: '최소 하나의 표시 모델을 유지하세요', + visibilitySaved: '표시 모델이 저장되었습니다', + visibilitySaveFailed: '표시 모델 저장 실패', + visibilityHint: 'Web UI의 모델 선택기와 모델 페이지 표시에만 영향을 줍니다. Hermes CLI의 provider/model 설정은 변경되지 않으며 실제 호출은 원본 모델 ID를 사용합니다.', + showAllModels: '모든 모델 표시', + searchPlaceholder: '모델 검색...', + removeCustomModel: '목록에 없는 이 모델 제거', + more: '개 더', + models: '모델 목록', + manageVisibleModelsFor: '{name} 표시 모델 관리', + manageVisibleModels: '표시 모델 관리', + getApiKey: 'API Key 가져오기', + count: '개 모델', + aliasUseOriginal: '원본 ID로 복원', + aliasTitleFor: '{model}의 표시 이름', + aliasTitle: '모델 표시 이름', + aliasSaveFailed: '표시 이름 저장 실패', + aliasPlaceholder: '비워두면 원본 모델 ID 사용', + aliasManageFor: '{provider}의 표시 이름', + aliasManage: '표시 이름', + aliasHint: 'Web UI 표시 이름만 변경합니다. Hermes에는 여전히 원본 모델 ID가 전달됩니다.', + aliasEdit: '이름 변경', + aliasCanonical: '원본 ID: {model}', }, // 프로필 @@ -522,25 +586,42 @@ export default { model: '모델', gateway: '게이트웨이', alias: '별칭', - provider: 'Provider', + provider: '공급자', path: '경로', skills: '스킬', hasEnv: '.env 있음', hasSoulMd: 'soul.md 있음', noProfiles: '프로필이 없습니다. 새로 만들어 시작하세요.', avatar: { - title: 'Custom Avatar', - customize: 'Avatar', - upload: 'Upload Image', - random: 'Randomize', - reset: 'Use Default', - hint: 'PNG, JPEG, or WebP. Max 1MB.', - invalidType: 'Please choose a PNG, JPEG, or WebP image', - tooLarge: 'Avatar image must be 1MB or smaller', - saveSuccess: 'Avatar saved', - saveFailed: 'Failed to save avatar', - resetSuccess: 'Default avatar restored', - resetFailed: 'Failed to restore default avatar', + title: '사용자 지정 아바타', + customize: '아바타', + upload: '이미지 업로드', + random: '무작위 생성', + reset: '기본값 복원', + hint: 'PNG, JPEG, WebP 지원, 최대 1MB', + invalidType: 'PNG, JPEG 또는 WebP 이미지를 선택하세요', + tooLarge: '아바타 이미지는 1MB를 초과할 수 없습니다', + saveSuccess: '아바타가 저장되었습니다', + saveFailed: '아바타 저장 실패', + resetSuccess: '기본 아바타로 복원되었습니다', + resetFailed: '기본 아바타 복원 실패', + }, + runtime: { + activeProfile: '현재: {name}', + bridgeWorker: 'Bridge 상태', + gateway: '게이트웨이', + active: '활성', + activeTag: '현재', + idle: '대기 중', + running: '실행 중', + stopped: '중지됨', + restartGateway: 'Gateway 재시작', + restartProfile: '프로필 재시작', + switchProfile: '프로필 전환', + gatewayRestarted: 'Gateway가 재시작되었습니다: {name}', + gatewayRestartFailed: 'Gateway 재시작 실패', + profileRestarted: '프로필이 재시작되었습니다: {name}', + profileRestartFailed: '프로필 재시작 실패', }, }, @@ -749,6 +830,14 @@ export default { unlocked: 'IP 잠금 해제됨', allUnlocked: '{count}개 IP 잠금 해제됨', }, + models: { + apiKey: 'API Key', + apiKeyPlaceholder: 'API Key 입력', + noProviders: '구성된 공급자가 없습니다', + save: '저장', + saveFailed: '저장 실패', + saved: '저장됨', + }, }, // 플랫폼 채널 설정 @@ -784,7 +873,7 @@ export default { botToken: 'Bot Token', botTokenHint: '개발자 포털에서 발급받은 Bot Token', accessToken: 'Access Token', - accessTokenHint: 'Matrix Access Token', + accessTokenHint: 'Matrix 액세스 토큰', homeserver: 'Homeserver URL', homeserverHint: 'Matrix 홈서버 URL', appId: 'App ID', @@ -809,6 +898,19 @@ export default { qrFetching: 'QR 코드를 가져오는 중...', qrScanHint: 'WeChat으로 QR 코드를 스캔하여 로그인', qrScanedHint: '스캔됨, 휴대폰에서 확인해 주세요...', + qqSandboxHint: '샌드박스 환경 활성화(테스트용)', + qqSandbox: '샌드박스 모드', + qqQrScanHint: 'QQ로 위 QR 코드를 스캔하거나 휴대폰에서 링크를 열어 바인딩을 완료하세요', + qqMarkdownHint: 'Markdown 형식 메시지 활성화(일부 클라이언트는 지원하지 않을 수 있음)', + qqMarkdown: 'Markdown 지원', + qqAppSecretHint: 'QQ Open Platform Bot App Secret', + qqAppSecret: 'App Secret', + qqAppIdHint: 'QQ Open Platform Bot App ID', + qqAppId: 'App ID', + allowedUsersHint: '사용자 ID 또는 OpenID 허용 목록, 쉼표로 구분', + allowedUsers: '허용 사용자', + allowAllUsersHint: '모든 사용자의 메시지를 허용합니다. 끄면 허용 목록을 사용합니다', + allowAllUsers: '모든 사용자 허용', }, // 언어 @@ -826,6 +928,10 @@ export default { closeSession: '이 세션을 닫으시겠습니까?', sessionExited: '종료됨', processExited: '프로세스가 종료되었습니다 (코드 {code})', + noSessions: '터미널 세션이 없습니다', + connectionFailed: '터미널에 연결하지 못했습니다', + connectionError: '연결 오류', + connectionClosed: '연결이 닫혔습니다', }, // 사용량 @@ -902,64 +1008,64 @@ export default { new_0_5_17_24: '기록 페이지에 Cron 세션 기록 표시', new_0_5_17_25: '접힌 사이드바에서 언어 전환 및 테마 아이콘이 눌리는 문제 수정', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', - new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database', - new_0_5_23_1: 'Add bridge-only chat slash commands with localized command suggestions', - new_0_5_23_2: 'Persist command history for session replay without polluting model context, usage, or compression', - new_0_5_23_3: 'Isolate gateway profile environment variables to prevent credentials leaking across profiles', - new_0_5_23_4: 'Reserve the Web UI port during gateway allocation to avoid startup conflicts', - new_0_5_23_5: 'Fix self-update restart handling so successful helper exits are not reported as failures', - new_0_5_24_1: 'Align Bridge chat with API Server handling for multimodal input, system prompt, and workspace context', - new_0_5_25_1: 'Add group chat room reset and clone actions', - new_0_5_25_2: 'Make the Web UI state directory configurable for custom deployment layouts', - new_0_5_25_3: 'Add MiMo as a TTS provider in voice settings', - new_0_5_25_4: 'Fetch custom provider model lists through the backend to avoid browser CORS failures', - new_0_5_25_5: 'Fix tool approval flow for bridge sessions', - new_0_5_25_6: 'Remove the forced CLI platform hint from bridge prompts so custom media/file instructions are preserved', - new_0_5_25_7: 'Show base64 image content correctly in user message history', - new_0_5_25_8: 'Add Playwright browser tests, chat streaming contract coverage, provider model coverage, and coverage baseline', - new_0_5_26_1: 'Support Windows and local Markdown media paths in chat history and rendered messages', - new_0_5_26_2: 'Filter empty assistant history and clear stale compression status when a new run starts', - new_0_5_26_3: 'Add locked file writes for config and profile updates to reduce concurrent write corruption', - new_0_5_26_4: 'Add QQBot and DingTalk channel settings', - new_0_5_26_5: 'Make CLI port detection portable and improve mobile terminal drawer sizing', - new_0_5_26_6: 'Isolate Bridge profile environments and fix Hermes plugin discovery across Python environments', - new_0_5_26_7: 'Explain stopped gateway states with Web UI diagnostics and keep log loading state stable', - new_0_5_26_8: 'Fix session reset mode options, custom provider base URL handling, and dynamic deliver targets', - new_0_5_26_9: 'Add a local tool-call trace visibility toggle in the chat input bar', - new_0_5_26_10: 'Support Hermes Agent package installs when no source checkout is available', - new_0_5_26_11: 'Add xAI Grok OAuth login for SuperGrok subscription users and update Grok model presets', - new_0_5_26_12: 'Expand browser, chat streaming, provider, gateway, config, plugin, and Bridge test coverage', - new_0_5_27_1: 'Add session-level model settings for Bridge chats, with independent provider and model saved per session', - new_0_5_27_2: 'Right-click a Bridge session and choose Set Model to switch the model for that session', - new_0_5_27_3: 'Runs now validate the session model and fall back to the current default model when the saved model is unavailable', - new_0_5_27_4: 'Context compression now follows the current Profile default selected model by default', - new_0_5_30_1: 'Bridge chat now preserves structured history, fixing intermittent no-response and skipped tool execution caused by text-flattened tool history', - new_0_5_30_2: 'Group chat mention routing is more reliable for multiple agents, removes each agent’s own @ mention before delivery, and keeps user display names bound after refresh', - new_0_5_30_3: 'Model pages, chat model dropdowns, and session model selection now scope providers and models to the active Profile with accurate default markers', - new_0_5_30_4: 'Gateway management is simplified: the standalone Gateway page is removed, each Profile is checked for platform configuration before starting the needed gateway, and a lightweight gateway runner handles starts and restarts', - new_0_5_30_5: 'Improve Gateway startup across Docker, Termux, and Windows with runtime-lock handling, port-conflict cleanup, background execution, and restart support', - new_0_5_30_6: 'Harden Windows compatibility for path detection, file downloads, and job/update subprocesses so they no longer flash terminal windows', - new_0_5_30_7: 'Fix config writes and provider presets: validate .env keys, route FUN-Codex through the Responses API, and refresh Z.AI/GLM model lists', - new_0_5_30_8: 'Polish frontend details including collapsed sidebar layout, short group labels, sidebar divider, and conversation outline styling', - new_0_5_30_9: 'Context compression now follows Profile compression settings and hardens stale snapshots by reusing previous summaries with a safe tail instead of recompressing full history', - new_0_5_31_1: "Harden Bridge broker restarts, fix final group-chat stream rendering, and add {'@'}all routing for group chat", - new_0_5_31_2: 'File manager can copy absolute paths, and the mobile session drawer overlay no longer falls behind chat content', - new_0_5_31_3: 'Profile selector now shows avatars, custom avatar uploads, runtime status modal, and gateway/profile restart actions', - new_0_5_31_4: 'Profile avatars now appear in single chat, group chat, and collapsed sidebar, with Web UI profile metadata storage and Windows-safe paths', - new_0_5_31_5: 'Improve Docker, Termux, and Windows gateway detection and restart checks by using gateway_state/gateway.pid for managed gateway liveness', - new_0_5_31_6: 'Add APIKEY.FUN image-generation media endpoint and bundled apikey-image-gen skill for text-to-image, image-to-image, and image editing via the active Profile fun-codex provider', - new_0_4_8_2: 'Fix nested markdown fence rendering truncation', - new_0_4_8_3: 'Fix compressed session lineage projection and search', - new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_5_18_1: '일별 추세 차트와 상위 스킬 통계를 포함한 Skills Usage 모니터링 페이지 추가', + new_0_5_18_2: 'WebSocket 기반 세션을 위한 Python agent bridge 기반 CLI 채팅 세션 Bridge 추가', + new_0_5_18_3: '동적 모델 카탈로그가 포함된 Ollama Cloud 공급자 프리셋 추가', + new_0_5_18_4: '모델 표시 이름 변경(별칭) 지원', + new_0_5_18_5: 'Web UI에서 모델 표시 여부 관리 지원', + new_0_5_18_6: '사용량 분석 대시보드 개선', + new_0_5_18_7: 'docker-compose 기반 Docker 단일 컨테이너 배포와 gateway 시작 수정', + new_0_5_18_8: '기본값이 아닌 Profile에서 plugins 페이지 HERMES_HOME fallback 경고 수정', + new_0_5_18_9: '개발 재시작 시 gateway 안정성 수정 및 Windows 호환성 개선', + new_0_5_22_1: 'Hermes 세션 목록 API가 Web UI 로컬 세션 저장소 대신 Profile 데이터베이스를 읽도록 수정', + new_0_5_23_1: 'Bridge 전용 채팅 슬래시 명령과 지역화된 명령 제안 추가', + new_0_5_23_2: '모델 컨텍스트, 사용량, 압축을 오염시키지 않고 세션 재생용 명령 기록 저장', + new_0_5_23_3: '자격 증명이 Profile 간에 새지 않도록 gateway Profile 환경 변수 격리', + new_0_5_23_4: '시작 충돌 방지를 위해 gateway 할당 중 Web UI 포트 예약', + new_0_5_23_5: 'self-update 재시작에서 성공한 helper 종료를 실패로 보고하지 않도록 수정', + new_0_5_24_1: 'Bridge 채팅을 API Server의 멀티모달 입력, 시스템 프롬프트, workspace 컨텍스트 처리와 정렬', + new_0_5_25_1: '그룹 채팅 룸 재설정 및 복제 액션 추가', + new_0_5_25_2: '사용자 지정 배포 레이아웃을 위해 Web UI 상태 디렉터리 설정 가능', + new_0_5_25_3: '음성 설정에 MiMo TTS 공급자 추가', + new_0_5_25_4: '브라우저 CORS 실패 방지를 위해 사용자 지정 공급자 모델 목록을 백엔드에서 가져오도록 변경', + new_0_5_25_5: 'Bridge 세션의 도구 승인 흐름 수정', + new_0_5_25_6: '사용자 지정 미디어/파일 지침 보존을 위해 Bridge 프롬프트의 강제 CLI 플랫폼 힌트 제거', + new_0_5_25_7: '사용자 메시지 기록에서 base64 이미지 콘텐츠를 올바르게 표시', + new_0_5_25_8: 'Playwright 브라우저 테스트, 채팅 스트리밍 계약 커버리지, 공급자 모델 커버리지 및 커버리지 기준선 추가', + new_0_5_26_1: '채팅 기록과 렌더링된 메시지에서 Windows 및 로컬 Markdown 미디어 경로 지원', + new_0_5_26_2: '빈 assistant 기록을 필터링하고 새 실행 시작 시 오래된 압축 상태 정리', + new_0_5_26_3: '동시 쓰기 손상을 줄이기 위해 config 및 Profile 업데이트에 잠금 쓰기 추가', + new_0_5_26_4: 'QQBot 및 DingTalk 채널 설정 추가', + new_0_5_26_5: 'CLI 포트 감지를 이식 가능하게 만들고 모바일 터미널 드로어 크기 개선', + new_0_5_26_6: 'Bridge Profile 환경 격리 및 Python 환경 간 Hermes plugin 발견 수정', + new_0_5_26_7: '중지된 gateway 상태를 Web UI 진단으로 설명하고 로그 로딩 상태 안정화', + new_0_5_26_8: '세션 재설정 모드 옵션, 사용자 지정 공급자 base URL 처리, 동적 전달 대상 수정', + new_0_5_26_9: '채팅 입력 바에 로컬 도구 호출 추적 표시 토글 추가', + new_0_5_26_10: '소스 checkout이 없을 때 Hermes Agent 패키지 설치 지원', + new_0_5_26_11: 'SuperGrok 구독자를 위한 xAI Grok OAuth 로그인 추가 및 Grok 모델 프리셋 업데이트', + new_0_5_26_12: '브라우저, 채팅 스트리밍, 공급자, gateway, config, plugin, Bridge 테스트 커버리지 확장', + new_0_5_27_1: 'Bridge 채팅에 세션별 모델 설정 추가, 각 세션에서 provider와 model 독립 저장', + new_0_5_27_2: 'Bridge 세션을 우클릭하고 모델 설정을 선택해 해당 세션의 모델 전환', + new_0_5_27_3: '실행 시 세션 모델을 검증하고 저장된 모델을 사용할 수 없으면 현재 기본 모델로 fallback', + new_0_5_27_4: '컨텍스트 압축은 기본적으로 현재 Profile의 기본 선택 모델을 따름', + new_0_5_30_1: 'Bridge 채팅이 구조화된 기록을 보존하여 평탄화된 도구 기록으로 인한 간헐적 무응답과 도구 실행 누락 수정', + new_0_5_30_2: '여러 agent의 그룹 채팅 mention 라우팅을 개선하고 전달 전 각 agent 자신의 @ mention 제거 및 새로고침 후 표시 이름 유지', + new_0_5_30_3: '모델 페이지, 채팅 모델 드롭다운, 세션 모델 선택을 active Profile 범위로 제한하고 기본 표시 정확도 개선', + new_0_5_30_4: 'Gateway 관리 단순화: 독립 Gateway 페이지 제거, 각 Profile 플랫폼 설정 확인 후 필요한 gateway 시작, 경량 runner로 시작/재시작 관리', + new_0_5_30_5: 'Docker, Termux, Windows의 gateway 시작 개선: runtime lock 처리, 포트 충돌 정리, 백그라운드 실행, 재시작 지원', + new_0_5_30_6: 'Windows 호환성 강화: 경로 감지, 파일 다운로드, job/update 하위 프로세스에서 터미널 창이 깜박이지 않음', + new_0_5_30_7: 'config 쓰기와 provider preset 수정: .env 키 검증, FUN-Codex를 Responses API로 라우팅, Z.AI/GLM 모델 목록 갱신', + new_0_5_30_8: '접힌 사이드바 레이아웃, 짧은 그룹 라벨, 사이드바 구분선, 대화 outline 스타일 등 프론트엔드 세부 개선', + new_0_5_30_9: '컨텍스트 압축이 Profile 압축 설정을 따르고, 오래된 snapshot은 전체 재압축 대신 이전 요약과 안전한 tail 재사용', + new_0_5_31_1: 'Bridge broker 재시작 안정화, 그룹 채팅 최종 스트림 렌더링 수정, 그룹 채팅 {\'@\'}all 라우팅 추가', + new_0_5_31_2: '파일 관리자가 절대 경로를 복사할 수 있고 모바일 세션 드로어가 채팅 콘텐츠 뒤로 가지 않음', + new_0_5_31_3: 'Profile 선택기에 아바타, 사용자 지정 아바타 업로드, 런타임 상태 모달, gateway/Profile 재시작 액션 추가', + new_0_5_31_4: 'Profile 아바타가 단일 채팅, 그룹 채팅, 접힌 사이드바에 표시되며 Web UI 메타데이터 저장과 Windows 안전 경로 지원', + new_0_5_31_5: 'Docker, Termux, Windows gateway 감지 및 재시작 확인을 개선하고 managed gateway liveness 판단에 gateway_state/gateway.pid 사용', + new_0_5_31_6: 'APIKEY.FUN 이미지 생성 미디어 endpoint와 내장 apikey-image-gen skill 추가, active Profile의 fun-codex provider로 텍스트-이미지, 이미지-이미지, 이미지 편집 지원', + new_0_4_8_2: '중첩 Markdown 코드 블록 렌더링 잘림 수정', + new_0_4_8_3: '압축 세션 계보 투영 및 검색 수정', + new_0_4_8_4: '세션 목록 N+1 쿼리를 최적화하고 비 CJK 입력 검색 500 오류 수정', new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs', new_0_4_8_6: 'Smooth session switch with loading transition overlay', new_0_4_8_7: 'Fix login token validation using Hermes session endpoint', @@ -978,18 +1084,23 @@ export default { new_0_4_7_10: '내장 프로바이더 삭제 시 .env에서 base_url_env 정리', new_0_4_7_11: '그룹 채팅 방 사이드바 배경을 세션 목록과 맞추기', new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery', - new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting', - new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list', - new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading', - new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector', - new_0_4_5_6: 'Fix sidebar i18n missing key warnings', - new_0_4_5_7: 'Clear all localStorage on logout', - new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth', + new_0_4_5_2: '모델 컨텍스트 설정을 context_length 옵션이 있는 YAML로 변경', + new_0_4_5_3: 'OpenAI Codex 모델 목록에 gpt-5.5 추가', + new_0_4_5_4: '작업 프록시를 로컬 컨트롤러로 교체하고 모델 로딩 최적화', + new_0_4_5_5: 'ModelSelector의 사용자 지정 모델 기능에 i18n 지원 추가', + new_0_4_5_6: '사이드바 i18n 누락 키 경고 수정', + new_0_4_5_7: '로그아웃 시 모든 localStorage 정리', + new_0_4_5_8: '로그가 무제한 증가하지 않도록 주기적 로그 로테이션 추가', new_0_4_2_1: '토큰 사용량 추적 및 동적 컨텍스트 길이 추가', new_0_4_2_2: '세션 검색 모달 추가', new_0_4_2_3: 'Socket.IO 및 SQLite로 그룹 채팅 시스템 복원', new_0_4_2_4: '채팅 페이지에 고정 세션 및 라이브 모니터 추가', new_0_4_2_5: '내장 프로바이더 감지 및 모델 매칭 수정', + new_0_4_4_5: '특수 문자 검색 시 500 오류 발생 문제 수정', + new_0_4_4_4: 'StepFun 및 Nous Portal Provider 지원 추가', + new_0_4_4_3: '활성 채팅 세션에 실시간 상태 배지 추가', + new_0_4_4_2: '채팅 메시지 첨부 파일 다운로드 추가', + new_0_4_4_1: '다중 백엔드(local/Docker/SSH/Singularity)를 지원하는 파일 브라우저 추가', }, // 파일 @@ -1040,6 +1151,7 @@ export default { closeEditor: '편집기 닫기', closePreview: '닫기', saveFile: '저장', + fileTree: '파일 트리', }, // 그룹 채팅 @@ -1109,4 +1221,104 @@ export default { download: '다운로드', downloadFile: '파일 다운로드', }, + gateways: { + title: '게이트웨이', + running: '실행 중', + stopped: '중지됨', + started: '시작됨', + startFailed: 'Gateway 시작 실패', + stopFailed: 'Gateway 중지 실패', + }, + kanban: { + title: 'Kanban 보드', + createTask: '새 작업', + noTasks: '작업 없음', + allStatuses: '모든 상태', + allAssignees: '모든 담당자', + columns: { + triage: '분류 대기', + todo: '할 일', + ready: '준비됨', + running: '진행 중', + blocked: '차단됨', + done: '완료됨', + archived: '보관됨', + }, + card: { + assigneeTooltip: '담당자', + priority: { + low: '낮음', + medium: '보통', + high: '높음', + }, + timeAgo: { + justNow: '방금', + minutes: '{count}분 전', + hours: '{count}시간 전', + days: '{count}일 전', + }, + }, + board: { + create: '새 보드', + archive: '보드 보관', + archiveConfirm: '현재 보드를 보관하시겠습니까?', + archived: '보드가 보관되었습니다', + created: '보드가 생성되었습니다', + slugPlaceholder: '보드 식별자, 예: project-a', + namePlaceholder: '표시 이름 (선택)', + slugRequired: '보드 식별자는 필수입니다', + }, + form: { + title: '제목', + titlePlaceholder: '작업 제목', + titleRequired: '제목은 필수입니다', + body: '설명', + bodyPlaceholder: '작업 설명 (선택)', + assignee: '담당자', + selectAssignee: '담당자 선택...', + priority: '우선순위', + selectPriority: '우선순위 선택...', + }, + detail: { + status: '상태', + priority: '우선순위', + assignee: '담당자', + tenant: '테넌트', + createdAt: '생성 시간', + startedAt: '시작 시간', + completedAt: '완료 시간', + comments: '댓글', + events: '이벤트', + runs: '실행 기록', + artifacts: '산출 파일', + result: '완료 결과', + highlights: '핵심 정보', + sources: '데이터 소스', + sessions: '관련 세션', + sessionMessages: '세션 기록', + noSessions: '관련 세션을 찾을 수 없습니다.', + }, + action: { + title: '작업', + assign: '할당', + assignTo: '할당 대상...', + block: '차단', + blockReason: '차단 이유', + unblock: '차단 해제', + complete: '완료', + completeSummary: '완료 요약 (선택)', + }, + message: { + loadFailed: '작업 로드 실패', + taskCreated: '작업이 생성되었습니다', + taskAssigned: '작업이 할당되었습니다', + taskBlocked: '작업이 차단되었습니다', + taskUnblocked: '작업 차단이 해제되었습니다', + taskCompleted: '작업이 완료되었습니다', + }, + stats: { + total: '합계', + tasks: '작업 수', + }, + }, } diff --git a/packages/client/src/i18n/locales/pt.ts b/packages/client/src/i18n/locales/pt.ts index 708422f..ea3edbc 100644 --- a/packages/client/src/i18n/locales/pt.ts +++ b/packages/client/src/i18n/locales/pt.ts @@ -63,6 +63,9 @@ export default { confirm: 'Confirmar', expand: 'Expandir', collapse: 'Recolher', + stop: 'Parar', + start: 'Iniciar', + expired: 'Expirado', }, // Sidebar @@ -85,13 +88,13 @@ export default { files: 'Arquivos', groupChat: 'Chat em grupo', groupConversation: 'Conversa', - groupConversationShort: 'Conv', + groupConversationShort: 'Conv.', groupAgent: 'Agente', groupAgentShort: 'Ag.', groupSystem: 'Sistema', groupSystemShort: 'Sist', groupMonitoring: 'Monitoramento', - groupMonitoringShort: 'Mon', + groupMonitoringShort: 'Mon.', settings: 'Configuracoes', connected: 'Conectado', disconnected: 'Desconectado', @@ -105,6 +108,12 @@ export default { nodeVersionWarning: 'Node.js v{version} detectado. Atualize para a versao 23 ou posterior.', changelog: 'Registro de alteracoes', noChangelog: 'Nenhum registro disponivel', + kanban: 'Kanban', + groupTools: 'Ferramentas', + groupPlatform: 'Plataforma', + gateways: 'Gateways', + expand: 'Expandir menu', + collapse: 'Recolher menu', }, // Gaveta @@ -183,7 +192,7 @@ export default { pin: 'Fixar', unpin: 'Desafixar', pinned: 'Fixadas', - chatMode: 'Chat', + chatMode: 'Modo de chat', liveMode: 'Ao vivo', liveSessions: 'Sessões ao vivo', recentBadge: 'Recente', @@ -210,7 +219,7 @@ export default { arguments: 'Argumentos', result: 'Resultado', truncated: '... (truncado)', - executionDuration: 'Execution time', thinkingLabel: 'Raciocínio', + executionDuration: 'Tempo de execução', thinkingLabel: 'Raciocínio', thinkingInProgress: 'Pensando…', thinkingShow: 'Mostrar raciocínio', thinkingHide: 'Ocultar raciocínio', @@ -224,6 +233,32 @@ export default { resumeSpeech: 'Retomar', stopSpeech: 'Parar', speechNotSupported: 'Reprodução de voz não suportada neste navegador', + searchEnterHint: 'Enter para abrir · Esc para fechar', + searchHint: 'Cmd/Ctrl+K', + searchScope: 'Escopo da busca: apenas banco local de sessões da Web UI; sessões históricas Hermes somente leitura não são incluídas.', + searchFailed: 'Falha ao pesquisar sessões', + searchNoSnippet: 'Nenhum resumo disponível', + searchNoResults: 'Nenhuma sessão corresponde à busca', + searchRecent: 'Sessão recente', + searchEmpty: 'Sessões recentes', + searchPlaceholder: 'Pesquisar sessões...', + searchSubtitle: 'Pesquisar por título ou conteúdo da mensagem', + searchTitle: 'Pesquisar sessões', + stopGateway: 'Parar gateway', + start: 'Iniciar', + workspaceSetFailed: 'Falha ao definir workspace', + workspaceSet: 'Workspace definido', + workspacePlaceholder: 'Digite o caminho do projeto, ex. /home/user/project', + workspace: 'Área de trabalho', + setWorkspaceTitle: 'Definir workspace da sessão', + setWorkspace: 'Definir workspace', + modelSetFailed: 'Falha ao definir modelo', + modelSet: 'Modelo definido', + setModelTitle: 'Definir modelo da sessão', + setModel: 'Definir modelo', + newCliChat: 'Novo CLI', + cliEmptyState: 'Iniciar chat CLI', + autoPlaySpeech: 'Reproduzir voz automaticamente', }, // Jobs @@ -377,9 +412,9 @@ jobTriggered: 'Job acionado', env: '{count} env', }, metadata: { - agentRoot: 'Agent root', + agentRoot: 'Raiz do agente', python: 'Python', - scanCwd: 'Scan cwd', + scanCwd: 'Verificar cwd', projectPlugins: 'Plugins do projeto', }, }, @@ -405,7 +440,7 @@ jobTriggered: 'Job acionado', title: 'Modelos', addProvider: 'Adicionar provedor', providerType: 'Tipo de provedor', - preset: 'Preset', + preset: 'Predefinição', custom: 'Personalizado', selectProvider: 'Selecionar provedor', chooseProvider: 'Escolha um provedor...', @@ -477,6 +512,35 @@ jobTriggered: 'Job acionado', unexpectedFormat: 'Formato de resposta inesperado', foundModels: '{count} modelos encontrados', fetchFailed: 'Falha ao buscar os modelos', + xaiWaiting: 'Conclua a autorização na página xAI aberta. A janela será fechada automaticamente após a aprovação.', + xaiOpenLink: 'Abrir página de autorização xAI', + xaiLoginTitle: 'Login OAuth xAI Grok', + xaiExpired: 'O link de autorização expirou. Tente novamente.', + xaiCopyLink: 'Copiar link de autorização', + xaiApproved: 'Login concluído!', + visibilitySelectOne: 'Mantenha pelo menos um modelo visível', + visibilitySaved: 'Modelos visíveis salvos', + visibilitySaveFailed: 'Falha ao salvar modelos visíveis', + visibilityHint: 'Afeta apenas o seletor de modelos e a página de modelos da Web UI. A configuração provider/model da Hermes CLI não é alterada; as chamadas ainda usam o ID original do modelo.', + showAllModels: 'Mostrar todos os modelos', + searchPlaceholder: 'Pesquisar modelos...', + removeCustomModel: 'Remover este modelo não listado', + more: 'mais', + models: 'Lista de modelos', + manageVisibleModelsFor: 'Gerenciar modelos visíveis de {name}', + manageVisibleModels: 'Gerenciar modelos visíveis', + getApiKey: 'Obter API Key', + count: 'modelos', + aliasUseOriginal: 'Restaurar ID original', + aliasTitleFor: 'Nome exibido de {model}', + aliasTitle: 'Nome exibido do modelo', + aliasSaveFailed: 'Falha ao salvar nome exibido', + aliasPlaceholder: 'Deixe vazio para usar o ID original do modelo', + aliasManageFor: 'Nomes exibidos de {provider}', + aliasManage: 'Nomes exibidos', + aliasHint: 'Altera apenas o nome exibido na Web UI. O Hermes ainda recebe o ID original do modelo.', + aliasEdit: 'Renomear', + aliasCanonical: 'ID original: {model}', }, // Profiles @@ -529,18 +593,35 @@ jobTriggered: 'Job acionado', hasSoulMd: 'Tem soul.md', noProfiles: 'Nenhum perfil encontrado. Crie um para comecar.', avatar: { - title: 'Custom Avatar', - customize: 'Avatar', - upload: 'Upload Image', - random: 'Randomize', - reset: 'Use Default', - hint: 'PNG, JPEG, or WebP. Max 1MB.', - invalidType: 'Please choose a PNG, JPEG, or WebP image', - tooLarge: 'Avatar image must be 1MB or smaller', - saveSuccess: 'Avatar saved', - saveFailed: 'Failed to save avatar', - resetSuccess: 'Default avatar restored', - resetFailed: 'Failed to restore default avatar', + title: 'Avatar personalizado', + customize: 'Personalizar avatar', + upload: 'Enviar imagem', + random: 'Gerar aleatório', + reset: 'Restaurar padrão', + hint: 'PNG, JPEG ou WebP, máximo 1 MB', + invalidType: 'Escolha uma imagem PNG, JPEG ou WebP', + tooLarge: 'A imagem do avatar não pode exceder 1 MB', + saveSuccess: 'Avatar salvo', + saveFailed: 'Falha ao salvar avatar', + resetSuccess: 'Avatar padrão restaurado', + resetFailed: 'Falha ao restaurar avatar padrão', + }, + runtime: { + activeProfile: 'Atual: {name}', + bridgeWorker: 'Status do Bridge', + gateway: 'Gateway', + active: 'Ativo', + activeTag: 'Atual', + idle: 'Ocioso', + running: 'Em execução', + stopped: 'Parado', + restartGateway: 'Reiniciar gateway', + restartProfile: 'Reiniciar perfil', + switchProfile: 'Trocar perfil', + gatewayRestarted: 'Gateway reiniciado: {name}', + gatewayRestartFailed: 'Falha ao reiniciar gateway', + profileRestarted: 'Perfil reiniciado: {name}', + profileRestartFailed: 'Falha ao reiniciar perfil', }, }, @@ -749,6 +830,14 @@ jobTriggered: 'Job acionado', unlocked: 'IP desbloqueada', allUnlocked: '{count} IPs desbloqueadas', }, + models: { + apiKey: 'API Key', + apiKeyPlaceholder: 'Digite a API Key', + noProviders: 'Nenhum provedor configurado', + save: 'Salvar', + saveFailed: 'Falha ao salvar', + saved: 'Salvo', + }, }, // Platform channel settings @@ -809,6 +898,19 @@ jobTriggered: 'Job acionado', qrFetching: 'Buscando codigo QR...', qrScanHint: 'Escaneie com WeChat para fazer login', qrScanedHint: 'Escaneado, por favor confirme no celular...', + qqSandboxHint: 'Ativar ambiente sandbox (para testes)', + qqSandbox: 'Modo sandbox', + qqQrScanHint: 'Escaneie o QR code com QQ ou abra o link no celular para concluir a vinculação', + qqMarkdownHint: 'Ativar mensagens em formato Markdown (alguns clientes podem não suportar)', + qqMarkdown: 'Suporte a Markdown', + qqAppSecretHint: 'App Secret do bot QQ Open Platform', + qqAppSecret: 'App Secret', + qqAppIdHint: 'App ID do bot QQ Open Platform', + qqAppId: 'App ID', + allowedUsersHint: 'Lista de permissões de IDs de usuário ou OpenID, separados por vírgula', + allowedUsers: 'Usuários permitidos', + allowAllUsersHint: 'Permite mensagens de qualquer usuário; desative para usar a lista de permissões', + allowAllUsers: 'Permitir todos os usuários', }, // Language @@ -826,6 +928,10 @@ jobTriggered: 'Job acionado', closeSession: 'Fechar esta sessao?', sessionExited: 'Encerrada', processExited: 'Processo encerrado com codigo {code}', + noSessions: 'Nenhuma sessão de terminal', + connectionFailed: 'Falha ao conectar ao terminal', + connectionError: 'Erro de conexão', + connectionClosed: 'Conexão fechada', }, // Usage @@ -844,8 +950,8 @@ jobTriggered: 'Job acionado', date: 'Data', tokens: 'Tokens', cache: 'Cache', - cacheRead: 'Cache Read', - cacheWrite: 'Cache Write', + cacheRead: 'Leitura de cache', + cacheWrite: 'Escrita de cache', sessions: 'Sessoes', cost: 'Custo', noData: 'Sem dados de uso', @@ -902,64 +1008,64 @@ jobTriggered: 'Job acionado', new_0_5_17_24: 'Página de histórico agora exibe registros de sessões Cron', new_0_5_17_25: 'Corrigir ícones de troca de idioma e tema comprimidos na barra lateral recolhida', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', - new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database', - new_0_5_23_1: 'Add bridge-only chat slash commands with localized command suggestions', - new_0_5_23_2: 'Persist command history for session replay without polluting model context, usage, or compression', - new_0_5_23_3: 'Isolate gateway profile environment variables to prevent credentials leaking across profiles', - new_0_5_23_4: 'Reserve the Web UI port during gateway allocation to avoid startup conflicts', - new_0_5_23_5: 'Fix self-update restart handling so successful helper exits are not reported as failures', - new_0_5_24_1: 'Align Bridge chat with API Server handling for multimodal input, system prompt, and workspace context', - new_0_5_25_1: 'Add group chat room reset and clone actions', - new_0_5_25_2: 'Make the Web UI state directory configurable for custom deployment layouts', - new_0_5_25_3: 'Add MiMo as a TTS provider in voice settings', - new_0_5_25_4: 'Fetch custom provider model lists through the backend to avoid browser CORS failures', - new_0_5_25_5: 'Fix tool approval flow for bridge sessions', - new_0_5_25_6: 'Remove the forced CLI platform hint from bridge prompts so custom media/file instructions are preserved', - new_0_5_25_7: 'Show base64 image content correctly in user message history', - new_0_5_25_8: 'Add Playwright browser tests, chat streaming contract coverage, provider model coverage, and coverage baseline', - new_0_5_26_1: 'Support Windows and local Markdown media paths in chat history and rendered messages', - new_0_5_26_2: 'Filter empty assistant history and clear stale compression status when a new run starts', - new_0_5_26_3: 'Add locked file writes for config and profile updates to reduce concurrent write corruption', - new_0_5_26_4: 'Add QQBot and DingTalk channel settings', - new_0_5_26_5: 'Make CLI port detection portable and improve mobile terminal drawer sizing', - new_0_5_26_6: 'Isolate Bridge profile environments and fix Hermes plugin discovery across Python environments', - new_0_5_26_7: 'Explain stopped gateway states with Web UI diagnostics and keep log loading state stable', - new_0_5_26_8: 'Fix session reset mode options, custom provider base URL handling, and dynamic deliver targets', - new_0_5_26_9: 'Add a local tool-call trace visibility toggle in the chat input bar', - new_0_5_26_10: 'Support Hermes Agent package installs when no source checkout is available', - new_0_5_26_11: 'Add xAI Grok OAuth login for SuperGrok subscription users and update Grok model presets', - new_0_5_26_12: 'Expand browser, chat streaming, provider, gateway, config, plugin, and Bridge test coverage', - new_0_5_27_1: 'Add session-level model settings for Bridge chats, with independent provider and model saved per session', - new_0_5_27_2: 'Right-click a Bridge session and choose Set Model to switch the model for that session', - new_0_5_27_3: 'Runs now validate the session model and fall back to the current default model when the saved model is unavailable', - new_0_5_27_4: 'Context compression now follows the current Profile default selected model by default', - new_0_5_30_1: 'Bridge chat now preserves structured history, fixing intermittent no-response and skipped tool execution caused by text-flattened tool history', - new_0_5_30_2: 'Group chat mention routing is more reliable for multiple agents, removes each agent’s own @ mention before delivery, and keeps user display names bound after refresh', - new_0_5_30_3: 'Model pages, chat model dropdowns, and session model selection now scope providers and models to the active Profile with accurate default markers', - new_0_5_30_4: 'Gateway management is simplified: the standalone Gateway page is removed, each Profile is checked for platform configuration before starting the needed gateway, and a lightweight gateway runner handles starts and restarts', - new_0_5_30_5: 'Improve Gateway startup across Docker, Termux, and Windows with runtime-lock handling, port-conflict cleanup, background execution, and restart support', - new_0_5_30_6: 'Harden Windows compatibility for path detection, file downloads, and job/update subprocesses so they no longer flash terminal windows', - new_0_5_30_7: 'Fix config writes and provider presets: validate .env keys, route FUN-Codex through the Responses API, and refresh Z.AI/GLM model lists', - new_0_5_30_8: 'Polish frontend details including collapsed sidebar layout, short group labels, sidebar divider, and conversation outline styling', - new_0_5_30_9: 'Context compression now follows Profile compression settings and hardens stale snapshots by reusing previous summaries with a safe tail instead of recompressing full history', - new_0_5_31_1: "Harden Bridge broker restarts, fix final group-chat stream rendering, and add {'@'}all routing for group chat", - new_0_5_31_2: 'File manager can copy absolute paths, and the mobile session drawer overlay no longer falls behind chat content', - new_0_5_31_3: 'Profile selector now shows avatars, custom avatar uploads, runtime status modal, and gateway/profile restart actions', - new_0_5_31_4: 'Profile avatars now appear in single chat, group chat, and collapsed sidebar, with Web UI profile metadata storage and Windows-safe paths', - new_0_5_31_5: 'Improve Docker, Termux, and Windows gateway detection and restart checks by using gateway_state/gateway.pid for managed gateway liveness', - new_0_5_31_6: 'Add APIKEY.FUN image-generation media endpoint and bundled apikey-image-gen skill for text-to-image, image-to-image, and image editing via the active Profile fun-codex provider', - new_0_4_8_2: 'Fix nested markdown fence rendering truncation', - new_0_4_8_3: 'Fix compressed session lineage projection and search', - new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input', + new_0_5_18_1: 'Página de monitoramento de uso de skills com gráfico de tendência diária e estatísticas das principais skills', + new_0_5_18_2: 'Bridge de sessão de chat CLI com agent bridge Python para sessões baseadas em WebSocket', + new_0_5_18_3: 'Preset do provedor Ollama Cloud com catálogo dinâmico de modelos', + new_0_5_18_4: 'Suporte para renomear nomes de exibição dos modelos (aliases)', + new_0_5_18_5: 'Suporte ao gerenciamento de visibilidade de modelos na Web UI', + new_0_5_18_6: 'Dashboard de análise de uso aprimorado', + new_0_5_18_7: 'Deploy Docker em contêiner único com docker-compose e correções de inicialização do gateway', + new_0_5_18_8: 'Correção do aviso de fallback HERMES_HOME na página de plugins para perfis não padrão', + new_0_5_18_9: 'Correção da estabilidade do gateway em reinícios de desenvolvimento e melhoria da compatibilidade com Windows', + new_0_5_22_1: 'API de lista de sessões Hermes passa a ler o banco do perfil em vez do store local de sessões da Web UI', + new_0_5_23_1: 'Comandos slash de chat exclusivos do Bridge com sugestões localizadas', + new_0_5_23_2: 'Histórico de comandos persistente para replay de sessão sem poluir contexto, uso ou compressão', + new_0_5_23_3: 'Variáveis de ambiente do perfil gateway isoladas para evitar vazamento de credenciais entre perfis', + new_0_5_23_4: 'Porta da Web UI reservada durante alocação do gateway para evitar conflitos de inicialização', + new_0_5_23_5: 'Correção do reinício de autoatualização para não reportar saídas bem-sucedidas do helper como falha', + new_0_5_24_1: 'Chat Bridge alinhado ao API Server para entrada multimodal, prompt de sistema e contexto de workspace', + new_0_5_25_1: 'Ações de reset e clonagem de salas de chat em grupo', + new_0_5_25_2: 'Diretório de estado da Web UI configurável para layouts de deploy personalizados', + new_0_5_25_3: 'MiMo adicionado como provedor TTS nas configurações de voz', + new_0_5_25_4: 'Listas de modelos de provedores personalizados buscadas pelo backend para evitar falhas CORS do navegador', + new_0_5_25_5: 'Fluxo de aprovação de ferramentas corrigido para sessões Bridge', + new_0_5_25_6: 'Dica de plataforma CLI forçada removida dos prompts Bridge para preservar instruções personalizadas de mídia/arquivo', + new_0_5_25_7: 'Conteúdo de imagem base64 exibido corretamente no histórico de mensagens do usuário', + new_0_5_25_8: 'Testes Playwright de navegador, cobertura de contrato de streaming de chat, cobertura de modelos de provedor e baseline de cobertura adicionados', + new_0_5_26_1: 'Suporte a caminhos de mídia Markdown locais e do Windows no histórico e em mensagens renderizadas', + new_0_5_26_2: 'Histórico vazio do assistant filtrado e estado de compressão obsoleto limpo ao iniciar nova execução', + new_0_5_26_3: 'Escritas com lock para atualizações de config e perfil a fim de reduzir corrupção por concorrência', + new_0_5_26_4: 'Configurações de canais QQBot e DingTalk adicionadas', + new_0_5_26_5: 'Detecção de porta CLI portável e melhorias no tamanho da gaveta de terminal móvel', + new_0_5_26_6: 'Ambientes de perfil Bridge isolados e descoberta de plugins Hermes corrigida entre ambientes Python', + new_0_5_26_7: 'Estados de gateway parado explicados com diagnósticos Web UI e estado de carregamento de logs estável', + new_0_5_26_8: 'Opções de reset de sessão, base URL de provedor personalizado e destinos dinâmicos de entrega corrigidos', + new_0_5_26_9: 'Toggle local de visibilidade de trace de tool-call adicionado à barra de entrada do chat', + new_0_5_26_10: 'Instalação do pacote Hermes Agent suportada quando não há checkout de código-fonte disponível', + new_0_5_26_11: 'Login OAuth xAI Grok para usuários SuperGrok e presets de modelos Grok atualizados', + new_0_5_26_12: 'Cobertura ampliada de navegador, streaming de chat, provedor, gateway, config, plugin e Bridge', + new_0_5_27_1: 'Configurações de modelo por sessão para chats Bridge, com provider e model independentes salvos por sessão', + new_0_5_27_2: 'Clique com o botão direito em uma sessão Bridge e escolha Definir modelo para trocar o modelo daquela sessão', + new_0_5_27_3: 'Execuções validam o modelo da sessão e voltam ao modelo padrão atual quando o modelo salvo está indisponível', + new_0_5_27_4: 'Compressão de contexto segue por padrão o modelo selecionado como padrão no Profile atual', + new_0_5_30_1: 'Bridge chat preserva histórico estruturado, corrigindo ausência intermitente de resposta e execução de ferramentas pulada por histórico de ferramentas achatado', + new_0_5_30_2: 'Roteamento de menções no chat em grupo é mais confiável para múltiplos agentes, remove a própria menção @ antes da entrega e mantém nomes após atualizar', + new_0_5_30_3: 'Páginas de modelos, dropdowns de modelo do chat e seleção de modelo da sessão agora usam o Profile ativo com marcadores padrão precisos', + new_0_5_30_4: 'Gerenciamento de gateway simplificado: página Gateway independente removida, cada Profile verifica configuração de plataforma antes de iniciar e runner leve gerencia start/restart', + new_0_5_30_5: 'Inicialização do gateway melhorada em Docker, Termux e Windows com runtime-lock, limpeza de conflito de porta, execução em segundo plano e suporte a restart', + new_0_5_30_6: 'Compatibilidade Windows reforçada para detecção de caminhos, downloads e subprocessos job/update sem flashes de janelas de terminal', + new_0_5_30_7: 'Escritas de config e presets de provedor corrigidos: validar chaves .env, rotear FUN-Codex pela Responses API e atualizar listas Z.AI/GLM', + new_0_5_30_8: 'Detalhes de frontend polidos, incluindo sidebar recolhida, rótulos curtos de grupo, divisor lateral e estilo do outline da conversa', + new_0_5_30_9: 'Compressão de contexto segue configurações do Profile e fortalece snapshots obsoletos reutilizando resumos anteriores com cauda segura', + new_0_5_31_1: 'Reinícios do Bridge broker reforçados, renderização final do stream de chat em grupo corrigida e roteamento {\'@\'}all adicionado', + new_0_5_31_2: 'Gerenciador de arquivos pode copiar caminhos absolutos e a gaveta móvel de sessões não fica mais atrás do chat', + new_0_5_31_3: 'Seletor de Profile mostra avatares, upload de avatar personalizado, modal de status runtime e ações de restart de gateway/Profile', + new_0_5_31_4: 'Avatares de Profile aparecem em chat individual, chat em grupo e sidebar recolhida, com metadados Web UI e caminhos seguros para Windows', + new_0_5_31_5: 'Detecção e restart de gateway em Docker, Termux e Windows melhorados usando gateway_state/gateway.pid para liveness do gateway gerenciado', + new_0_5_31_6: 'Endpoint de mídia APIKEY.FUN para geração de imagens e skill apikey-image-gen integrado para texto-imagem, imagem-imagem e edição via provider fun-codex do Profile ativo', + new_0_4_8_2: 'Corrige truncamento na renderização de blocos Markdown aninhados', + new_0_4_8_3: 'Corrige projeção e busca da linhagem de sessões compactadas', + new_0_4_8_4: 'Otimiza consultas N+1 da lista de sessões e corrige erro 500 em busca com entrada não CJK', new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs', new_0_4_8_6: 'Smooth session switch with loading transition overlay', new_0_4_8_7: 'Fix login token validation using Hermes session endpoint', @@ -978,18 +1084,23 @@ jobTriggered: 'Job acionado', new_0_4_7_10: 'Limpar base_url_env do .env ao excluir provedor integrado', new_0_4_7_11: 'Alinhar o fundo da barra lateral da sala de chat em grupo com a lista de sessoes', new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery', - new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting', - new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list', - new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading', - new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector', - new_0_4_5_6: 'Fix sidebar i18n missing key warnings', - new_0_4_5_7: 'Clear all localStorage on logout', - new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth', + new_0_4_5_2: 'Reescreve a configuração de contexto do modelo para usar YAML com context_length', + new_0_4_5_3: 'Adiciona gpt-5.5 à lista de modelos do OpenAI Codex', + new_0_4_5_4: 'Substitui o proxy de tarefas por um controlador local e otimiza o carregamento de modelos', + new_0_4_5_5: 'Adiciona suporte i18n para modelos personalizados no ModelSelector', + new_0_4_5_6: 'Corrige avisos de chaves i18n ausentes na barra lateral', + new_0_4_5_7: 'Limpa todo o localStorage ao sair', + new_0_4_5_8: 'Adiciona rotação periódica de logs para evitar crescimento ilimitado', new_0_4_2_1: 'Adicionar rastreamento de uso de tokens e comprimento de contexto dinamico', new_0_4_2_2: 'Adicionar modal de busca de sessoes', new_0_4_2_3: 'Restaurar sistema de chat em grupo com Socket.IO e SQLite', new_0_4_2_4: 'Adicionar sessoes fixas e monitor ao vivo na pagina de chat', new_0_4_2_5: 'Corrigir deteccao de provedores integrados e combinacao de modelos', + new_0_4_4_5: 'Erro 500 em buscas com caracteres especiais corrigido', + new_0_4_4_4: 'Suporte aos provedores StepFun e Nous Portal adicionado', + new_0_4_4_3: 'Badge de status ao vivo adicionado em sessões de chat ativas', + new_0_4_4_2: 'Download de arquivos de anexos de mensagens de chat adicionado', + new_0_4_4_1: 'Navegador de arquivos com suporte multi-backend adicionado (local/Docker/SSH/Singularity)', }, // Arquivos @@ -1040,6 +1151,7 @@ jobTriggered: 'Job acionado', closeEditor: 'Fechar editor', closePreview: 'Fechar', saveFile: 'Salvar', + fileTree: 'Árvore de arquivos', }, // Chat em grupo @@ -1109,4 +1221,104 @@ jobTriggered: 'Job acionado', download: 'Baixar', downloadFile: 'Baixar arquivo', }, + gateways: { + title: 'Gateways', + running: 'Em execução', + stopped: 'Parado', + started: 'Iniciado', + startFailed: 'Falha ao iniciar gateway', + stopFailed: 'Falha ao parar gateway', + }, + kanban: { + title: 'Quadro Kanban', + createTask: 'Nova tarefa', + noTasks: 'Nenhuma tarefa', + allStatuses: 'Todos os status', + allAssignees: 'Todos os responsáveis', + columns: { + triage: 'Triagem', + todo: 'A fazer', + ready: 'Pronto', + running: 'Em andamento', + blocked: 'Bloqueado', + done: 'Concluído', + archived: 'Arquivado', + }, + card: { + assigneeTooltip: 'Responsável', + priority: { + low: 'Baixa', + medium: 'Média', + high: 'Alta', + }, + timeAgo: { + justNow: 'agora mesmo', + minutes: 'há {count} min', + hours: 'há {count} h', + days: 'há {count} d', + }, + }, + board: { + create: 'Novo quadro', + archive: 'Arquivar quadro', + archiveConfirm: 'Arquivar o quadro atual?', + archived: 'Quadro arquivado', + created: 'Quadro criado', + slugPlaceholder: 'Identificador do quadro, ex. project-a', + namePlaceholder: 'Nome exibido (opcional)', + slugRequired: 'O identificador do quadro é obrigatório', + }, + form: { + title: 'Título', + titlePlaceholder: 'Título da tarefa', + titleRequired: 'Título é obrigatório', + body: 'Descrição', + bodyPlaceholder: 'Descrição da tarefa (opcional)', + assignee: 'Responsável', + selectAssignee: 'Selecionar responsável...', + priority: 'Prioridade', + selectPriority: 'Selecionar prioridade...', + }, + detail: { + status: 'Status', + priority: 'Prioridade', + assignee: 'Responsável', + tenant: 'Locatário', + createdAt: 'Criado', + startedAt: 'Iniciado', + completedAt: 'Concluído', + comments: 'Comentários', + events: 'Eventos', + runs: 'Execuções', + artifacts: 'Arquivos gerados', + result: 'Resultado', + highlights: 'Informações principais', + sources: 'Fontes de dados', + sessions: 'Sessões relacionadas', + sessionMessages: 'Mensagens da sessão', + noSessions: 'Nenhuma sessão relacionada encontrada.', + }, + action: { + title: 'Ações', + assign: 'Atribuir', + assignTo: 'Atribuir a...', + block: 'Bloquear', + blockReason: 'Motivo do bloqueio', + unblock: 'Desbloquear', + complete: 'Concluir', + completeSummary: 'Resumo de conclusão (opcional)', + }, + message: { + loadFailed: 'Falha ao carregar tarefa', + taskCreated: 'Tarefa criada', + taskAssigned: 'Tarefa atribuída', + taskBlocked: 'Tarefa bloqueada', + taskUnblocked: 'Tarefa desbloqueada', + taskCompleted: 'Tarefa concluída', + }, + stats: { + total: 'Total', + tasks: 'Tarefas', + }, + }, } diff --git a/packages/client/src/i18n/locales/zh-TW.ts b/packages/client/src/i18n/locales/zh-TW.ts index 9fda804..4626ac5 100644 --- a/packages/client/src/i18n/locales/zh-TW.ts +++ b/packages/client/src/i18n/locales/zh-TW.ts @@ -254,6 +254,12 @@ export default { resumeSpeech: '繼續', stopSpeech: '停止', speechNotSupported: '此瀏覽器不支援語音播放', + modelSetFailed: '設定模型失敗', + modelSet: '模型已設定', + setModelTitle: '設定工作階段模型', + setModel: '設定模型', + newCliChat: '新增 CLI', + cliEmptyState: '開始 CLI 對話', }, // 看板 @@ -624,6 +630,12 @@ export default { aliasManageFor: '{provider} 的顯示名', aliasSaveFailed: '儲存顯示名失敗', visibilitySelectOne: '至少保留一個可見模型', + xaiWaiting: '請在開啟的 xAI 頁面完成授權。授權完成後視窗會自動關閉。', + xaiOpenLink: '開啟 xAI 授權頁', + xaiLoginTitle: 'xAI Grok OAuth 登入', + xaiExpired: '授權連結已過期,請重試。', + xaiCopyLink: '複製授權連結', + xaiApproved: '登入成功!', }, // 設定檔 @@ -689,6 +701,23 @@ export default { resetSuccess: '已恢復預設頭像', resetFailed: '恢復預設頭像失敗', }, + runtime: { + activeProfile: '目前:{name}', + bridgeWorker: '橋接狀態', + gateway: '閘道', + active: '使用中', + activeTag: '目前', + idle: '閒置', + running: '執行中', + stopped: '已停止', + restartGateway: '重啟閘道', + restartProfile: '重啟設定檔', + switchProfile: '切換設定檔', + gatewayRestarted: '閘道已重啟:{name}', + gatewayRestartFailed: '重啟閘道失敗', + profileRestarted: '設定檔已重啟:{name}', + profileRestartFailed: '重啟設定檔失敗', + }, }, // 日誌 @@ -1202,15 +1231,15 @@ export default { new_0_5_17_24: '歷史頁面現在顯示 Cron 工作階段記錄', new_0_5_17_25: '修復收起側邊欄時語言切換和佈景主題圖示擠壓問題', - new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics', - new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions', - new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog', - new_0_5_18_4: 'Support model display name renaming (aliases)', - new_0_5_18_5: 'Support model visibility management in Web UI', - new_0_5_18_6: 'Enhance usage analytics dashboard', - new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes', - new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles', - new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility', + new_0_5_18_1: '新增 Skills Usage 監控頁,包含每日趨勢圖和熱門 skill 統計', + new_0_5_18_2: '新增 CLI 聊天工作階段 Bridge,透過 Python agent bridge 支援 WebSocket 工作階段', + new_0_5_18_3: '新增 Ollama Cloud Provider 預設,支援動態模型目錄', + new_0_5_18_4: '支援模型顯示名稱重新命名(別名)', + new_0_5_18_5: '支援在 Web UI 管理模型可見性', + new_0_5_18_6: '增強用量分析儀表板', + new_0_5_18_7: '支援 docker-compose 的 Docker 單容器部署,並修復 gateway 啟動問題', + new_0_5_18_8: '修復非預設 Profile 下 plugins 頁面的 HERMES_HOME fallback 警告', + new_0_5_18_9: '修復開發重啟時的 gateway 穩定性並改善 Windows 相容性', new_0_5_22_1: '修復 Hermes 會話列表介面錯誤讀取 Web UI 本地會話庫的問題', new_0_5_23_1: '新增僅 Bridge 會話可用的聊天斜線命令,並支援本地化命令提示', new_0_5_23_2: '持久化命令歷史用於會話回顯,同時避免污染模型上下文、用量統計和壓縮',