Files
clawpanel/src/locales/modules/engine.js
晴天 6a45c12d67 feat(hermes): UX 小白化第一步 - services restart/stop 加 showConfirm 防误触
Gateway restart/stop 是高影响动作(in-flight agent runs 会断),
对应 Approval Flow / multimodal 等改进可能正在跑 — 误触代价大。

## services.js
- runGatewayAction('restart' | 'stop') 调用前先 showConfirm
- 文案:「正在进行的 Agent 会话会被中断」(impact 列表)
- danger 变体(红色确认按钮)
- start 不加 confirm(用户主动启动不需要)
- 复用 confirmText 用 dashRestartGw / dashStopGw(已有 i18n)

## i18n
- servicesConfirmRestart / servicesConfirmStop / servicesImpactInflight 3 个新键 × 3 语言
2026-05-14 05:15:03 +08:00

889 lines
86 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { _ } from '../helper.js'
export default {
switchedTo: _('已切换到 {name} 模式', 'Switched to {name} mode', '已切換到 {name} 模式', '{name} モードに切り替えました', '{name} 모드로 전환됨'),
switchFailed: _('引擎切换失败,请稍后重试', 'Engine switch failed, please try again later', '引擎切換失敗,請稍後重試', 'エンジンの切り替えに失敗しました。後でもう一度お試しください', '엔진 전환에 실패했습니다. 잠시 후 다시 시도해 주세요'),
switcherSectionLabel: _('引擎', 'Engine', '引擎', 'エンジン', '엔진', 'Động cơ', 'Motor', 'Motor', 'Движок', 'Moteur', 'Engine'),
switcherTooltip: _('点击切换引擎', 'Click to switch engine', '點擊切換引擎', 'クリックしてエンジンを切り替え', '엔진 전환하려면 클릭', 'Nhấp để chuyển đổi engine', 'Haga clic para cambiar de motor', 'Clique para alternar o motor', 'Нажмите, чтобы переключить движок', 'Cliquez pour changer de moteur', 'Klicken, um die Engine zu wechseln'),
choiceNav: _('选择引擎', 'Choose Engine', '選擇引擎', 'エンジンを選択', '엔진 선택', 'Choose Engine', 'Choose Engine', 'Choose Engine', 'Choose Engine', 'Choose Engine', 'Choose Engine'),
choiceKicker: _('首次启动', 'First run', '首次啟動'),
choiceTitle: _('选择你要使用的 Agent 引擎', 'Choose your Agent engine', '選擇你要使用的 Agent 引擎'),
choiceSubtitle: _('ClawPanel 支持 OpenClaw 与 Hermes Agent。你可以先安装其中一个也可以稍后再配置。', 'ClawPanel supports OpenClaw and Hermes Agent. Install one now, enable both, or configure later.', 'ClawPanel 支援 OpenClaw 與 Hermes Agent。你可以先安裝其中一個也可以稍後再配置。'),
choiceNoteTitle: _('之后仍可切换', 'You can switch later', '之後仍可切換'),
choiceNoteDesc: _('该选择会保存到 clawpanel.json。安装完成后可通过侧边栏的引擎切换器切换到其他引擎。', 'This choice is saved to clawpanel.json. After setup, use the engine switcher in the sidebar to switch engines.', '該選擇會儲存到 clawpanel.json。安裝完成後可透過側邊欄的引擎切換器切換到其他引擎。'),
choiceSaved: _('已保存引擎选择', 'Engine choice saved', '已儲存引擎選擇'),
choiceSaveFailed: _('保存引擎选择失败', 'Failed to save engine choice', '儲存引擎選擇失敗'),
choiceOpenclawTitle: _('OpenClaw', 'OpenClaw', 'OpenClaw'),
choiceOpenclawDesc: _('完整的 OpenClaw 管理面板适合需要模型、Agent、Gateway、记忆与插件的完整框架用户。', 'The full OpenClaw management panel for models, agents, Gateway, memory, and plugins.', '完整的 OpenClaw 管理面板適合需要模型、Agent、Gateway、記憶與外掛的完整框架使用者。'),
choiceOpenclawMeta: _('推荐给现有 OpenClaw 用户', 'Recommended for existing OpenClaw users', '推薦給現有 OpenClaw 使用者'),
choiceOpenclawBadge: _('推荐', 'Recommended', '推薦'),
choiceHermesTitle: _('Hermes Agent', 'Hermes Agent', 'Hermes Agent'),
choiceHermesDesc: _('轻量 Python Agent 引擎,专注工具调用、任务编排与快速实验。', 'A lightweight Python Agent engine focused on tool calling, orchestration, and fast experiments.', '輕量 Python Agent 引擎,專注工具呼叫、任務編排與快速實驗。'),
choiceHermesMeta: _('直接进入 Hermes 安装向导', 'Go directly to Hermes setup', '直接進入 Hermes 安裝精靈'),
choiceHermesBadge: _('轻量', 'Lightweight', '輕量'),
choiceBothTitle: _('两个都要', 'Use both', '兩個都要'),
choiceBothDesc: _('先完成 OpenClaw 初始化,并保留 Hermes Agent 入口,后续可随时切换配置。', 'Start with OpenClaw setup while keeping Hermes Agent enabled for later configuration.', '先完成 OpenClaw 初始化,並保留 Hermes Agent 入口,後續可隨時切換配置。'),
choiceBothMeta: _('适合同时评估两个引擎', 'Best for evaluating both engines', '適合同時評估兩個引擎'),
choiceBothBadge: _('进阶', 'Advanced', '進階'),
choiceLaterTitle: _('稍后再配置', 'Configure later', '稍後再配置'),
choiceLaterDesc: _('先停留在引擎选择页,不立即安装任何引擎。准备好后再选择即可。', 'Stay on the engine chooser without installing an engine now. Pick one when you are ready.', '先停留在引擎選擇頁,不立即安裝任何引擎。準備好後再選擇即可。'),
choiceLaterMeta: _('不会启动安装流程', 'No setup flow will start', '不會啟動安裝流程'),
choiceLaterBadge: _('跳过', 'Skip', '跳過'),
hermesSetupDesc: _('安装并配置 Hermes Agent', 'Install and configure Hermes Agent', '安裝並配置 Hermes Agent'),
hermesPhaseClickHint: _('点击可返回此步骤', 'Click to go back to this step', '點擊可返回此步驟', 'このステップに戻るにはクリック', '이 단계로 돌아가려면 클릭'),
hermesSetupIntro: _(
'Hermes Agent 是一个具有工具调用能力的 AI 助手框架。点击下方按钮一键安装,无需终端操作。',
'Hermes Agent is an AI assistant with tool-calling capabilities. Click the button below to install — no terminal needed.',
'Hermes Agent 是一個具有工具調用能力的 AI 助手框架。點擊下方按鈕一鍵安裝,無需終端操作。',
),
// 检测阶段
detecting: _('正在检测环境...', 'Detecting environment...', '正在偵測環境...'),
detectPython: _('检测 Python 环境', 'Detecting Python', '偵測 Python 環境'),
detectHermes: _('检测 Hermes Agent', 'Detecting Hermes Agent', '偵測 Hermes Agent'),
pythonFound: _('Python {version}', 'Python {version}', 'Python {version}'),
pythonNotFound: _('未检测到 Python将自动安装', 'Python not found (will be auto-installed)', '未偵測到 Python將自動安裝'),
pythonTooOld: _('Python {version} 版本过低,需要 3.11+(将自动安装)', 'Python {version} too old, need 3.11+ (will be auto-installed)', 'Python {version} 版本過低,需要 3.11+(將自動安裝)'),
uvFound: _('uv 包管理器已就绪', 'uv package manager ready', 'uv 套件管理器已就緒'),
uvNotFound: _('uv 未安装(将自动下载)', 'uv not installed (will be auto-downloaded)', 'uv 未安裝(將自動下載)'),
gitFound: _('Git 已就绪', 'Git ready', 'Git 已就緒'),
gitNotFound: _('Git 未安装(从 GitHub 安装需要 Git', 'Git not found (required for GitHub install)', 'Git 未安裝(從 GitHub 安裝需要 Git'),
hermesFound: _('Hermes Agent {version} 已安装', 'Hermes Agent {version} installed', 'Hermes Agent {version} 已安裝'),
hermesNotFound: _('Hermes Agent 未安装', 'Hermes Agent not installed', 'Hermes Agent 未安裝'),
hermesReady: _('Hermes Agent 已就绪Gateway 运行中', 'Hermes Agent ready, Gateway running', 'Hermes Agent 已就緒Gateway 運行中'),
// 安装阶段
installTitle: _('安装 Hermes Agent', 'Install Hermes Agent', '安裝 Hermes Agent'),
installDesc: _('通过 uv 自动安装(含 Python 环境),无需手动操作', 'Auto-install via uv (includes Python), no manual steps', '透過 uv 自動安裝(含 Python 環境),無需手動操作'),
installDescSimple: _('一键安装 Hermes Agent 核心包,安装完成后可在管理页面按需添加扩展组件。', 'One-click install of Hermes Agent core package. Extensions can be added later from the management page.', '一鍵安裝 Hermes Agent 核心包,安裝完成後可在管理頁面按需添加擴展組件。'),
installInfoUv: _('自动下载 uv 包管理器(如未安装)', 'Auto-download uv package manager (if not installed)', '自動下載 uv 包管理器(如未安裝)'),
installInfoCore: _('安装 hermes-agent 核心包', 'Install hermes-agent core package', '安裝 hermes-agent 核心包'),
installInfoExtrasLater: _('扩展组件定时任务、MCP、消息渠道等可在安装后按需添加', 'Extensions (cron, MCP, messaging, etc.) can be added later as needed', '擴展組件定時任務、MCP、訊息頻道等可在安裝後按需添加'),
installModeLocal: _('本地', 'Local', '本地'),
installModeCustom: _('自定义', 'Custom', '自訂'),
installCustomDesc: _('连接到已有的 Hermes Agent Gateway 实例,适用于已在其他机器或手动安装的场景。', 'Connect to an existing Hermes Agent Gateway instance, for setups on other machines or manual installations.', '連接到已有的 Hermes Agent Gateway 實例,適用於已在其他機器或手動安裝的場景。'),
installCustomHint: _('输入已运行的 Hermes Agent Gateway 地址,例如 http://192.168.1.100:8642', 'Enter the URL of a running Hermes Agent Gateway, e.g. http://192.168.1.100:8642', '輸入已運行的 Hermes Agent Gateway 地址,例如 http://192.168.1.100:8642'),
installCustomConnect: _('测试连接', 'Test Connection', '測試連接'),
installCustomTesting: _('连接中...', 'Connecting...', '連接中...'),
installCustomEmpty: _('请输入 Gateway URL', 'Please enter Gateway URL', '請輸入 Gateway URL'),
installCustomInvalidUrl: _('URL 格式不正确', 'Invalid URL format', 'URL 格式不正確'),
installCustomNoResponse: _('Gateway 无响应', 'Gateway not responding', 'Gateway 無回應'),
installCustomFailed: _('连接失败: {error}', 'Connection failed: {error}', '連接失敗: {error}'),
installBtn: _('一键安装', 'Install Now', '一鍵安裝'),
installingBtn: _('正在安装...', 'Installing...', '正在安裝...'),
installSuccess: _('安装成功!', 'Installation successful!', '安裝成功!'),
installFailed: _('安装失败', 'Installation failed', '安裝失敗'),
retryBtn: _('重试', 'Retry', '重試'),
// Extras 选择
extrasTitle: _('可选组件', 'Optional Components', '可選組件'),
extrasDesc: _('选择需要安装的额外功能(可稍后更改)', 'Select optional features to install (can change later)', '選擇需要安裝的額外功能(可稍後更改)'),
extraCron: _('定时任务', 'Cron Jobs', '定時任務'),
extraCli: _('CLI 增强', 'CLI Enhanced', 'CLI 增強'),
extraPty: _('终端后端', 'Terminal Backend', '終端後端'),
extraMcp: _('MCP 协议', 'MCP Protocol', 'MCP 協議'),
extraMessaging: _('消息渠道Telegram/Discord 等)', 'Messaging (Telegram/Discord etc.)', '訊息頻道Telegram/Discord 等)'),
extraFeishu: _('飞书', 'Feishu/Lark', '飛書'),
extraDingtalk: _('钉钉', 'DingTalk', '釘釘'),
extraSlack: _('Slack', 'Slack', 'Slack'),
extraVoice: _('语音TTS/STT', 'Voice (TTS/STT)', '語音TTS/STT'),
extraAll: _('全部安装', 'Install All', '全部安裝'),
// 配置阶段
configTitle: _('配置 Hermes Agent', 'Configure Hermes Agent', '配置 Hermes Agent'),
configDesc: _('设置 LLM Provider 以启用 AI 功能', 'Set up LLM Provider to enable AI features', '設置 LLM Provider 以啟用 AI 功能'),
configProvider: _('LLM 提供商', 'LLM Provider', 'LLM 提供商'),
configApiKey: _('API Key', 'API Key', 'API Key'),
configModel: _('模型', 'Model', '模型'),
configBaseUrl: _('自定义 API 地址(可选)', 'Custom API URL (optional)', '自定義 API 地址(可選)'),
configFetchModels: _('获取模型列表', 'Fetch Models', '取得模型列表'),
configFetching: _('获取中...', 'Fetching...', '取得中...'),
configFetchSuccess: _('获取到 {count} 个模型', 'Found {count} models', '取得 {count} 個模型'),
configFetchFailed: _('获取失败: {error}', 'Fetch failed: {error}', '取得失敗: {error}'),
configFetchNotSupported: _('此渠道不支持获取模型列表,请前往平台查看可用模型后手动输入', 'This provider does not support model listing. Please check available models on their platform and enter manually.', '此渠道不支持取得模型列表,請前往平台查看可用模型後手動輸入'),
configFetchNeedKey: _('请先填写 API Key', 'Please enter API Key first', '請先填寫 API Key'),
configFetchNeedUrl: _('请先选择服务商或填写 Base URL', 'Please select a provider or enter Base URL first', '請先選擇服務商或填寫 Base URL'),
configSaveBtn: _('保存配置', 'Save Config', '儲存配置'),
configSkipBtn: _('跳过,稍后配置', 'Skip, configure later', '跳過,稍後配置'),
configSaved: _('配置已保存', 'Configuration saved', '配置已儲存'),
// Gateway 阶段
gatewayTitle: _('启动 Gateway', 'Start Gateway', '啟動 Gateway'),
gatewayDesc: _('启动 HTTP API 服务以连接 ClawPanel', 'Start HTTP API server to connect with ClawPanel', '啟動 HTTP API 服務以連接 ClawPanel'),
gatewayStartBtn: _('启动 Gateway', 'Start Gateway', '啟動 Gateway'),
gatewayStarting: _('正在启动...', 'Starting...', '正在啟動...'),
gatewayStartFailed: _('Gateway 启动失败', 'Gateway failed to start', 'Gateway 啟動失敗'),
gatewayRunning: _('Gateway 运行中 (端口 {port})', 'Gateway running (port {port})', 'Gateway 運行中 (端口 {port})'),
gatewayStopped: _('Gateway 未运行', 'Gateway not running', 'Gateway 未運行'),
// 完成
setupComplete: _('设置完成!', 'Setup Complete!', '設定完成!'),
setupCompleteDesc: _('Hermes Agent 已准备就绪,可以开始使用了。', 'Hermes Agent is ready to use.', 'Hermes Agent 已準備就緒,可以開始使用了。'),
goToDashboard: _('进入仪表盘', 'Go to Dashboard', '進入儀表盤'),
// 日志
viewLogs: _('查看安装日志', 'View install logs', '查看安裝日誌'),
hideLogs: _('隐藏日志', 'Hide logs', '隱藏日誌'),
// 仪表盘
hermesSetupDocLink: _('查看完整文档', 'View full documentation', '查看完整文檔'),
hermesDashboardTitle: _('Hermes 仪表盘', 'Hermes Dashboard', 'Hermes 儀表盤'),
dashGatewayStatus: _('Gateway 状态', 'Gateway Status', 'Gateway 狀態'),
dashRunning: _('运行中', 'Running', '運行中'),
dashStopped: _('已停止', 'Stopped', '已停止'),
dashModel: _('当前模型', 'Current Model', '目前模型'),
dashVersion: _('版本', 'Version', '版本'),
dashPort: _('监听端口', 'Listen Port', '監聽端口'),
dashStartGw: _('启动 Gateway', 'Start Gateway', '啟動 Gateway'),
dashStopGw: _('停止 Gateway', 'Stop Gateway', '停止 Gateway'),
dashRestartGw: _('重启 Gateway', 'Restart Gateway', '重啟 Gateway'),
dashStopping: _('正在停止...', 'Stopping...', '正在停止...'),
dashRestarting: _('正在重启...', 'Restarting...', '正在重啟...'),
dashQuickActions: _('快捷操作', 'Quick Actions', '快捷操作'),
dashOpenChat: _('打开对话', 'Open Chat', '開啟對話'),
dashOpenPanel: _('打开面板', 'Open Panel', '開啟面板'),
dashOpenPanelDesc: _('Hermes 对话面板', 'Hermes Chat Panel', 'Hermes 對話面板'),
// Native Hermes dashboard launcher
dashNativePanel: _('原生 Dashboard', 'Native Dashboard', '原生 Dashboard', 'ネイティブ Dashboard', '네이티브 Dashboard'),
dashNativePanelDesc: _('也可使用原生 hermes dashboard默认 9119需自行启动', 'You can also use the native hermes dashboard (default 9119; start it manually).', '也可使用原生 hermes dashboard預設 9119需自行啟動'),
dashNativePanelOpen: _('打开 9119 →', 'Open 9119 →', '開啟 9119 →', '9119 を開く →', '9119 열기 →'),
dashNativePanelOffline: _('Gateway 未运行', 'Gateway offline', 'Gateway 未執行', 'Gateway 未実行', 'Gateway 미실행'),
dashNativePanelTooOld: _('需 v0.10.0+', 'Requires v0.10.0+', '需 v0.10.0+', 'v0.10.0+ が必要', 'v0.10.0+ 필요'),
dashNativePanelOpenFail: _('打开浏览器失败', 'Failed to open browser', '開啟瀏覽器失敗', 'ブラウザを開くのに失敗しました', '브라우저 열기 실패'),
dashNativePanelChecking: _('检测 Dashboard 端口…', 'Checking dashboard port…', '檢測 Dashboard 連接埠…', 'Dashboard ポートを確認中…', 'Dashboard 포트 확인 중…'),
dashNativePanelStarting: _('正在启动 Dashboard…', 'Starting Dashboard…', '正在啟動 Dashboard…', 'Dashboard を起動中…', 'Dashboard 시작 중…'),
dashNativePanelStartFirstHint: _('首次启动需构建前端,最长约 1-2 分钟…',
'First launch builds the frontend; this can take 1-2 minutes…',
'首次啟動需建構前端,最長約 1-2 分鐘…',
'初回起動はフロントエンドをビルドするため 1-2 分かかる場合があります…',
'첫 실행 시 프론트엔드 빌드로 1-2분 소요될 수 있습니다…'),
dashNativePanelStartTimeout: _('启动超时(端口 {port} 仍未响应)。请稍候再试,或在终端运行 hermes dashboard 查看实际错误。',
'Startup timed out (port {port} still unresponsive). Wait a bit and retry, or run hermes dashboard in a terminal to see the real error.',
'啟動逾時(連接埠 {port} 仍未回應)。請稍候再試,或在終端執行 hermes dashboard 查看實際錯誤。',
'起動タイムアウト(ポート {port} が応答しません)。少し待って再試行するか、ターミナルで hermes dashboard を実行して実際のエラーを確認してください。',
'시작 시간 초과 (포트 {port} 응답 없음). 잠시 후 다시 시도하거나 터미널에서 hermes dashboard를 실행하여 실제 오류를 확인하세요.'),
dashNativePanelStartPortBusy: _('端口 {port} 被占用,可能有别的 Hermes Dashboard 实例在运行。',
'Port {port} is in use; another Hermes Dashboard instance may be running.',
'連接埠 {port} 已被佔用,可能有另一個 Hermes Dashboard 實例在執行。',
'ポート {port} は使用中です。別の Hermes Dashboard インスタンスが実行されている可能性があります。',
'포트 {port}이(가) 사용 중입니다. 다른 Hermes Dashboard 인스턴스가 실행 중일 수 있습니다.'),
dashNativePanelStartGeneric: _('Dashboard 启动失败',
'Failed to start Dashboard',
'Dashboard 啟動失敗',
'Dashboard の起動に失敗しました',
'Dashboard 시작 실패'),
dashNativePanelWindowsTitle: _('原生 Windows 暂不支持 Hermes Dashboard',
'Hermes Dashboard not supported on native Windows',
'原生 Windows 暫不支援 Hermes Dashboard',
'ネイティブ Windows では Hermes Dashboard はサポートされていません',
'네이티브 Windows에서 Hermes Dashboard는 지원되지 않습니다'),
dashNativePanelWindowsDesc: _('当前环境暂不支持直接启动 Hermes Dashboard。请继续使用 ClawPanel 内置面板,或在兼容环境中运行。',
'This environment cannot start Hermes Dashboard directly. Continue using the built-in ClawPanel panel, or run it in a compatible environment.',
'目前環境暫不支援直接啟動 Hermes Dashboard。請繼續使用 ClawPanel 內建面板,或在相容環境中執行。',
'現在の環境では Hermes Dashboard を直接起動できません。ClawPanel 内蔵パネルを使うか、互換環境で実行してください。',
'현재 환경에서는 Hermes Dashboard를 직접 시작할 수 없습니다. ClawPanel 내장 패널을 계속 사용하거나 호환 환경에서 실행하세요.'),
dashNativePanelWindowsAlt1: _('继续使用 ClawPanel 内置的 Hermes 面板(推荐,体验更好)',
'Keep using ClawPanel\'s built-in Hermes panel (recommended, better experience)',
'繼續使用 ClawPanel 內建的 Hermes 面板(推薦,體驗更好)',
'ClawPanel 内蔵の Hermes パネルを使い続ける(推奨、より良い体験)',
'ClawPanel 내장 Hermes 패널을 계속 사용 (권장, 더 나은 경험)'),
dashNativePanelWindowsAlt2: _('在 WSL2 中安装并运行 Hermeshermes dashboard 在 Linux 上工作正常)',
'Install and run Hermes inside WSL2 (hermes dashboard works fine on Linux)',
'在 WSL2 中安裝並執行 Hermeshermes dashboard 在 Linux 上工作正常)',
'WSL2 内で Hermes をインストール・実行Linux 上では hermes dashboard は正常に動作)',
'WSL2 내에서 Hermes 설치 및 실행 (Linux에서는 hermes dashboard 정상 작동)'),
dashNativePanelWindowsReportLink: _('查看详情', 'View details', '檢視詳情', '詳細を見る', '자세히 보기'),
dashNativePanelDown: _('Dashboard 服务未运行(端口 {port} 无响应。请在终端运行hermes dashboard',
'Dashboard service is not running (port {port} unreachable). Run in terminal: hermes dashboard',
'Dashboard 服務未執行(連接埠 {port} 無回應。請在終端執行hermes dashboard',
'Dashboard サービスが実行されていません(ポート {port} に接続できません)。ターミナルで実行: hermes dashboard',
'Dashboard 서비스가 실행 중이 아닙니다 (포트 {port} 연결 불가). 터미널에서 실행: hermes dashboard'),
dashNativePanelDownTitle: _('Hermes Dashboard 未启动', 'Hermes Dashboard not running', 'Hermes Dashboard 未啟動', 'Hermes Dashboard が実行されていません', 'Hermes Dashboard가 실행 중이 아닙니다'),
dashNativePanelStartHint: _('在终端运行下面命令启动 Dashboard 后再试:', 'Run the command below in your terminal to start the Dashboard, then retry:', '在終端執行以下命令啟動 Dashboard 後再試:', 'ターミナルで以下を実行して Dashboard を起動してから再試行してください:', '아래 명령을 터미널에서 실행하여 Dashboard를 시작한 후 다시 시도하세요:'),
dashNativePanelDepHint: _('首次使用需要先安装 Web 依赖fastapi + uvicorn。点击下方按钮自动安装后重试。',
'First-time use requires installing the Web dependencies (fastapi + uvicorn). Click the button below to install them, then retry.',
'首次使用需要先安裝 Web 依賴fastapi + uvicorn。點擊下方按鈕自動安裝後重試。',
'初回使用には Web 依存関係fastapi + uvicornのインストールが必要です。下のボタンでインストールしてから再試行してください。',
'처음 사용 시 Web 종속성(fastapi + uvicorn) 설치가 필요합니다. 아래 버튼으로 설치한 후 다시 시도하세요.'),
dashNativePanelInstallWeb: _('安装 Web 依赖', 'Install Web Deps', '安裝 Web 依賴', 'Web 依存関係をインストール', 'Web 종속성 설치'),
dashNativePanelInstallWebTitle: _('安装 Hermes Web 依赖', 'Installing Hermes Web Dependencies', '安裝 Hermes Web 依賴', 'Hermes Web 依存関係をインストール中', 'Hermes Web 종속성 설치 중'),
dashNativePanelInstallWebDone: _('Web 依赖安装完成请在终端运行hermes dashboard',
'Web dependencies installed. Now run in your terminal: hermes dashboard',
'Web 依賴安裝完成請在終端執行hermes dashboard',
'Web 依存関係のインストールが完了しました。ターミナルで実行hermes dashboard',
'Web 종속성 설치 완료. 터미널에서 실행: hermes dashboard'),
dashNativePanelInstallWebFailed: _('安装失败', 'Install failed', '安裝失敗', 'インストールに失敗しました', '설치 실패'),
dashNativePanelInstallStoppingGw: _('⏸ 停止 Gateway 以释放 hermes.exe 文件锁…',
'⏸ Stopping Gateway to release hermes.exe file lock…',
'⏸ 停止 Gateway 以釋放 hermes.exe 檔案鎖…',
'⏸ hermes.exe ファイルロックを解放するため Gateway を停止中…',
'⏸ hermes.exe 파일 잠금 해제를 위해 Gateway 중지 중…'),
dashNativePanelInstallGwStopped: _('✓ Gateway 已停止', '✓ Gateway stopped', '✓ Gateway 已停止', '✓ Gateway を停止しました', '✓ Gateway 중지됨'),
dashNativePanelInstallRestartingGw: _('▶ 重启 Gateway…', '▶ Restarting Gateway…', '▶ 重新啟動 Gateway…', '▶ Gateway を再起動中…', '▶ Gateway 재시작 중…'),
dashNativePanelInstallGwRestarted: _('✓ Gateway 已重启', '✓ Gateway restarted', '✓ Gateway 已重新啟動', '✓ Gateway を再起動しました', '✓ Gateway 재시작됨'),
dashNativePanelInstallGwWarn: _('⚠ Gateway 操作异常',
'⚠ Gateway operation warning',
'⚠ Gateway 操作異常',
'⚠ Gateway 操作の警告',
'⚠ Gateway 작업 경고'),
dashOpenCron: _('定时任务', 'Cron Jobs', '定時任務'),
dashOpenSetup: _('重新配置', 'Reconfigure', '重新配置'),
dashNoModel: _('未配置', 'Not configured', '未配置'),
dashApiEndpoint: _('API 地址', 'API Endpoint', 'API 地址'),
dashModelConfig: _('模型配置', 'Model Config', '模型配置'),
dashEyebrowLoading: _('HERMES AGENT · GATEWAY', 'HERMES AGENT · GATEWAY', 'HERMES AGENT · GATEWAY'),
dashEyebrowOnline: _('HERMES AGENT · GATEWAY 在线', 'HERMES AGENT · GATEWAY ONLINE', 'HERMES AGENT · GATEWAY 在線'),
dashEyebrowOffline: _('HERMES AGENT · GATEWAY 离线', 'HERMES AGENT · GATEWAY OFFLINE', 'HERMES AGENT · GATEWAY 離線'),
dashRefresh: _('刷新', 'Refresh', '重新整理'),
dashProvider: _('服务商', 'Provider', '服務商'),
dashProviderPresets: _('服务商预设', 'Provider Presets', '服務商預設'),
dashApiBaseUrl: _('API Base URL', 'API Base URL', 'API Base URL'),
dashApiKey: _('API Key', 'API Key', 'API Key'),
dashEnvAdvancedEdit: _('.env 高级编辑 →', '.env Advanced Edit →', '.env 進階編輯 →'),
dashConnectTarget: _('连接目标', 'Connection Target', '連接目標'),
dashDetectEnv: _('探测环境', 'Detect Environments', '探測環境'),
dashDetecting: _('探测中...', 'Detecting...', '探測中...'),
dashConnLocal: _('本地', 'Local', '本地'),
dashConnWsl2: _('WSL2', 'WSL2', 'WSL2'),
dashConnDocker: _('Docker', 'Docker', 'Docker'),
dashConnCustom: _('自定义', 'Custom', '自訂'),
dashConnApply: _('应用', 'Apply', '套用'),
dashQuickSwitch: _('快速切换', 'Quick Switch', '快速切換'),
dashHermesMissing: _('Hermes 未安装', 'Hermes not installed', 'Hermes 未安裝'),
dashGatewayNotRunning: _('Gateway 未运行', 'Gateway not running', 'Gateway 未執行'),
dashNoHermesContainers: _('未发现 Hermes 容器', 'No Hermes containers found', '未發現 Hermes 容器'),
dashInteractiveSession: _('交互式会话 →', 'interactive session →', '互動式會話 →'),
dashInstallerWizard: _('安装向导 →', 'installer wizard →', '安裝精靈 →'),
dashLogsFoot: _('追踪 / 搜索 →', 'tail / search →', '追蹤 / 搜尋 →'),
dashAdvancedEdit: _('高级编辑', 'advanced edit', '進階編輯'),
dashCustomVars: _('自定义变量 →', 'custom vars →', '自訂變數 →'),
dashCliCommand: _('命令', 'Command', '命令'),
dashCliDescription: _('说明', 'Description', '說明'),
dashCliCopy: _('复制', 'Copy', '複製'),
dashGatewayStarted: _('Gateway 已启动', 'Gateway started', 'Gateway 已啟動'),
dashConfigPatched: _('config.yaml 已自动修复', 'config.yaml was auto-repaired', 'config.yaml 已自動修復'),
configModelRequired: _('请输入模型名', 'Enter a model name', '請輸入模型名稱'),
configSaved: _('配置已保存', 'Config saved', '配置已儲存'),
envDetectFailed: _('探测失败', 'Detection failed', '探測失敗'),
connWslGatewayMissing: _('WSL2 Gateway 未运行,请先在 WSL 中启动', 'WSL2 Gateway is not running. Start it in WSL first.', 'WSL2 Gateway 未執行,請先在 WSL 中啟動'),
connDockerCustomHint: _('请切换到“自定义”模式并输入容器的 Gateway URL', 'Switch to Custom mode and enter the container Gateway URL.', '請切換到「自訂」模式並輸入容器的 Gateway URL'),
connUrlRequired: _('请输入 Gateway URL', 'Enter Gateway URL', '請輸入 Gateway URL'),
// 终端命令
dashCliTitle: _('终端命令', 'Terminal Commands', '終端命令'),
dashCliDesc: _('在终端中使用以下命令管理 Hermes Agent点击复制', 'Use these commands in your terminal to manage Hermes Agent. Click to copy.', '在終端中使用以下命令管理 Hermes Agent點擊複製'),
cliChat: _('终端对话', 'Terminal Chat', '終端對話'),
cliChatDesc: _('在终端中直接与 Agent 对话', 'Chat with Agent directly in terminal', '在終端中直接與 Agent 對話'),
cliDoctor: _('诊断检查', 'Diagnostics', '診斷檢查'),
cliDoctorDesc: _('检测配置和环境问题', 'Check config and environment issues', '檢測配置和環境問題'),
cliVersion: _('查看版本', 'Check Version', '查看版本'),
cliVersionDesc: _('显示当前安装版本', 'Show installed version', '顯示目前安裝版本'),
cliGwStart: _('启动服务', 'Start Gateway', '啟動服務'),
cliGwStartDesc: _('在终端前台启动 Gateway', 'Start Gateway in foreground', '在終端前台啟動 Gateway'),
cliGwStop: _('停止服务', 'Stop Gateway', '停止服務'),
cliGwStopDesc: _('停止后台 Gateway 进程', 'Stop background Gateway process', '停止背景 Gateway 進程'),
cliUpgrade: _('升级', 'Upgrade', '升級'),
cliUpgradeDesc: _('从 GitHub 重新安装最新版', 'Reinstall latest from GitHub', '從 GitHub 重新安裝最新版'),
cliUninstall: _('卸载', 'Uninstall', '解除安裝'),
cliUninstallDesc: _('移除 Hermes Agent', 'Remove Hermes Agent', '移除 Hermes Agent'),
cliConfig: _('打开配置目录', 'Open Config Dir', '開啟配置目錄'),
cliConfigDesc: _('在文件管理器中查看配置文件', 'View config files in file manager', '在檔案管理器中查看配置檔案'),
// 对话页面
hermesChatTitle: _('Hermes 对话', 'Hermes Chat', 'Hermes 對話'),
chatPlaceholder: _('输入消息...', 'Type a message...', '輸入訊息...'),
chatSend: _('发送', 'Send', '發送'),
chatNewSession: _('新对话', 'New Chat', '新對話'),
chatNewChat: _('新建', 'New chat', '新建'),
chatThinking: _('正在思考...', 'Thinking...', '正在思考...'),
chatError: _('发送失败: {error}', 'Send failed: {error}', '發送失敗: {error}'),
chatErrorBadge: _('失败', 'Error', '失敗'),
chatGatewayOffline: _('Gateway 未运行,请先启动', 'Gateway is offline, please start it first', 'Gateway 未運行,請先啟動'),
chatGatewayOnline: _('Gateway 运行中', 'Gateway online', 'Gateway 運行中'),
// Short labels for the header pill — full sentence lives in the tooltip
chatGatewayOfflineShort: _('离线', 'Offline', '離線'),
chatGatewayOnlineShort: _('在线', 'Online', '線上'),
// 健康检查 banner聊天页顶部
chatHealthInstallMissing: _(
'未检测到 Hermes Agent 安装。请在仪表盘完成安装后再开始对话。',
'Hermes Agent is not installed. Please complete installation on the dashboard before chatting.',
'未偵測到 Hermes Agent 安裝。請在儀表板完成安裝後再開始對話。'
),
chatHealthGatewayDown: _(
'Hermes Gateway 未启动,无法发送消息。请在仪表盘启动 Gateway。',
'Hermes Gateway is not running, messages cannot be sent. Please start the Gateway on the dashboard.',
'Hermes Gateway 未啟動,無法發送訊息。請在儀表板啟動 Gateway。'
),
chatHealthGoDashboard: _('去仪表盘', 'Open Dashboard', '去儀表板'),
chatWelcome: _('你好!我是 Hermes Agent有什么可以帮你的', 'Hello! I\'m Hermes Agent, how can I help?', '你好!我是 Hermes Agent有什麼可以幫你的'),
chatEmptyHint: _('开始一段对话吧', 'Start a conversation', '開始一段對話吧'),
chatEmptyTitle: _('和 Hermes Agent 对话', 'Talk to Hermes Agent', '和 Hermes Agent 對話'),
chatEmptySub: _('输入消息开始,或用 /help 查看命令。', 'Type a message to begin, or /help for commands.', '輸入訊息開始,或用 /help 查看命令。'),
chatLoadingMessages: _('正在载入会话', 'Loading session', '正在載入會話', 'セッションを読み込み中', '세션 불러오는 중'),
chatLoadingMessagesSub: _('正在同步 Hermes 历史消息...', 'Syncing Hermes message history…', '正在同步 Hermes 歷史訊息...', 'Hermes の履歴メッセージを同期中...', 'Hermes 메시지 기록 동기화 중...'),
// 会话侧栏
chatSessions: _('会话', 'Sessions', '會話'),
chatPinned: _('置顶', 'Pinned', '釘選'),
chatLoading: _('加载中...', 'Loading...', '載入中...'),
chatNoSessions: _('暂无会话', 'No sessions yet', '暫無會話'),
chatLive: _('活跃', 'Live', '活躍'),
chatToggleSidebar: _('切换侧栏', 'Toggle sidebar', '切換側欄'),
chatShowSessions: _('显示会话', 'Show sessions', '顯示會話', 'セッションを表示', '세션 표시'),
chatHideSessions: _('隐藏会话', 'Hide sessions', '隱藏會話', 'セッションを隠す', '세션 숨기기'),
chatSessionManageHint: _('右键会话,或点 ··· / 删除 管理', 'Right-click a session, or use ··· / Delete', '右鍵會話,或點 ··· / 刪除 管理', '右クリック、または ··· / 削除で管理', '우클릭 또는 ··· / 삭제로 관리'),
chatSessionActions: _('会话操作', 'Session actions', '會話操作', 'セッション操作', '세션 작업'),
chatMoreActions: _('更多操作', 'More actions', '更多操作', 'その他の操作', '더 많은 작업'),
chatDeleteShort: _('删除', 'Delete', '刪除', '削除', '삭제'),
// 输入区
// 占位符直接吸收键位提示,避免输入框下方再来一条同义 hint 形成"套娃"
chatInputPlaceholder: _(
'输入消息... (Enter 发送Shift+Enter 换行,/ 调出命令)',
'Type a message... (Enter to send, Shift+Enter for new line, / for commands)',
'輸入訊息... (Enter 發送Shift+Enter 換行,/ 調出命令)',
'メッセージを入力... (Enter で送信、Shift+Enter で改行、/ でコマンド)',
'메시지 입력... (Enter 전송, Shift+Enter 줄 바꿈, / 명령)',
),
chatStreamingPlaceholder: _('Agent 回答中...', 'Agent is responding...', 'Agent 回答中...'),
// Token 用量条 — 来自 `hermes sessions export` 的累计字段
chatUsageIn: _('输入', 'In', '輸入', '入力', '입력'),
chatUsageOut: _('输出', 'Out', '輸出', '出力', '출력'),
chatUsageCache: _('缓存', 'Cache', '快取', 'キャッシュ', '캐시'),
chatUsageTooltip: _(
'本会话累计 token 用量与估算成本',
'Cumulative token usage and estimated cost for this session',
'本會話累計 token 用量與估算成本',
'このセッションの累積トークン使用量と推定コスト',
'이 세션의 누적 토큰 사용량 및 추정 비용',
),
// 工具调用
chatArguments: _('入参', 'Arguments', '入參'),
chatResult: _('输出', 'Result', '輸出'),
// 上下文菜单
chatPin: _('置顶会话', 'Pin session', '釘選會話'),
chatUnpin: _('取消置顶', 'Unpin session', '取消釘選'),
chatRename: _('重命名', 'Rename', '重新命名'),
chatRenameSession: _('重命名会话', 'Rename session', '重新命名會話'),
chatEnterNewTitle: _('输入新标题...', 'Enter new title…', '輸入新標題...'),
chatRenamed: _('已重命名', 'Renamed', '已重新命名'),
chatRenameFailed: _('重命名失败', 'Rename failed', '重新命名失敗'),
chatCopySessionId: _('复制会话 ID', 'Copy session ID', '複製會話 ID'),
chatCopyMessage: _('复制消息', 'Copy message', '複製訊息', 'メッセージをコピー', '메시지 복사'),
chatCopyMessageShort: _('复制', 'Copy', '複製', 'コピー', '복사'),
chatCopyCode: _('复制代码', 'Copy code', '複製程式碼', 'コードをコピー', '코드 복사'),
chatCopyFailed: _('复制失败', 'Copy failed', '複製失敗'),
chatDeleteSession: _('删除会话', 'Delete session', '刪除會話'),
chatConfirmDelete: _('确认删除此会话?此操作无法撤销。', 'Delete this session? This action cannot be undone.', '確認刪除此會話?此操作無法復原。'),
chatSessionDeleted: _('会话已删除', 'Session deleted', '會話已刪除'),
chatDeleteFailed: _('删除失败', 'Delete failed', '刪除失敗'),
chatDeleteRunningBlocked: _('此会话正在回复中,请先停止当前回复', 'This session is still responding. Stop the run first.', '此會話正在回覆中,請先停止目前回覆', 'このセッションは応答中です。先に停止してください', '이 세션은 응답 중입니다. 먼저 중지하세요'),
chatJumpBottom: _('回到底部', 'Jump to bottom', '回到底部', '一番下へ', '맨 아래로'),
// Profile / Agent 切换
chatProfileTooltip: _('切换 Hermes Profile (多 Agent)', 'Switch Hermes profile (multi-agent)', '切換 Hermes Profile (多 Agent)', 'Hermes プロファイルを切り替え', 'Hermes 프로필 전환'),
chatProfileSingle: _('当前 Profile (未检测到多 Profile)', 'Current profile (no extra profiles detected)', '目前 Profile (未偵測到多 Profile)', '現在のプロファイル', '현재 프로필'),
chatProfileMenuHead: _('Hermes Profile', 'Hermes Profile', 'Hermes Profile'),
chatProfileMenuFoot: _('每个 Profile 对应独立的 Agent / 配置 / 会话', 'Each profile is an isolated agent · config · session set', '每個 Profile 對應獨立的 Agent / 設定 / 會話', '各プロファイルは独立した Agent・設定・セッション群', '각 프로필은 독립된 Agent·설정·세션 집합'),
chatProfileRunning: _('运行中', 'Running', '運行中', '実行中', '실행 중'),
chatProfileSwitched: _('已切换到 {name}', 'Switched to {name}', '已切換到 {name}', '{name} に切り替え済み', '{name} 으로 전환됨'),
chatProfileSwitchBlocked: _('正在回复中,无法切换 Profile', 'A reply is in progress — cannot switch profile', '正在回覆中,無法切換 Profile', '応答中のためプロファイルを切り替えられません', '응답 중이라 프로필을 전환할 수 없습니다'),
// 批量选择
chatBulkSelect: _('多选会话', 'Select multiple sessions', '多選會話', 'セッションを複数選択', '여러 세션 선택'),
chatExitSelect: _('退出多选', 'Exit selection', '退出多選', '選択モード終了', '선택 모드 종료'),
chatSelect: _('选择', 'Select', '選擇'),
chatDeselect: _('取消选择', 'Deselect', '取消選擇'),
chatSelectAll: _('全选', 'Select all', '全選'),
chatSelectNone: _('清空选择', 'Clear selection', '清空選擇'),
chatSelectedCount: _('已选 {n} 项', '{n} selected', '已選 {n} 項', '{n} 件選択', '{n}개 선택됨'),
chatBulkDelete: _('批量删除', 'Delete selected', '批量刪除', '一括削除', '일괄 삭제'),
chatConfirmBulkDelete: _('确认删除 {n} 个会话?此操作无法撤销。', 'Delete {n} sessions? This action cannot be undone.', '確認刪除 {n} 個會話?此操作無法復原。', '{n} 件のセッションを削除しますか?元に戻せません。', '{n}개 세션을 삭제할까요? 되돌릴 수 없습니다.'),
chatBulkDeleted: _('已删除 {n} 个会话', '{n} sessions deleted', '已刪除 {n} 個會話', '{n} 件のセッションを削除', '{n}개 세션 삭제됨'),
chatBulkPartial: _('已删除 {n} 个,{f} 个失败/跳过', '{n} deleted, {f} failed/skipped', '已刪除 {n} 個,{f} 個失敗/跳過', '{n} 件削除、{f} 件失敗/スキップ', '{n}개 삭제, {f}개 실패/건너뜀'),
chatBulkFailed: _('批量删除失败', 'Bulk delete failed', '批量刪除失敗', '一括削除に失敗', '일괄 삭제 실패'),
// 会话浏览页
sessionsPageTitle: _('会话浏览器', 'Session Browser', '會話瀏覽器', 'セッションブラウザ', '세션 브라우저'),
sessionsPageDesc: _('跨 Profile 搜索、审阅和批量管理 Hermes 会话。', 'Search, review and batch-manage Hermes sessions across profiles.', '跨 Profile 搜尋、檢閱和批量管理 Hermes 會話。'),
sessionsSearchPlaceholder: _('搜索标题、模型、来源或消息内容...', 'Search title, model, source or message content...', '搜尋標題、模型、來源或訊息內容...'),
sessionsAllSources: _('全部来源', 'All sources', '全部來源'),
sessionsAllProfiles: _('全部 Profiles', 'All profiles', '全部 Profiles'),
sessionsProfileLoadPartial: _('{n} 个 Profile 加载失败', '{n} profiles failed to load', '{n} 個 Profile 載入失敗'),
sessionsDetailLoadFailed: _('会话详情加载失败', 'Failed to load session details', '會話詳情載入失敗'),
sessionsTotal: _('全部会话', 'Total sessions', '全部會話'),
sessionsShown: _('当前显示', 'Shown', '目前顯示'),
sessionsProfiles: _('Profiles', 'Profiles', 'Profiles'),
sessionsSelected: _('已选择', 'Selected', '已選擇'),
sessionsJustNow: _('刚刚', 'just now', '剛剛'),
sessionsMinutesAgo: _('{n} 分钟前', '{n}m ago', '{n} 分鐘前'),
sessionsHoursAgo: _('{n} 小时前', '{n}h ago', '{n} 小時前'),
sessionsUntitled: _('未命名会话', 'Untitled session', '未命名會話'),
sessionsNoPreview: _('暂无预览', 'No preview', '暫無預覽'),
sessionsEmpty: _('没有匹配的会话', 'No matching sessions', '沒有符合的會話'),
sessionsNoSelection: _('选择一个会话', 'Select a session', '選擇一個會話'),
sessionsNoSelectionDesc: _('从左侧列表选择会话,查看元数据和最近消息。', 'Pick a session from the left to inspect metadata and recent messages.', '從左側列表選擇會話,查看中繼資料和最近訊息。'),
sessionsOpenChat: _('打开聊天', 'Open chat', '開啟聊天'),
sessionsPin: _('置顶', 'Pin', '置頂'),
sessionsUnpin: _('取消置顶', 'Unpin', '取消置頂'),
sessionsMessages: _('消息数', 'Messages', '訊息數'),
sessionsTokens: _('Tokens', 'Tokens', 'Tokens'),
sessionsModel: _('模型', 'Model', '模型'),
sessionsUpdated: _('更新时间', 'Updated', '更新時間'),
sessionsMessagesNotLoaded: _('消息尚未载入,点击左侧会话后会自动同步详情。', 'Messages are not loaded yet; selecting a session syncs details automatically.', '訊息尚未載入,點擊左側會話後會自動同步詳情。'),
// Slash 命令
chatSlashTitle: _('可用命令', 'Available commands', '可用命令'),
chatSlashHelpDesc: _('显示可用命令', 'Show available commands', '顯示可用命令'),
chatSlashStatusDesc: _('查看 Gateway 与模型状态', 'Inspect gateway & model status', '查看 Gateway 與模型狀態'),
chatSlashMemoryDesc: _('打开 Agent 记忆编辑', 'Open Agent memory editor', '開啟 Agent 記憶編輯'),
chatSlashSkillsDesc: _('打开技能库', 'Open skills library', '開啟技能庫'),
chatSlashClearDesc: _('清空当前会话', 'Clear current session', '清空目前會話'),
chatSlashNewDesc: _('新建会话', 'Start a new session', '新建會話'),
chatSlashStatusTitle: _('当前状态', 'Current status', '目前狀態'),
chatSlashGateway: _('Gateway', 'Gateway', 'Gateway'),
chatSlashPort: _('端口', 'Port', '埠'),
chatSlashModel: _('模型', 'Model', '模型'),
chatSlashRedirect: _('正在跳转到 {page}...', 'Redirecting to {page}...', '正在跳轉到 {page}...'),
// Batch 1 §B: Hermes config.js 编辑器(去掉硬编码)
hermesConfigEyebrow: _('HERMES AGENT · 配置', 'HERMES AGENT · CONFIG', 'HERMES AGENT · 設定'),
hermesConfigReload: _('重新加载', 'Reload', '重新載入'),
hermesConfigSave: _('保存配置', 'Save', '儲存設定'),
hermesConfigSaveSuccess: _('配置已保存,建议重启 Hermes Gateway 生效', 'Saved. Restart Hermes Gateway to take effect.', '已儲存設定,建議重啟 Hermes Gateway 生效'),
hermesConfigStatusSaving: _('保存中…', 'Saving…', '儲存中…'),
hermesConfigStatusLoading: _('加载中…', 'Loading…', '載入中…'),
hermesConfigStatusReady: _('raw yaml 编辑器', 'raw yaml editor', 'raw yaml 編輯器'),
// Batch 1 §E: 会话导出
sessionsExport: _('导出', 'Export', '匯出'),
sessionsExportSuccess: _('已导出', 'Exported', '已匯出'),
sessionsExportFailed: _('导出失败', 'Export failed', '匯出失敗'),
// 停止流式
chatStop: _('停止', 'Stop', '停止'),
chatStopped: _('已停止当前回复', 'Run stopped', '已停止目前回覆'),
chatAborting: _('正在中断…', 'Aborting…', '正在中斷…'),
// Batch 1 §C-bis: Approval Flow 工具调用批准
chatApprovalTitle: _('Agent 想调用工具 "{tool}",是否批准?', 'Agent wants to call tool "{tool}". Approve?', 'Agent 想呼叫工具 "{tool}",是否批准?'),
chatApprovalHint: _('「一次性」最安全;「本次会话」让 Agent 自由用;「永久」全局信任此工具。', '"Once" is safest. "Session" lets the agent use it freely this session. "Always" trusts this tool globally.', '「一次性」最安全;「本次會話」讓 Agent 自由用;「永久」全局信任此工具。'),
chatApprovalOnce: _('一次性批准', 'Approve once', '一次性批准'),
chatApprovalSession: _('本次会话', 'This session', '本次會話'),
chatApprovalAlways: _('永久信任', 'Always', '永久信任'),
chatApprovalDeny: _('拒绝', 'Deny', '拒絕'),
chatApprovalFailed: _('批准失败', 'Approval failed', '批准失敗'),
// Batch 3 §K: 多模态图片
chatAttach: _('附加图片', 'Attach image', '附加圖片'),
chatAttachRemove: _('移除', 'Remove', '移除'),
chatAttachOnlyImage: _('只支持图片格式', 'Only image files are supported', '只支援圖片格式'),
chatAttachTooBig: _('图片过大(最大 10 MB', 'Image too large (max 10 MB)', '圖片過大(最大 10 MB'),
chatAttachTooMany: _('最多 5 张图片', 'Up to 5 images', '最多 5 張圖片'),
chatAttachReadFailed: _('读取图片失败', 'Failed to read image', '讀取圖片失敗'),
// Batch 2 §H: Profiles 管理
hermesProfilesTitle: _('Profile 管理', 'Profiles', 'Profile 管理'),
hermesProfilesDesc: _('每个 Profile 是独立的工作区,凭据、记忆、会话彼此隔离', 'Each profile is an isolated workspace — credentials, memory, sessions are kept separate', '每個 Profile 是獨立的工作區,憑證、記憶、會話彼此隔離'),
hermesProfilesEmpty: _('暂无 Profile请先启动 Dashboard', 'No profiles (start Dashboard first)', '暫無 Profile請先啟動 Dashboard'),
hermesProfileNew: _('新建', 'New', '新建'),
hermesProfileNewTitle: _('新建 Profile', 'New profile', '新建 Profile'),
hermesProfileNameLabel: _('Profile 名称', 'Profile name', 'Profile 名稱'),
hermesProfileNameRequired: _('名称不能为空', 'Name is required', '名稱不能為空'),
hermesProfileCloneFromDefault: _('从默认 Profile 复制(推荐)', 'Clone from default (recommended)', '從預設 Profile 複製(推薦)'),
hermesProfileCloneHint: _('打勾会复制 default 的模型、技能、记忆。不勾会创建空白 Profile。', 'Checked: clone default\'s models / skills / memory. Unchecked: empty profile.', '勾選會複製 default 的模型、技能、記憶。不勾建立空白 Profile。'),
hermesProfileSwitch: _('切换到此', 'Switch to', '切換到此'),
hermesProfileSwitched: _('已切换到 {name}', 'Switched to {name}', '已切換到 {name}'),
hermesProfileSwitchFailed: _('切换失败', 'Switch failed', '切換失敗'),
hermesProfileRename: _('重命名', 'Rename', '重新命名'),
hermesProfileRenameTitle: _('重命名 Profile "{name}"', 'Rename profile "{name}"', '重新命名 Profile "{name}"'),
hermesProfileNewNameLabel: _('新名称', 'New name', '新名稱'),
hermesProfileRenamed: _('已重命名: {from} → {to}', 'Renamed: {from} → {to}', '已重新命名: {from} → {to}'),
hermesProfileRenameFailed: _('重命名失败', 'Rename failed', '重新命名失敗'),
hermesProfileDelete: _('删除', 'Delete', '刪除'),
hermesProfileDeleteConfirm: _('确认删除 Profile "{name}"', 'Delete profile "{name}"?', '確認刪除 Profile "{name}"'),
hermesProfileDeleteImpact: _('这会永久清除该 Profile 的会话、凭据和记忆文件', 'This permanently removes the profile\'s sessions, credentials, and memory files', '這會永久清除該 Profile 的會話、憑證和記憶檔案'),
hermesProfileDeleted: _('Profile "{name}" 已删除', 'Profile "{name}" deleted', 'Profile "{name}" 已刪除'),
hermesProfileDeleteFailed: _('删除失败', 'Delete failed', '刪除失敗'),
hermesProfileActive: _('当前', 'Active', '當前'),
hermesProfileCreated: _('已创建 Profile "{name}"', 'Profile "{name}" created', '已建立 Profile "{name}"'),
hermesProfileCreateFailed: _('创建失败', 'Create failed', '建立失敗'),
// Batch 3 §M: Kanban 看板Hermes 已内置,走 /api/plugins/kanban/*
hermesKanbanTitle: _('看板', 'Kanban', '看板'),
hermesKanbanDesc: _('管理 Agent 任务卡片,按状态分列', 'Manage agent tasks by status columns', '管理 Agent 任務卡片,按狀態分欄'),
hermesKanbanEmpty: _('暂无任务(请先启动 Dashboard', 'No tasks (start Dashboard first)', '暫無任務(請先啟動 Dashboard'),
hermesKanbanColEmpty: _('(空)', '(empty)', '(空)'),
hermesKanbanNewTask: _('新任务', 'New task', '新任務'),
hermesKanbanNewTaskTitle: _('新建任务', 'New task', '新建任務'),
hermesKanbanTitleLabel: _('标题', 'Title', '標題'),
hermesKanbanTitleRequired: _('标题不能为空', 'Title is required', '標題不能為空'),
hermesKanbanSummaryLabel: _('摘要', 'Summary', '摘要'),
hermesKanbanDescLabel: _('描述', 'Description', '描述'),
hermesKanbanStatusLabel: _('状态', 'Status', '狀態'),
hermesKanbanPriorityLabel: _('优先级', 'Priority', '優先級'),
hermesKanbanAssigneeLabel: _('指派给', 'Assignee', '指派給'),
hermesKanbanRunSummary: _('最近运行摘要', 'Latest run summary', '最近執行摘要'),
hermesKanbanColTodo: _('待办', 'To do', '待辦'),
hermesKanbanColInProgress: _('进行中', 'In progress', '進行中'),
hermesKanbanColBlocked: _('阻塞', 'Blocked', '阻塞'),
hermesKanbanColDone: _('完成', 'Done', '完成'),
hermesKanbanColArchived: _('归档', 'Archived', '歸檔'),
hermesKanbanTaskCreated: _('任务已创建', 'Task created', '任務已建立'),
hermesKanbanTaskCreateFailed: _('创建任务失败', 'Create task failed', '建立任務失敗'),
hermesKanbanTaskUpdated: _('任务已更新', 'Task updated', '任務已更新'),
hermesKanbanTaskUpdateFailed: _('更新任务失败', 'Update task failed', '更新任務失敗'),
hermesKanbanTaskLoadFailed: _('加载任务失败', 'Load task failed', '載入任務失敗'),
hermesKanbanMoveStatus: _('修改状态', 'Change status', '修改狀態'),
hermesKanbanMoveStatusTitle: _('修改任务状态', 'Change task status', '修改任務狀態'),
hermesKanbanBoardSwitched: _('已切换到看板 "{name}"', 'Switched to board "{name}"', '已切換到看板 "{name}"'),
hermesKanbanBoardSwitchFailed: _('切换看板失败', 'Switch board failed', '切換看板失敗'),
// Hermes UX 小白化services 重启/停止确认
servicesConfirmRestart: _('确认重启 Gateway', 'Restart Gateway?', '確認重啟 Gateway'),
servicesConfirmStop: _('确认停止 Gateway', 'Stop Gateway?', '確認停止 Gateway'),
servicesImpactInflight: _('正在进行的 Agent 会话会被中断', 'In-flight agent runs will be aborted', '正在進行的 Agent 會話會被中斷'),
// Web 模式(远程浏览器)下流式聊天暂不可用
chatWebModeStreamingUnsupported: _(
'Web 模式暂不支持 Hermes 实时流式聊天(依赖桌面端事件桥)。请打开桌面客户端使用此功能。',
'Hermes streaming chat isn\'t available in Web mode yet (it relies on the desktop event bridge). Please use the desktop app for this.',
'Web 模式暫不支援 Hermes 即時串流聊天(依賴桌面端事件橋)。請開啟桌面客戶端使用此功能。',
),
// 会话搜索 (Ctrl+K)
chatSearchShortcut: _('搜索会话 (Ctrl+K)', 'Search sessions (Ctrl+K)', '搜尋會話 (Ctrl+K)'),
chatSearchPlaceholder: _('搜索会话标题或内容...', 'Search by title or message content…', '搜尋會話標題或內容...'),
chatSearchEmpty: _('没有匹配的会话', 'No matching sessions', '沒有符合的會話'),
chatSearchNavigate: _('导航', 'Navigate', '導覽'),
chatSearchOpen: _('打开', 'Open', '開啟'),
fileAccess: _('文件访问', 'File Access', '檔案存取'),
fileAccessOn: _('已开启文件系统访问Agent 可读取本机文件)', 'File system access enabled (Agent can read local files)', '已開啟檔案系統存取Agent 可讀取本機檔案)'),
fileAccessOff: _('文件系统访问已关闭', 'File system access disabled', '檔案系統存取已關閉'),
// 定时任务
hermesCronTitle: _('定时任务', 'Cron Jobs', '定時任務'),
cronNoJobs: _('暂无定时任务', 'No cron jobs yet', '暫無定時任務'),
cronCreate: _('创建任务', 'Create Job', '建立任務'),
cronName: _('任务名称', 'Job Name', '任務名稱'),
cronSchedule: _('执行周期', 'Schedule', '執行週期'),
cronPrompt: _('AI 指令', 'AI Prompt', 'AI 指令'),
cronActive: _('启用', 'Active', '啟用'),
cronPaused: _('已暂停', 'Paused', '已暫停'),
cronRunNow: _('立即执行', 'Run Now', '立即執行'),
cronDelete: _('删除', 'Delete', '刪除'),
cronSave: _('保存', 'Save', '儲存'),
cronCancel: _('取消', 'Cancel', '取消'),
cronEdit: _('编辑', 'Edit', '編輯'),
cronTotal: _('总任务', 'Total', '總任務'),
cronRunning: _('运行中', 'Running', '運行中'),
cronNoJobsHint: _('点击"创建任务"添加你的第一个定时任务', 'Click "Create Job" to add your first cron job', '點擊「建立任務」添加你的第一個定時任務'),
cronEvery5min: _('每5分钟', 'Every 5 min', '每5分鐘'),
cronEvery15min: _('每15分钟', 'Every 15 min', '每15分鐘'),
cronHourly: _('每小时', 'Hourly', '每小時'),
cronDaily9: _('每天 9:00', 'Daily 9:00', '每天 9:00'),
cronDaily18: _('每天 18:00', 'Daily 18:00', '每天 18:00'),
cronMonday9: _('每周一 9:00', 'Monday 9:00', '每週一 9:00'),
cronMonthly1: _('每月1日 9:00', '1st of Month 9:00', '每月1日 9:00'),
cronEveryMinute: _('每分钟', 'Every minute', '每分鐘'),
cronEveryNMin: _('每 {n} 分钟', 'Every {n} minutes', '每 {n} 分鐘'),
cronHourlyOnTheHour: _('每小时整点', 'Every hour on the hour', '每小時整點'),
cronCustomExpr: _('自定义 cron 表达式', 'Custom cron expression', '自訂 cron 表達式'),
cronPreview: _('预览', 'Preview', '預覽'),
cronConfirmDelete: _('确定要删除任务「{name}」吗?', 'Delete job "{name}"?', '確定要刪除任務「{name}」嗎?'),
cronDeleteTitle: _('删除任务「{name}」', 'Delete job "{name}"', '刪除任務「{name}」', 'ジョブ「{name}」を削除', '작업「{name}」 삭제', 'Xoá tác vụ "{name}"', 'Eliminar tarea "{name}"', 'Excluir tarefa "{name}"', 'Удалить задачу "{name}"', 'Supprimer la tâche "{name}"', 'Aufgabe "{name}" löschen'),
cronDeleteBtn: _('删除', 'Delete', '刪除', '削除', '삭제', 'Xoá', 'Eliminar', 'Excluir', 'Удалить', 'Supprimer', 'Löschen'),
cronDeleteCancel: _('保留', 'Keep', '保留', '保持', '유지', 'Giữ lại', 'Conservar', 'Manter', 'Оставить', 'Conserver', 'Behalten'),
cronDeleteImpactStop: _('任务将停止,不再按计划执行', 'Job will stop and will no longer run on schedule', '任務將停止,不再按計畫執行', 'ジョブは停止し、スケジュール実行されなくなります', '작업이 중지되고 더 이상 예약대로 실행되지 않습니다', 'Tác vụ sẽ dừng và không chạy theo lịch nữa', 'La tarea se detendrá y dejará de ejecutarse según el calendario', 'A tarefa será interrompida e deixará de rodar no agendamento', 'Задача остановится и не будет выполняться по расписанию', 'La tâche s\u2019arrêtera et ne s\u2019exécutera plus selon le planning', 'Die Aufgabe stoppt und wird nicht mehr nach Zeitplan ausgeführt'),
cronDeleteImpactHistory: _('已执行的历史记录会被保留', 'Past execution history will be kept', '已執行的歷史紀錄會被保留', '実行履歴は保持されます', '실행 이력은 유지됩니다', 'Lịch sử thực thi sẽ được giữ lại', 'El historial de ejecuciones se conservará', 'O histórico de execuções será mantido', 'История выполнения будет сохранена', 'L\u2019historique d\u2019exécution sera conservé', 'Der Ausführungsverlauf bleibt erhalten'),
cronSaving: _('保存中...', 'Saving...', '儲存中...'),
cronNameRequired: _('请输入任务名称', 'Job name is required', '請輸入任務名稱'),
cronPromptRequired: _('请输入 AI 指令', 'AI prompt is required', '請輸入 AI 指令'),
cronScheduleRequired: _('请选择执行周期', 'Schedule is required', '請選擇執行週期'),
// --- Phase 2 additions: richer job metadata ---
cronEyebrow: _('AGENT 定时任务', 'AGENT SCHEDULED JOBS', 'AGENT 定時任務'),
cronJobs: _('个任务', 'jobs', '個任務'),
cronFailed: _('失败', 'Failed', '失敗'),
cronPauseBtn: _('暂停', 'Pause', '暫停'),
cronResume: _('恢复', 'Resume', '恢復'),
cronStateRunning: _('运行中', 'running', '運行中'),
cronStatePaused: _('已暂停', 'paused', '已暫停'),
cronStateDisabled: _('已禁用', 'disabled', '已禁用'),
cronStateScheduled: _('待调度', 'scheduled', '待調度'),
cronScheduleLabel: _('执行周期', 'schedule', '執行週期'),
cronNextRun: _('下次执行', 'next run', '下次執行'),
cronLastRun: _('上次执行', 'last run', '上次執行'),
cronDeliverLabel: _('结果回传', 'deliver to', '結果回傳'),
cronRepeatLabel: _('重复', 'repeat', '重複'),
cronSkillsLabel: _('Skills', 'Skills', 'Skills'),
cronLastError: _('上次错误', 'last error', '上次錯誤'),
cronOverdue: _('已逾期', 'overdue', '已逾期'),
cronInSeconds: _('{n} 秒后', 'in {n}s', '{n} 秒後'),
cronInMinutes: _('{n} 分钟后', 'in {n}m', '{n} 分鐘後'),
cronInHours: _('{n} 小时后', 'in {n}h', '{n} 小時後'),
cronInDays: _('{n} 天后', 'in {n}d', '{n} 天後'),
cronDeliverOrigin: _('回传原聊天', 'origin chat', '回傳原聊天'),
cronDeliverLocal: _('仅本地记录', 'local only', '僅本機記錄'),
cronRepeatLimit: _('重复次数', 'repeat limit', '重複次數'),
cronRepeatLimitHint: _('留空表示无限循环', 'Leave empty for unlimited', '留空表示無限迴圈'),
cronInvalidCron: _('无效的 cron 表达式', 'Invalid cron expression', '無效的 cron 表達式'),
cronTriggered: _('任务已触发', 'Job triggered', '任務已觸發'),
cronPausedOk: _('任务已暂停', 'Job paused', '任務已暫停'),
cronResumedOk: _('任务已恢复', 'Job resumed', '任務已恢復'),
cronDeletedOk: _('任务已删除', 'Job deleted', '任務已刪除'),
// 日志页面
hermesLogsTitle: _('Agent 日志', 'Agent Logs', 'Agent 日誌'),
logsRefresh: _('刷新', 'Refresh', '重新整理'),
logsFiles: _('日志文件', 'Log Files', '日誌檔案'),
logsNoFiles: _('暂无日志文件', 'No log files', '暫無日誌檔案'),
logsLines: _('行', 'lines', '行'),
logsSearch: _('搜索日志...', 'Search logs...', '搜尋日誌...'),
logsEntries: _('条记录', 'entries', '條記錄'),
logsLoading: _('加载中...', 'Loading...', '載入中...'),
logsEmpty: _('暂无日志', 'No logs', '暫無日誌'),
logsLoadFailed: _('加载失败', 'Load failed', '載入失敗'),
logsEyebrow: _('AGENT 日志流', 'AGENT LOG STREAM', 'AGENT 日誌流'),
logsTailing: _('实时追踪中', 'TAILING · LIVE', '即時追蹤中'),
logsTailStart: _('追踪', 'Tail', '追蹤'),
logsTailStop: _('暂停', 'Pause', '暫停'),
logsToggleTail: _('开启/停止实时追踪(每 2 秒刷新)', 'Toggle live tail (2s poll)', '開啟/停止即時追蹤(每 2 秒重新整理)'),
logsDownload: _('下载', 'Download', '下載'),
logsDownloadOk: _('日志已保存到 {path}', 'Log saved to {path}', '日誌已儲存到 {path}'),
logsDownloadBrowserOk: _('已交给浏览器下载,请查看默认下载目录。', 'Download started in your browser; check the default downloads folder.', '已交給瀏覽器下載,請查看預設下載目錄。'),
logsDownloadFailed: _('下载失败', 'Download failed', '下載失敗'),
logsClear: _('清空当前显示', 'Clear view', '清空目前顯示'),
logsLevel: _('级别', 'Level', '級別'),
logsLinesLabel: _('行数', 'Limit', '行數'),
logsSearchLabel: _('搜索', 'Search', '搜尋'),
logsFilteredBy: _('过滤自', 'filtered by', '過濾自'),
// Skills 页面
hermesSkillsTitle: _('Agent Skills', 'Agent Skills', 'Agent Skills'),
skillsEyebrow: _('AGENT 技能库', 'AGENT SKILL LIBRARY', 'AGENT 技能庫'),
skillsTotal: _('个技能', 'skills', '個技能'),
skillsActive: _('启用中', 'active', '啟用中'),
skillsSearch: _('搜索技能...', 'Search skills...', '搜尋技能...'),
skillsLoading: _('加载中...', 'Loading...', '載入中...'),
skillsEmpty: _('暂无技能', 'No skills found', '暫無技能'),
skillsNoMatch: _('没有匹配的技能', 'No skills match your search', '沒有符合的技能'),
skillsUncategorized: _('未分类', 'Uncategorized', '未分類'),
skillsSelectHint: _('选择一个技能查看详情', 'Select a skill to view details', '選擇一個技能查看詳情'),
skillsSelectSub: _('从左侧列表点击,或使用搜索快速定位。', 'Click any item on the left, or use search to jump.', '從左側列表點擊,或使用搜尋快速定位。'),
skillsRefresh: _('刷新', 'Refresh', '重新整理'),
skillsEnable: _('启用此技能', 'Enable this skill', '啟用此技能'),
skillsDisable: _('停用此技能', 'Disable this skill', '停用此技能'),
skillsEnabled: _('技能已启用', 'Skill enabled', '技能已啟用'),
skillsDisabled: _('技能已停用', 'Skill disabled', '技能已停用'),
skillsEnabledTag: _('启用', 'Active', '啟用'),
skillsDisabledTag: _('停用', 'Disabled', '停用'),
skillsToggleFailed: _('切换失败', 'Toggle failed', '切換失敗'),
skillsLoadFailed: _('加载失败', 'Load failed', '載入失敗'),
skillsFileLoadFailed: _('文件加载失败', 'File load failed', '檔案載入失敗'),
skillsAttachedFiles: _('附带资源', 'Attached Files', '附帶資源'),
skillsBackTo: _('返回', 'Back to', '返回'),
// Skills 页面 — Toolsets 区hermes tools list --platform cli
toolsetsTitle: _('内置工具集',
'Built-in Toolsets',
'內建工具集',
'組み込みツールセット',
'내장 툴셋'),
toolsetsSubtitle: _('platform: cli · 配置位于 ~/.hermes/config.yaml',
'platform: cli · configured in ~/.hermes/config.yaml',
'platform: cli · 配置位於 ~/.hermes/config.yaml',
'platform: cli · ~/.hermes/config.yaml で設定',
'platform: cli · ~/.hermes/config.yaml에서 설정'),
toolsetsLoading: _('正在读取工具集…', 'Loading toolsets…', '正在讀取工具集…', 'ツールセットを読み込み中…', '툴셋 로드 중…'),
toolsetsEmpty: _('暂无工具集数据。可能 Hermes 未安装或版本过旧。',
'No toolset data. Hermes may not be installed or the version is too old.',
'暫無工具集資料。可能 Hermes 未安裝或版本過舊。',
'ツールセットデータがありません。Hermes がインストールされていないか、バージョンが古い可能性があります。',
'툴셋 데이터가 없습니다. Hermes가 설치되지 않았거나 버전이 너무 오래되었을 수 있습니다.'),
toolsetsParseFailed: _('无法解析输出,下面显示原始内容:',
'Could not parse output. Raw content shown below:',
'無法解析輸出,下面顯示原始內容:',
'出力を解析できませんでした。下に生のコンテンツを表示します:',
'출력을 분석할 수 없습니다. 아래에 원시 콘텐츠를 표시합니다:'),
toolsetsHint: _('要切换某个工具集,运行 hermes tools 进入交互界面,或编辑 config.yaml 的 platforms.cli.toolsets 字段。',
'To toggle a toolset, run hermes tools for the interactive UI or edit platforms.cli.toolsets in config.yaml.',
'要切換某個工具集,執行 hermes tools 進入互動介面,或編輯 config.yaml 的 platforms.cli.toolsets 欄位。',
'ツールセットを切り替えるには、hermes tools で対話 UI を起動するか、config.yaml の platforms.cli.toolsets を編集します。',
'툴셋을 전환하려면 hermes tools 대화형 UI를 실행하거나 config.yaml의 platforms.cli.toolsets를 편집하세요.'),
toolsetsEnabled: _('启用', 'enabled', '啟用', '有効', '활성화'),
toolsetsDisabled: _('停用', 'disabled', '停用', '無効', '비활성화'),
toolsetsActiveCount: _('{n}/{total} 启用', '{n}/{total} active', '{n}/{total} 啟用', '{n}/{total} 有効', '{n}/{total} 활성화'),
// Memory 页面
hermesMemoryTitle: _('Agent 记忆', 'Agent Memory', 'Agent 記憶'),
memoryNotes: _('笔记', 'Notes', '筆記'),
memoryProfile: _('用户画像', 'User Profile', '用戶畫像'),
memoryEdit: _('编辑', 'Edit', '編輯'),
memoryCancel: _('取消', 'Cancel', '取消'),
memorySave: _('保存', 'Save', '儲存'),
memorySaving: _('保存中...', 'Saving...', '儲存中...'),
memorySaveFailed: _('保存失败', 'Save failed', '儲存失敗'),
memoryLoading: _('加载中...', 'Loading...', '載入中...'),
memoryEmpty: _('暂无内容', 'No content', '暫無內容'),
memoryPlaceholder: _('使用 Markdown 格式编写...', 'Write in Markdown format...', '使用 Markdown 格式編寫...'),
memoryUnsaved: _('有未保存的更改,确定离开?', 'Unsaved changes. Leave anyway?', '有未儲存的變更,確定離開?'),
memorySaved: _('已保存', 'Saved', '已儲存'),
memorySaveHint: _('Ctrl/⌘ + S 保存 · Esc 取消', 'Ctrl/⌘ + S to save · Esc to cancel', 'Ctrl/⌘ + S 儲存 · Esc 取消'),
memoryEyebrow: _('AGENT 长期记忆', 'AGENT PERSISTENT MEMORY', 'AGENT 長期記憶'),
memoryOverviewKicker: _('Hermes Memory Fabric', 'Hermes Memory Fabric', 'Hermes Memory Fabric'),
memoryOverviewTitle: _('三份 Markdown组成 Agent 的长期上下文', 'Three Markdown files form the Agents long-term context', '三份 Markdown組成 Agent 的長期上下文'),
memoryOverviewDesc: _('笔记记录事实用户画像沉淀偏好灵魂档案塑造人格。Hermes 会在会话中持续读取这些长期记忆。', 'Notes store facts, profile captures preferences, and soul shapes persona. Hermes continuously reads these persistent memories during conversations.', '筆記記錄事實用戶畫像沉澱偏好靈魂檔案塑造人格。Hermes 會在會話中持續讀取這些長期記憶。'),
memoryFiles: _('记忆文件', 'Memory Files', '記憶檔案'),
memoryFilled: _('已填写', 'Filled', '已填寫'),
memoryTotalWords: _('总词数', 'Total Words', '總詞數'),
memoryLatest: _('最近更新', 'Latest Update', '最近更新'),
memorySoul: _('灵魂档案', 'Soul', '靈魂檔案'),
memoryNotesDesc: _('Agent 的笔记与事实备忘——会话间持续累积的知识。', 'Agent\'s notes and factual memories — knowledge accumulated across sessions.', 'Agent 的筆記與事實備忘——會話間持續累積的知識。'),
memoryProfileDesc: _('用户偏好、身份、背景信息——每次对话都会参考。', 'User preferences, identity, context — referenced in every conversation.', '用戶偏好、身份、背景資訊——每次對話都會參考。'),
memorySoulDesc: _('Agent 的人格、价值观、说话风格——长期塑造。', 'Agent persona, values, voice — shaped over time.', 'Agent 的人格、價值觀、說話風格——長期塑造。'),
memoryWords: _('词', 'words', '詞'),
memoryChars: _('字符', 'chars', '字元'),
memoryJustNow: _('刚刚', 'just now', '剛剛'),
memoryMinAgo: _('{n} 分钟前', '{n}m ago', '{n} 分鐘前'),
memoryHrAgo: _('{n} 小时前', '{n}h ago', '{n} 小時前'),
// 其它页面
hermesServicesTitle: _('Hermes 服务', 'Hermes Services', 'Hermes 服務'),
servicesDesc: _('集中查看 Gateway 运行状态、连接目标、健康检查与维护操作。', 'Inspect gateway status, connection target, health checks, and maintenance actions in one place.', '集中查看 Gateway 運行狀態、連接目標、健康檢查與維護操作。'),
servicesInstallState: _('安装状态', 'Install State', '安裝狀態'),
servicesInstallType: _('安装方式', 'Install Method', '安裝方式'),
servicesInstalled: _('已安装', 'Installed', '已安裝'),
servicesMissing: _('未安装', 'Not Installed', '未安裝'),
servicesUnknown: _('未知', 'Unknown', '未知'),
servicesPath: _('CLI 路径', 'CLI Path', 'CLI 路徑'),
servicesHome: _('主目录', 'Home Directory', '主目錄'),
servicesConfigFiles: _('关键配置文件', 'Key Config Files', '關鍵配置檔'),
servicesNotSet: _('未设置', 'Not set', '未設置'),
servicesCustomUrl: _('自定义 Gateway URL', 'Custom Gateway URL', '自定義 Gateway URL'),
servicesWslHint: _('请先在 WSL2 中启动 Gateway然后再切换。', 'Start the gateway in WSL2 before switching.', '請先在 WSL2 中啟動 Gateway再切換。'),
servicesDockerHint: _('Docker 场景请填写容器对外可访问的 Gateway URL。', 'For Docker, enter the externally reachable gateway URL.', 'Docker 場景請填寫容器對外可訪問的 Gateway URL。'),
servicesDetectFirst: _('请先探测环境并确保目标 Gateway 已启动。', 'Detect environments first and make sure the target gateway is running.', '請先探測環境並確認目標 Gateway 已啟動。'),
servicesHealthTitle: _('健康检查', 'Health Check', '健康檢查'),
servicesRawJson: _('查看原始 JSON', 'View Raw JSON', '查看原始 JSON'),
servicesNoHealth: _('Gateway 未运行或暂时无法返回健康数据。', 'The gateway is offline or health data is temporarily unavailable.', 'Gateway 未運行或暫時無法返回健康資料。'),
servicesMaintenance: _('维护操作', 'Maintenance', '維護操作'),
servicesInstall: _('安装 Hermes', 'Install Hermes', '安裝 Hermes'),
servicesRepairInstall: _('修复/重装 Hermes', 'Repair / Reinstall Hermes', '修復/重裝 Hermes'),
servicesUpgrade: _('升级 Hermes', 'Upgrade Hermes', '升級 Hermes'),
servicesUninstall: _('卸载 Hermes', 'Uninstall Hermes', '解除安裝 Hermes'),
servicesUninstallClean: _('卸载并清理配置', 'Uninstall and Clean Config', '解除安裝並清理配置'),
servicesOpenLogs: _('打开日志', 'Open Logs', '打開日誌'),
servicesOpenConfig: _('打开配置', 'Open Config', '打開配置'),
servicesOpenEnv: _('打开环境变量', 'Open Environment', '打開環境變數'),
servicesOpenSetup: _('返回安装向导', 'Open Setup', '返回安裝精靈'),
servicesEyebrow: _('HERMES AGENT · 服务中心', 'HERMES AGENT · SERVICES', 'HERMES AGENT · 服務中心'),
servicesReadyTag: _('就绪', 'READY', '就緒'),
servicesDefaultDistro: _('默认发行版', 'default distro', '預設發行版'),
servicesContainerCount: _('{n} 个容器', '{n} containers', '{n} 個容器'),
servicesConfirmInstall: _('确认安装 Hermes Agent将通过 uv 安装最新版本及 Web 扩展。', 'Install Hermes Agent? The latest version and Web extensions will be installed via uv.', '確認安裝 Hermes Agent將透過 uv 安裝最新版本及 Web 擴展。'),
servicesConfirmRepairInstall: _('确认修复/重装 Hermes Agent将保留配置并重新安装最新版本及 Web 扩展。', 'Repair / reinstall Hermes Agent? Config will be kept and the latest version with Web extensions will be reinstalled.', '確認修復/重裝 Hermes Agent將保留配置並重新安裝最新版本及 Web 擴展。'),
servicesConfirmUpgrade: _('确认升级 Hermes Agent升级期间可能短暂中断 Gateway。', 'Upgrade Hermes Agent? The gateway may be briefly interrupted during the upgrade.', '確認升級 Hermes Agent升級期間 Gateway 可能短暫中斷。'),
servicesConfirmUninstall: _('确认卸载 Hermes Agent保留现有配置文件。', 'Uninstall Hermes Agent? Existing config files will be kept.', '確認解除安裝 Hermes Agent會保留現有配置檔。'),
servicesConfirmUninstallClean: _('确认卸载 Hermes Agent 并删除配置文件?此操作不可撤销。', 'Uninstall Hermes Agent and remove config files? This cannot be undone.', '確認解除安裝 Hermes Agent 並刪除配置檔?此操作無法撤銷。'),
servicesUpgradeDone: _('Hermes Agent 升级完成', 'Hermes Agent upgraded', 'Hermes Agent 升級完成'),
servicesUninstallDone: _('Hermes Agent 已卸载', 'Hermes Agent uninstalled', 'Hermes Agent 已解除安裝'),
servicesMaintenanceStopGateway: _('正在停止 Gateway释放 Hermes 可执行文件...', 'Stopping gateway to release Hermes executable...', '正在停止 Gateway釋放 Hermes 可執行檔...'),
servicesMaintenanceGatewayStopped: _('Gateway 已停止', 'Gateway stopped', 'Gateway 已停止'),
servicesMaintenanceGatewayStopWarn: _('Gateway 停止失败,继续执行:{error}', 'Failed to stop gateway, continuing: {error}', 'Gateway 停止失敗,繼續執行:{error}'),
servicesMaintenanceRestartGateway: _('正在重新启动 Gateway...', 'Restarting gateway...', '正在重新啟動 Gateway...'),
servicesMaintenanceGatewayRestarted: _('Gateway 已重新启动', 'Gateway restarted', 'Gateway 已重新啟動'),
servicesMaintenanceGatewayRestartWarn: _('Gateway 重启失败,请稍后手动启动:{error}', 'Gateway restart failed; start it manually later: {error}', 'Gateway 重新啟動失敗,請稍後手動啟動:{error}'),
hermesConfigTitle: _('Hermes 配置', 'Hermes Config', 'Hermes 配置'),
hermesChannelsTitle: _('Hermes 渠道', 'Hermes Channels', 'Hermes 頻道'),
extensionsEyebrow: _('HERMES AGENT · 扩展', 'HERMES AGENT · EXTENSIONS', 'HERMES AGENT · 擴展'),
extensionsTitle: _('文档 / 插件 / 主题', 'Docs / Plugins / Themes', '文件 / 插件 / 主題'),
extensionsDesc: _('集中管理 Dashboard 扩展清单、视觉主题和使用洞察。', 'Manage dashboard extension manifests, visual themes and usage intelligence.', '集中管理 Dashboard 擴展清單、視覺主題和使用洞察。'),
extensionsRefresh: _('刷新', 'Refresh', '刷新'),
extensionsRescan: _('重扫插件', 'Rescan Plugins', '重掃插件'),
extensionsDocs: _('文档', 'Documentation', '文件'),
extensionsAnalytics: _('分析快照', 'Analytics snapshot', '分析快照'),
extensionsSessions: _('会话', 'Sessions', '會話'),
extensionsTokens: _('Tokens', 'Tokens', 'Tokens'),
extensionsCost: _('费用', 'Cost', '費用'),
extensionsThemes: _('Dashboard 主题', 'Dashboard themes', 'Dashboard 主題'),
extensionsActive: _('当前', 'active', '目前'),
extensionsNoThemes: _('未发现主题。', 'No themes discovered.', '未發現主題。'),
extensionsPlugins: _('Dashboard 插件', 'Dashboard plugins', 'Dashboard 插件'),
extensionsManifestCount: _('{n} 个清单', '{n} manifest(s)', '{n} 個清單'),
extensionsNoDescription: _('暂无描述', 'No description', '暫無描述'),
extensionsNoPlugins: _('未在 ~/.hermes/plugins 中发现 Dashboard 插件清单。', 'No dashboard plugin manifests found in ~/.hermes/plugins.', '未在 ~/.hermes/plugins 中發現 Dashboard 插件清單。'),
extensionsThemeSaved: _('Dashboard 主题已保存', 'Dashboard theme saved', 'Dashboard 主題已儲存'),
extensionsPluginsRescanned: _('插件清单已重扫', 'Plugin manifests rescanned', '插件清單已重掃'),
extensionsDocGettingStarted: _('快速开始', 'Getting Started', '快速開始'),
extensionsDocCron: _('Cron 自动化', 'Cron Automation', 'Cron 自動化'),
extensionsDocSkills: _('Skills', 'Skills', 'Skills'),
extensionsDocDashboard: _('Dashboard', 'Dashboard', 'Dashboard'),
comingSoonPhase2: _('即将在 Phase 2 中推出', 'Coming in Phase 2', '即將在 Phase 2 中推出'),
// ============================================================
// 心甜ClawXintian Claw· 产品宣传页
// ============================================================
xintianNavHome: _('产品首页', 'Home', '產品首頁', 'ホーム', '홈', 'Trang chủ', 'Inicio', 'Início', 'Главная', 'Accueil', 'Startseite'),
// Hero
xtHeroEyebrow: _('心甜Claw · 跨平台 AI 省心助手', 'Xintian Claw · Worry-free AI Companion', '心甜Claw · 跨平台 AI 省心助手', '心甜Claw · 手間いらずの AI コンパニオン', '心甜Claw · 근심 없는 AI 동반자'),
xtHeroTitleLead: _('WINDOWS 安装即用', 'READY FOR WINDOWS', 'WINDOWS 安裝即用', 'WINDOWS 用すぐに使える', 'WINDOWS에서 바로 사용'),
xtHeroTitleA: _('不只是对话,是会', 'Not just chat —', '不只是對話,是會'),
xtHeroTitleB: _('记得你', 'an AI that remembers you', '記得你'),
xtHeroTitleC: _('的 AI 管家', '.', '的 AI 管家'),
xtHeroSub: _(
'桌面客户端 + SaaS 后端 + 长期记忆 + 多渠道,一次安装,让 AI 真正长期为你干活。',
'Desktop client, SaaS backend, persistent memory, and multi-channel delivery — install once and let AI keep working for you.',
'桌面客戶端 + SaaS 後端 + 長期記憶 + 多頻道,一次安裝,讓 AI 真正長期為你幹活。',
),
xtCtaDownloadWin: _('下载 Windows 版', 'Download for Windows', '下載 Windows 版', 'Windows 版をダウンロード', 'Windows 버전 다운로드'),
xtCtaVisitSite: _('访问官网', 'Visit website', '訪問官網', '公式サイトへ', '공식 웹사이트'),
xtHeroPlatformWin: _('Windows 10 / 11 · x64', 'Windows 10 / 11 · x64', 'Windows 10 / 11 · x64'),
xtHeroPlatformRest: _('macOS / Linux 即将上线', 'macOS / Linux coming soon', 'macOS / Linux 即將上線', 'macOS / Linux 近日公開', 'macOS / Linux 곧 출시'),
xtHeroFreeTrial: _('预置 2 个免费 Agent', '2 free agents included', '預置 2 個免費 Agent', '2 つの無料エージェント付き', '무료 에이전트 2개 포함'),
// Features 区域
xtFeaturesEyebrow: _('核心能力', 'CORE CAPABILITIES', '核心能力'),
xtFeaturesTitle: _('八种能力,一个助手', 'Eight capabilities, one companion', '八種能力,一個助手'),
xtFeaturesSub: _(
'从聊天、记忆到定时自动化、多渠道通知——把 AI 做到生产可用。',
'From chat and memory to scheduled automation and multi-channel delivery — AI ready for real work.',
'從聊天、記憶到定時自動化、多頻道通知——把 AI 做到生產可用。',
),
// 8 个特性卡片
xtFeatChatTitle: _('流式对话 × 思维链', 'Streaming chat × CoT', '串流對話 × 思維鏈'),
xtFeatChatDesc: _('工具调用与思考过程全程可见Markdown / 代码 / 表格原生渲染。', 'Full visibility into tool calls and reasoning, with native Markdown / code / table rendering.', '工具調用與思考過程全程可見Markdown / 程式碼 / 表格原生渲染。'),
xtFeatAgentTitle: _('多智能体 Agent 体系', 'Multi-agent roster', '多智能體 Agent 體系'),
xtFeatAgentDesc: _('预置心甜 + 晴辰两个助手,独立人设与记忆,可随时自定义。', 'Bundled Xintian & Qingchen assistants, each with its own persona and memory — fully customizable.', '預置心甜 + 晴辰兩個助手,獨立人設與記憶,可隨時自定義。'),
xtFeatMemoryTitle: _('心甜智脑 · 长期记忆', 'Sweet Brain · Long-term memory', '心甜智腦 · 長期記憶'),
xtFeatMemoryDesc: _('事实 + 对话双层记忆,跨渠道共享,桌面说过的话微信也能想起来。', 'Dual-layer memory (facts + conversations) shared across channels — it remembers what you said, everywhere.', '事實 + 對話雙層記憶,跨頻道共享,桌面說過的話微信也能想起來。'),
xtFeatRagTitle: _('知识库 × RAG', 'Knowledge base × RAG', '知識庫 × RAG'),
xtFeatRagDesc: _('拖拽上传 PDF / Word / Markdown回答自动附带引用与跳转链接。', 'Drag-and-drop PDF / Word / Markdown — answers come with citations and jump links.', '拖放上傳 PDF / Word / Markdown回答自動附帶引用與跳轉連結。'),
xtFeatCronTitle: _('定时任务 × 后台任务', 'Scheduled & background tasks', '定時任務 × 背景任務'),
xtFeatCronDesc: _('到点自动跑,长调研一轮一轮来,进度条可暂停可恢复。', 'Cron-triggered runs and multi-round background research with pause/resume progress.', '到點自動跑,長調研一輪一輪來,進度條可暫停可恢復。'),
xtFeatSkillsTitle: _('技能中心 · SkillForge', 'Skill Hub · SkillForge', '技能中心 · SkillForge'),
xtFeatSkillsDesc: _('把常用流程打包成技能 @ 调用,内置抓取 / 日报 / 总结。', 'Package prompts into reusable skills — invoke with @, with built-in scraping, reporting, summarization.', '把常用流程打包成技能 @ 調用,內建抓取 / 日報 / 總結。'),
xtFeatChannelTitle: _('多消息渠道', 'Multi-channel delivery', '多訊息頻道'),
xtFeatChannelDesc: _('飞书 / 微信 / Telegram 等消息渠道互通,一套记忆跟你到每个对话窗。', 'Feishu / WeChat / Telegram all connected — one memory follows you to every conversation.', '飛書 / 微信 / Telegram 等訊息頻道互通,一套記憶跟你到每個對話窗。'),
xtFeatOfflineTitle: _('离线 × 本地优先', 'Offline × local-first', '離線 × 本地優先'),
xtFeatOfflineDesc: _('核心数据存本地 ~/.xintian-claw断网队列补发多后端容灾。', 'Core data stored locally at ~/.xintian-claw, offline queue + multi-backend failover.', '核心資料存本地 ~/.xintian-claw斷網佇列補發多後端容災。'),
// Compare 区域
xtCompareEyebrow: _('产品定位', 'POSITIONING', '產品定位'),
xtCompareTitle: _('同一份心甜 · 不同的打开方式', 'One Xintian, three ways to open it', '同一份心甜 · 不同的打開方式'),
xtCompareSub: _(
'根据你的身份选择最合适的入口:开发者用框架、工程师用 Python、普通用户用桌面版。',
'Pick the entrance that fits you: framework for developers, Python for engineers, desktop client for everyone else.',
'根據你的身份選擇最合適的入口:開發者用框架、工程師用 Python、普通使用者用桌面版。',
),
xtComparePosA: _('开发者 / 架构师', 'DEVELOPER / ARCHITECT', '開發者 / 架構師'),
xtCompareADesc: _('完整 Agent 框架源码,支持自托管、插件扩展,适合深度定制。', 'Full Agent framework source with self-hosting and plugin extensions — for deep customization.', '完整 Agent 框架原始碼,支援自託管、外掛擴充,適合深度自訂。'),
xtCompareAForWho: _('面向团队与工程师', 'For teams and engineers', '面向團隊與工程師'),
xtComparePosB: _('Python 开发者', 'PYTHON DEVELOPER', 'Python 開發者'),
xtCompareBDesc: _('轻量级 Agent 框架,工具调用能力强,一键 uv 安装,快速集成。', 'Lightweight Agent framework with strong tool-calling, one-click uv install, fast integration.', '輕量級 Agent 框架,工具呼叫能力強,一鍵 uv 安裝,快速整合。'),
xtCompareBForWho: _('面向 Python 工程师', 'For Python engineers', '面向 Python 工程師'),
xtComparePosC: _('所有普通用户', 'EVERYONE', '所有普通使用者'),
xtCompareCTitle: _('心甜Claw', 'Xintian Claw', '心甜Claw'),
xtCompareCDesc: _('Windows 双击安装即可用,内置 Agent 与记忆,不写一行代码也能上手。', 'Double-click install on Windows — agents and memory out of the box, zero code required.', 'Windows 雙擊安裝即可用,內建 Agent 與記憶,不寫一行程式碼也能上手。'),
xtCompareCForWho: _('面向日常使用者', 'For everyday users', '面向日常使用者'),
xtCompareRecommend: _('推荐', 'RECOMMENDED', '推薦'),
// CTA 区域
xtCtaEyebrow: _('立即开始', 'GET STARTED', '立即開始'),
xtCtaTitle: _('今天装上 · 明天就离不开', 'Install today, depend on it tomorrow', '今天裝上 · 明天就離不開'),
xtCtaSub: _(
'下载 Windows 安装包、双击运行,登录账号即可开始使用。无需配置 Python、无需命令行。',
'Download the Windows installer, double-click, sign in — ready to chat. No Python, no terminal.',
'下載 Windows 安裝包、雙擊執行,登入帳號即可開始使用。無需配置 Python、無需命令列。',
),
xtBulletInstall: _('一次安装 · 自动更新', 'One-click install · auto update', '一次安裝 · 自動更新'),
xtBulletLogin: _('微信 / 邮箱登录', 'WeChat / Email sign-in', '微信 / 信箱登入'),
xtBulletSync: _('多设备记忆同步', 'Multi-device memory sync', '多裝置記憶同步'),
xtBulletSafe: _('核心数据本地加密', 'Core data encrypted locally', '核心資料本地加密'),
xtCtaPrimary: _('立即下载 Windows 版', 'Download for Windows', '立即下載 Windows 版'),
xtCtaSecondary: _('了解更多', 'Learn more', '了解更多'),
xtCtaLinkLabel: _('官网', 'WEBSITE', '官網'),
// Preview 气泡
xtPreviewGreet: _('你好呀,今天想让我帮你处理什么?', 'Hi! How can I help you today?', '你好呀,今天想讓我幫你處理什麼?'),
xtPreviewUserAsk: _('帮我盯着这条产品线的日报', 'Track the daily report of this product line', '幫我盯著這條產品線的日報'),
xtPreviewAnswer1: _('好的,已为你创建「日报追踪」定时任务。', 'Got it — created a scheduled "Daily Report" task for you.', '好的,已為你建立「日報追蹤」定時任務。'),
xtPreviewAnswer2: _('每天 18:00 推送到飞书群,记忆也会同步。', 'Posts to the Feishu group at 18:00 daily, memory stays in sync.', '每天 18:00 推送到飛書群,記憶也會同步。'),
xtPreviewFoot: _('由 心甜智脑 长期记忆支持', 'Powered by Sweet Brain long-term memory', '由 心甜智腦 長期記憶支援'),
// Footer
xtFootBrand: _('心甜Claw · 跨平台 AI 省心助手', 'Xintian Claw · Worry-free AI Companion', '心甜Claw · 跨平台 AI 省心助手'),
xtFootHome: _('官网', 'Website', '官網'),
xtFootDownload: _('下载', 'Download', '下載'),
xtFootSupport: _('帮助中心', 'Help Center', '幫助中心'),
}