mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-31 05:10:14 +08:00
面向小白用户的产品定位重塑,从七大 UX 痛点逐一改造:
## U1 错误友好度(59 处改造)
- 新工具 src/lib/humanize-error.js:自动把后端原始错误(fetch failed、ENETUNREACH、ENOENT 等)
映射成「主行 + hint 行动建议 + 折叠技术详情」三段式结构化对象
- toast 组件升级支持 { message, hint, raw } 结构化入参,向后完全兼容
- 14 个 page 文件中所有 toast(t('xxx.failed') + ': ' + e, 'error') 替换为 toast(humanizeError(e, t(...)), 'error')
- common.js 加 error.* / errorHint.* 共 13 个新 i18n 键(11 语言):
网络/Gateway 未启动/命令缺失/权限/超时/限流/未找到/鉴权/服务繁忙/通用
## U2 致命操作强确认(14 处改造)
- showConfirm 升级支持结构化对象 { message, impact[], title, confirmText, cancelText, variant }
- 加 .modal-impact-list 红边样式(让小白看清楚删了会丢什么)
- 14 处致命操作改造,每处显示影响列表 + 红色「删除/移除/重置」按钮 + 灰色「保留」取消:
· agents.js 删除 Agent(动态显示 N 个绑定影响)
· channels.js 移除平台(动态算 N 个 binding)+ 移除 Agent binding
· memory.js 删除记忆文件
· services.js 卸载 Gateway(3 段影响)+ 删除备份
· models.js 批量删模型
· chat.js 删除会话 + 重置会话
· dreaming.js 重置梦境日记 + 清空 grounded 短期记忆
· agent-detail.js 解除渠道绑定
· cron.js 删除任务(OpenClaw + Hermes 两端)
- skills.js 原生 confirm() 改 showConfirm
- hermes-cron.js 原生 confirm() 改 showConfirm,顺手修末尾多余 `}` 的 syntax 残留
## U3-C 空状态 emoji+CTA(5 页面)
- 通用 .empty-state 组件(大 emoji + 标题 + 副本 + CTA 按钮 + 紧凑变体)
- agents.js: 🤖 + 「+ 新建 Agent」CTA
- memory.js: 🧠 + 「+ 新建记忆文件」CTA(紧凑版)
- cron.js: ⏰ + 「+ 新建任务」CTA
- skills.js: 🛠️ + 「技能商店」CTA(点击切 Tab)
- channels.js: 💬 + 紧凑提示
- CTA 巧妙复用页面顶部已有按钮的 click,零重复逻辑
## U3-B Dashboard 新手任务卡片
- 蓝紫渐变卡片,4 步任务自动检测:启动 Gateway / 添加模型 / 创建 Agent / 第一次聊天
- 已完成:✓ 徽章 + 删除线 + 60% 透明
- 未完成:编号徽章 + 蓝色 CTA 按钮跳对应页面
- 全部完成 → 庆祝条「🎉 全部搞定!」+ 关闭按钮
- localStorage 标记,用户主动关闭后永久隐藏
- 14 个新 i18n 键,文案小白化(Gateway 是「发动机」/ Agent 是「分身」/ 模型给 AI 装「大脑」)
## U3-A 术语表页(/glossary)
- 25 个核心术语 × 4 大分类(核心 8 / 模型 6 / 接入 5 / 进阶 6)
- 搜索框实时过滤 + Tab 切换分类 + 卡片网格布局
- 每条术语:「比喻 + 一句话」描述(避免循环引用)+ 「打开页面 →」CTA 直达配置
- 3 语言(zh-CN / en / zh-TW)完整翻译,其他 8 语言 fallback
- 双引擎(OpenClaw + Hermes)共用路由
- dashboard quick-actions 加「📖 面板术语」入口
## U3-D 术语 ⓘ tooltip
- 通用 src/lib/term-tooltip.js helper:termHelpHtml(id) + attachTermTooltips(root)
- 8 个高频术语精简表(OAuth / Webhook / Bot Token / API Key / Token / Context Window / Binding / Scope)
- channels.js 字段 label 智能匹配关键词自动追加 ⓘ(覆盖 8 个渠道全部敏感字段)
- models.js 添加/编辑 provider 的 API Key label 也加 ⓘ
- 点 ⓘ → 弹小型 modal 含解释 + 「打开术语表 →」CTA
- attachTermTooltips 内部去重,可安全多次调用
## 累计交付
- 4 个新文件(humanize-error.js / term-tooltip.js / glossary.js page / glossary.js i18n)
- 6 个升级文件(toast / modal / components.css / dashboard / channels / models)
- 14 个 page 错误 toast 友好化(59 处)
- 14 处致命操作强确认
- 5 处空状态升级 + Dashboard 新手卡片 + 术语表 + ⓘ tooltip
- 109 个新 i18n 键(11 语言)
- Build 全程通过
191 lines
23 KiB
JavaScript
191 lines
23 KiB
JavaScript
import { _ } from '../helper.js'
|
||
|
||
export default {
|
||
title: _('实时聊天', 'Live Chat', '實時聊天', 'ライブチャット', '실시간 채팅', 'Trò chuyện trực tiếp', 'Chat en vivo', 'Chat ao vivo', 'Живой чат', 'Chat en direct', 'Live-Chat'),
|
||
desc: _('与 AI Agent 实时对话', 'Chat with AI Agents in real-time', '與 AI Agent 實時對話', 'Agent とリアルタイムで会話', 'Agent와 실시간 대화', 'Trò chuyện với Agent theo thời gian thực', 'Chatear con el Agent en tiempo real', 'Conversar com o Agent em tempo real', 'Общение с агентом в реальном времени', 'Discuter avec l\'Agent en temps réel', 'Mit dem Agenten in Echtzeit chatten'),
|
||
sessionList: _('会话列表', 'Sessions', '對話列表', 'セッションリスト', '세션 목록'),
|
||
newSession: _('新建会话', 'New Session', '新建對話', '新しいセッション', '새 세션', 'Phiên mới', 'Nueva sesión', 'Nova sessão', 'Новая сессия', 'Nouvelle session', 'Neue Sitzung'),
|
||
chatTitle: _('聊天', 'Chat'),
|
||
loadingModels: _('加载模型中...', 'Loading models...', '載入模型中...', 'モデル読み込み中...', '모델 로딩 중...'),
|
||
shortcuts: _('快捷指令', 'Shortcuts'),
|
||
resetSession: _('重置会话', 'Reset Session', '重置對話'),
|
||
inputPlaceholder: _('输入消息,Enter 发送,/ 打开指令', 'Type a message, Enter to send, / for commands', '輸入訊息,Enter 發送,/ 開啟指令', 'メッセージを入力...', '메시지를 입력하세요...', 'Nhập tin nhắn...', 'Escribe un mensaje...', 'Digite uma mensagem...', 'Введите сообщение...', 'Tapez un message...', 'Nachricht eingeben...'),
|
||
uploadImage: _('上传图片', 'Upload Image', '上傳圖片'),
|
||
refreshModels: _('刷新模型列表', 'Refresh Models', '重新整理模型列表'),
|
||
send: _('发送', 'Send', '發送', '送信', '전송', 'Gửi', 'Enviar', 'Enviar', 'Отправить', 'Envoyer', 'Senden'),
|
||
stopGeneration: _('停止生成', 'Stop Generation'),
|
||
doubleClickRename: _('双击重命名', 'Double-click to rename', '雙擊重命名'),
|
||
delete: _('删除', 'Delete', '刪除'),
|
||
messagesCount: _('{count} 条消息', '{count} messages', '{count} 條訊息'),
|
||
justNow: _('刚刚', 'just now', '剛剛'),
|
||
minutesAgo: _('{n} 分钟前', '{n} min ago', '{n} 分鐘前'),
|
||
hoursAgo: _('{n} 小时前', '{n} hr ago', '{n} 小時前'),
|
||
daysAgo: _('{n} 天前', '{n} days ago'),
|
||
unknown: _('未知', 'Unknown'),
|
||
mainSession: _('主会话', 'Main Session', '主對話'),
|
||
mainDefault: _('main (默认)', 'main (default)', 'main (預設)'),
|
||
newAgent: _('+ 新建 Agent', '+ New Agent'),
|
||
sessionName: _('会话名称', 'Session Name', '對話名稱'),
|
||
sessionNamePlaceholder: _('例如:翻译助手', 'e.g. Translation Helper'),
|
||
enterSessionName: _('请输入会话名称', 'Please enter a session name', '請輸入對話名稱'),
|
||
createAgentHint: _('请在 Agent 管理页面创建新 Agent', 'Please create a new Agent in the Agent management page', '請在 Agent 管理頁面建立新 Agent'),
|
||
sessionCreated: _('会话已创建', 'Session created', '對話已建立'),
|
||
cannotDeleteMain: _('主会话不能删除', 'Cannot delete the main session', '主對話不能刪除'),
|
||
confirmDeleteSession: _('确定删除会话「{label}」?', 'Delete session "{label}"?', '確定刪除對話「{label}」?', 'このセッションを削除しますか?'),
|
||
deleteSessionTitle: _('删除会话「{label}」', 'Delete session "{label}"', '刪除對話「{label}」', 'セッション「{label}」を削除', '세션「{label}」 삭제', 'Xoá cuộc trò chuyện "{label}"', 'Eliminar sesión "{label}"', 'Excluir sessão "{label}"', 'Удалить сессию "{label}"', 'Supprimer la session "{label}"', 'Sitzung "{label}" löschen'),
|
||
deleteSessionBtn: _('删除', 'Delete', '刪除', '削除', '삭제', 'Xoá', 'Eliminar', 'Excluir', 'Удалить', 'Supprimer', 'Löschen'),
|
||
deleteSessionCancel: _('保留', 'Keep', '保留', '保持', '유지', 'Giữ lại', 'Conservar', 'Manter', 'Оставить', 'Conserver', 'Behalten'),
|
||
deleteSessionImpactHistory: _('会话所有聊天记录将永久删除', 'All chat history of this session will be permanently deleted', '對話所有聊天紀錄將永久刪除', 'セッションのすべてのチャット履歴が永久に削除されます', '세션의 모든 채팅 기록이 영구적으로 삭제됩니다', 'Toàn bộ lịch sử trò chuyện sẽ bị xoá vĩnh viễn', 'Todo el historial de chat de esta sesión se eliminará permanentemente', 'Todo o histórico de chat desta sessão será excluído permanentemente', 'Вся история чатов сессии будет удалена навсегда', 'Tout l\u2019historique de chat de cette session sera supprimé définitivement', 'Der gesamte Chatverlauf dieser Sitzung wird dauerhaft gelöscht'),
|
||
deleteSessionImpactCannotUndo: _('删除后无法恢复', 'Cannot be recovered after deletion', '刪除後無法復原', '削除後は復元できません', '삭제 후에는 복구할 수 없습니다', 'Sau khi xoá không thể khôi phục', 'No se podrá recuperar tras la eliminación', 'Não poderá ser recuperado após a exclusão', 'После удаления восстановить нельзя', 'Impossible à restaurer après suppression', 'Nach dem Löschen nicht wiederherstellbar'),
|
||
sessionDeleted: _('会话已删除', 'Session deleted', '對話已刪除'),
|
||
deleteFailed: _('删除失败: ', 'Delete failed: ', '刪除失敗: '),
|
||
confirmResetSession: _('确定要重置会话「{label}」吗?\n\n重置后将清空该会话的所有聊天记录,此操作不可撤销。', 'Reset session "{label}"?\n\nThis will clear all chat history for this session. This action cannot be undone.', '確定要重置對話「{label}」吗?\n\n重置后將清空該對話的所有聊天紀錄,此操作不可撤销。'),
|
||
resetSessionTitle: _('重置会话「{label}」', 'Reset session "{label}"', '重置對話「{label}」', 'セッション「{label}」をリセット', '세션「{label}」 초기화', 'Khôi phục cuộc trò chuyện "{label}"', 'Restablecer sesión "{label}"', 'Redefinir sessão "{label}"', 'Сбросить сессию "{label}"', 'Réinitialiser la session "{label}"', 'Sitzung "{label}" zurücksetzen'),
|
||
resetSessionBtn: _('重置', 'Reset', '重置', 'リセット', '초기화', 'Khôi phục', 'Restablecer', 'Redefinir', 'Сбросить', 'Réinitialiser', 'Zurücksetzen'),
|
||
resetSessionCancel: _('保留', 'Keep', '保留', '保持', '유지', 'Giữ lại', 'Conservar', 'Manter', 'Оставить', 'Conserver', 'Behalten'),
|
||
resetSessionImpactHistory: _('该会话所有聊天记录将清空,无法恢复', 'All chat history of this session will be cleared and cannot be recovered', '該對話所有聊天紀錄將清空,無法復原', 'このセッションのすべてのチャット履歴が消去され、復元できません', '이 세션의 모든 채팅 기록이 삭제되며 복구할 수 없습니다', 'Toàn bộ lịch sử trò chuyện sẽ bị xoá và không thể khôi phục', 'Se eliminará todo el historial de chat de esta sesión, sin posibilidad de recuperación', 'Todo o histórico de chat desta sessão será apagado e não poderá ser recuperado', 'Вся история чата сессии будет удалена без возможности восстановления', 'Tout l\u2019historique de chat de la session sera effacé sans possibilité de récupération', 'Der gesamte Chatverlauf dieser Sitzung wird gelöscht und kann nicht wiederhergestellt werden'),
|
||
resetSessionImpactContext: _('AI 将从零开始,不再记得之前的对话内容', 'The AI will start fresh and no longer remember previous conversation', 'AI 將從零開始,不再記得之前的對話內容', 'AI は最初からやり直し、以前の会話を覚えていません', 'AI는 처음부터 다시 시작하며 이전 대화를 기억하지 못합니다', 'AI sẽ bắt đầu lại từ đầu và không nhớ cuộc trò chuyện trước', 'La IA empezará de cero y no recordará la conversación previa', 'A IA começará do zero e não lembrará da conversa anterior', 'ИИ начнёт с нуля и забудет предыдущий разговор', 'L\u2019IA repartira de zéro et ne se souviendra plus de la conversation précédente', 'Die KI beginnt von vorne und erinnert sich nicht mehr an das vorherige Gespräch'),
|
||
sessionResetDone: _('会话已重置', 'Session has been reset', '對話已重置'),
|
||
resetFailed: _('重置失败: ', 'Reset failed: ', '重置失敗: '),
|
||
sessionRenamed: _('会话已重命名', 'Session renamed', '對話已重命名'),
|
||
gatewayNotReadySend: _('Gateway 未就绪,连接成功后再发送', 'Gateway not ready, will send after connection', 'Gateway 未就緒,連線成功后再發送'),
|
||
sendFailed: _('发送失败: ', 'Send failed: ', '發送失敗: ', '送信失敗', '전송 실패'),
|
||
usingTool: _('正在使用工具: {name}', 'Using tool: {name}'),
|
||
streamTimeout: _('输出超时,已自动结束', 'Output timed out, auto-ended', '輸出逾時,已自動結束'),
|
||
elapsedTime: _('{seconds}秒', '{seconds}s'),
|
||
generationStopped: _('生成已停止', 'Generation stopped'),
|
||
errorPrefix: _('错误: ', 'Error: ', '錯誤: '),
|
||
connectionRejected: _('连接被 Gateway 拒绝,请点击「修复并重连」', 'Connection rejected by Gateway, click "Fix & Reconnect"', '連線被 Gateway 拒絕,請点擊「修复並重連」'),
|
||
noMessages: _('还没有消息,开始聊天吧', 'No messages yet, start chatting!', '还沒有訊息,開始聊天吧', 'メッセージなし', '메시지 없음', 'Không có tin nhắn', 'Sin mensajes', 'Sem mensagens', 'Нет сообщений', 'Aucun message', 'Keine Nachrichten'),
|
||
imageHistoryHint: _('部分历史图片无法显示(Gateway 不保留图片原始数据,仅当前会话内可见)', 'Some history images cannot be displayed (Gateway does not retain original image data, only visible in current session)', '部分歷史圖片無法顯示(Gateway 不保留圖片原始資料,僅目前對話內可见)'),
|
||
loadHistoryFailed: _('加载历史失败: ', 'Failed to load history: ', '載入歷史失敗: '),
|
||
toolSuccess: _('成功', 'Success'),
|
||
toolFailed: _('失败', 'Failed', '失敗'),
|
||
toolParams: _('参数', 'Parameters', '參數'),
|
||
toolResult: _('结果', 'Result', '結果'),
|
||
noParams: _('无参数', 'No parameters', '無參數'),
|
||
noResult: _('无结果', 'No result', '無結果'),
|
||
tool: _('工具', 'Tool'),
|
||
file: _('文件', 'File', '檔案'),
|
||
compacting: _('正在整理上下文(Compaction)…', 'Compacting context…'),
|
||
aiProcessing: _('AI 正在处理…', 'AI is processing…', 'AI 正在處理…'),
|
||
aiThinking: _('AI 正在思考…', 'AI is thinking…', 'AI 正在思考…'),
|
||
aiPlanning: _('AI 正在规划…', 'AI is planning…', 'AI 正在規劃…'),
|
||
aiExecuting: _('正在执行: {title}', 'Executing: {title}', '正在執行: {title}'),
|
||
aiSearching: _('正在搜索…', 'Searching…', '正在搜尋…'),
|
||
aiAnalyzing: _('正在分析…', 'Analyzing…', '正在分析…'),
|
||
commandRunning: _('正在运行命令…', 'Running command…', '正在執行命令…'),
|
||
waitingApproval: _('等待操作批准…', 'Waiting for approval…', '等待操作批准…'),
|
||
responseTimeout: _('等待回复超时({seconds}秒无响应),请检查 OpenClaw 是否正常运行', 'Response timed out ({seconds}s no response). Please check if OpenClaw is running.', '等待回覆逾時({seconds}秒無回應),請檢查 OpenClaw 是否正常運行'),
|
||
stillWaiting: _('仍在等待回复…', 'Still waiting for response…', '仍在等待回覆…'),
|
||
remaining: _('剩余', 'Remaining', '剩餘'),
|
||
connectFailed: _('连接失败', 'Connection failed', '連線失敗'),
|
||
fixDoneReconnecting: _('修复完成,正在重连...', 'Fix done, reconnecting...', '修复完成,正在重連...'),
|
||
fixing: _('修复中...', 'Fixing...'),
|
||
writingConfig: _('正在写入配置...', 'Writing config...', '正在写入設定...'),
|
||
fixFailed: _('修复失败: ', 'Fix failed: ', '修复失敗: '),
|
||
imageOnly: _('仅支持上传图片', 'Only images are supported', '僅支援上傳圖片'),
|
||
readFileFailed: _('读取文件失败', 'Failed to read file', '讀取檔案失敗'),
|
||
noSessions: _('暂无会话', 'No sessions', '暫無對話', 'セッションなし', '세션 없음', 'Không có phiên', 'Sin sesiones', 'Sem sessões', 'Нет сессий', 'Aucune session', 'Keine Sitzungen'),
|
||
disconnected: _('连接已断开,正在重连...', 'Disconnected, reconnecting...', '連線已斷開,正在重連...', '切断', '연결 끊김', 'Đã ngắt kết nối', 'Desconectado', 'Desconectado', 'Отключено', 'Déconnecté', 'Getrennt'),
|
||
gatewayNotReady: _('Gateway 连接未就绪', 'Gateway Connection Not Ready', 'Gateway 連線未就緒'),
|
||
connectingGateway: _('正在连接 Gateway...', 'Connecting to Gateway...', '正在連線 Gateway...'),
|
||
fixAndReconnect: _('修复并重连', 'Fix & Reconnect', '修复並重連'),
|
||
gatewaySettings: _('Gateway 设置', 'Gateway Settings', 'Gateway 設定'),
|
||
firstUseHint: _('首次使用?请确保 Gateway 已启动,或点击「修复并重连」自动修复配置', 'First time? Make sure Gateway is running, or click "Fix & Reconnect" to auto-fix', '首次使用?請確保 Gateway 已啟動,或点擊「修复並重連」自動修复設定'),
|
||
guideTitle: _('你正在使用「实时聊天」', 'You are using Live Chat', '你正在使用「實時聊天」'),
|
||
guideDesc: _('此页面通过 <b>Gateway</b> 连接 OpenClaw 的 AI Agent,对话由你部署的 OpenClaw 服务处理。', 'This page connects to your OpenClaw AI Agent via <b>Gateway</b>. Conversations are processed by your deployed OpenClaw service.', '此頁面通過 <b>Gateway</b> 連線 OpenClaw 的 AI Agent,對話由你部署的 OpenClaw 服務處理。'),
|
||
guideHint: _('如需使用 ClawPanel 内置 AI 助手(独立于 OpenClaw),请前往左侧菜单「AI 助手」页面。', 'To use ClawPanel\'s built-in AI Assistant (independent of OpenClaw), go to "AI Assistant" in the left menu.', '如需使用 ClawPanel 內置 AI 助手(獨立於 OpenClaw),請前往左側菜單「AI 助手」頁面。'),
|
||
guideClose: _('知道了', 'Got it'),
|
||
defaultSuffix: _('(默认)', '(default)', '(預設)'),
|
||
cmdSession: _('会话', 'Session', '對話'),
|
||
cmdModel: _('模型', 'Model'),
|
||
cmdThinkMode: _('思考模式', 'Think Mode'),
|
||
cmdFastMode: _('快速模式', 'Fast Mode'),
|
||
cmdVerbose: _('详细/推理', 'Verbose/Reasoning', '詳細/推理'),
|
||
cmdInfo: _('信息', 'Info', '資訊'),
|
||
cmdNewSession: _('新建会话', 'New session', '新建對話'),
|
||
cmdResetSession: _('重置当前会话', 'Reset current session', '重置目前對話'),
|
||
cmdStopGen: _('停止生成', 'Stop generation'),
|
||
cmdSwitchModel: _('切换模型(输入模型名)', 'Switch model (enter name)', '切換模型(輸入模型名)'),
|
||
cmdListModels: _('查看可用模型', 'List available models'),
|
||
cmdModelStatus: _('当前模型状态', 'Current model status', '目前模型狀態'),
|
||
cmdThinkOff: _('关闭深度思考', 'Disable deep thinking', '關閉深度思考'),
|
||
cmdThinkLow: _('轻度思考', 'Light thinking'),
|
||
cmdThinkMedium: _('中度思考', 'Medium thinking'),
|
||
cmdThinkHigh: _('深度思考', 'Deep thinking'),
|
||
cmdFastToggle: _('切换快速模式(开/关)', 'Toggle fast mode (on/off)', '切換快速模式(開/關)'),
|
||
cmdFastOn: _('开启快速模式(低延迟)', 'Enable fast mode (low latency)', '開啟快速模式(低延遲)'),
|
||
cmdFastOff: _('关闭快速模式', 'Disable fast mode', '關閉快速模式'),
|
||
cmdVerboseOff: _('关闭详细模式', 'Disable verbose mode', '關閉詳細模式'),
|
||
cmdVerboseLow: _('低详细度', 'Low verbosity', '低詳細度'),
|
||
cmdVerboseHigh: _('高详细度', 'High verbosity', '高詳細度'),
|
||
cmdReasoningOff: _('关闭推理模式', 'Disable reasoning mode', '關閉推理模式'),
|
||
cmdReasoningLow: _('轻度推理', 'Light reasoning'),
|
||
cmdReasoningMedium: _('中度推理', 'Medium reasoning'),
|
||
cmdReasoningHigh: _('深度推理', 'Deep reasoning'),
|
||
cmdHelp: _('帮助信息', 'Help', '幫助資訊'),
|
||
cmdStatus: _('系统状态', 'System status', '系統狀態'),
|
||
cmdContext: _('上下文信息', 'Context info', '上下文資訊'),
|
||
workspace: _('工作区', 'Workspace', '工作區'),
|
||
openWorkspace: _('打开工作区文件面板', 'Open workspace files panel', '打開工作區檔案面板'),
|
||
workspaceFiles: _('工作区文件', 'Workspace Files', '工作區檔案'),
|
||
coreFiles: _('核心文件', 'Core Files', '核心檔案'),
|
||
workspaceExplorer: _('工作区浏览', 'Workspace Explorer', '工作區瀏覽'),
|
||
selectWorkspaceFile: _('选择一个工作区文件开始查看或编辑', 'Select a workspace file to view or edit', '選擇一個工作區檔案開始檢視或編輯'),
|
||
reloadWorkspaceFile: _('重新加载', 'Reload file', '重新載入'),
|
||
previewWorkspaceFile: _('预览', 'Preview', '預覽'),
|
||
editWorkspaceFile: _('编辑', 'Edit', '編輯'),
|
||
workspaceEmptyState: _('当前 Agent 工作区已就绪,可从左侧选择文件', 'Workspace ready. Pick a file from the left to start.', '目前 Agent 工作區已就緒,可從左側選擇檔案'),
|
||
workspaceLoadFailed: _('加载工作区失败', 'Failed to load workspace', '載入工作區失敗'),
|
||
workspaceOpenFailed: _('打开文件失败', 'Failed to open file', '開啟檔案失敗'),
|
||
workspaceUnavailable: _('工作区暂不可用', 'Workspace is unavailable', '工作區暫時不可用'),
|
||
workspaceNoCoreFiles: _('暂无可展示的核心文件', 'No core files available', '暫無可展示的核心檔案'),
|
||
workspaceTreeEmpty: _('当前目录为空', 'This folder is empty', '目前資料夾為空'),
|
||
workspaceDraftHint: _('该文件尚不存在,保存后会在当前 Agent 工作区中创建', 'This file does not exist yet. Saving will create it in the current Agent workspace.', '此檔案尚不存在,儲存後會在目前 Agent 工作區中建立'),
|
||
confirmDiscardWorkspaceChanges: _('当前文件有未保存修改,确定继续吗?', 'You have unsaved changes in the current file. Continue?', '目前檔案有未儲存修改,確定繼續嗎?'),
|
||
workspaceFileCreated: _('工作区文件已创建', 'Workspace file created', '工作區檔案已建立'),
|
||
hostedAgent: _('托管 Agent', 'Hosted Agent'),
|
||
hostedBadge: _('托管', 'Hosted'),
|
||
taskGoal: _('任务目标', 'Task Goal', '任務目標'),
|
||
taskGoalPlaceholder: _('例如:持续优化此仓库代码质量,直到没有可改进的地方', 'e.g. Continuously optimize code quality until no improvements remain', '例如:持續最佳化此倉庫代碼質量,直到沒有可改進的地方'),
|
||
hostedHint: _('托管 Agent 会持续引导 OpenClaw 完成此目标。模型使用 <a href="#/assistant" class="hosted-agent-link">AI 助手</a> 的配置。', 'Hosted Agent will continuously guide OpenClaw to complete this goal. Uses <a href="#/assistant" class="hosted-agent-link">AI Assistant</a> model config.', '托管 Agent 會持續引导 OpenClaw 完成此目標。模型使用 <a href="#/assistant" class="hosted-agent-link">AI 助手</a> 的設定。'),
|
||
maxReplies: _('最大回复次数', 'Max Replies', '最大回覆次數'),
|
||
timerAutoStop: _('定时自动停止', 'Auto-stop Timer', '定時自動停止'),
|
||
startHosted: _('启动托管', 'Start Hosted', '啟動托管'),
|
||
stopHosted: _('停止托管', 'Stop Hosted'),
|
||
ready: _('就绪', 'Ready', '就緒'),
|
||
hostedNotEnabled: _('未启用', 'Not Enabled', '未啟用'),
|
||
hostedRunning: _('运行中', 'Running', '執行中'),
|
||
hostedWaiting: _('等待回复', 'Waiting for Reply', '等待回覆'),
|
||
hostedPaused: _('已暂停', 'Paused', '已暫停'),
|
||
hostedErrorStatus: _('异常', 'Error', '異常'),
|
||
hostedStandby: _('待命', 'Standby'),
|
||
hostedStatusError: _('错误: {msg}', 'Error: {msg}', '錯誤: {msg}'),
|
||
hostedStatusRunning: _('运行中 · 剩余 {n} 步', 'Running · {n} steps remaining', '執行中 · 剩餘 {n} 步'),
|
||
hostedRemaining: _('剩余 {time}', '{time} remaining', '剩餘 {time}'),
|
||
enterTaskGoal: _('请输入任务目标', 'Please enter a task goal', '請輸入任務目標'),
|
||
hostedGatewayNotReady: _('Gateway 未就绪,暂不启动', 'Gateway not ready, cannot start', 'Gateway 未就緒,暂不啟動'),
|
||
hostedStarted: _('托管 Agent 已启动', 'Hosted Agent started', '托管 Agent 已啟動'),
|
||
hostedStopped: _('托管 Agent 已停止', 'Hosted Agent stopped'),
|
||
hostedAutoStopSignal: _('OpenClaw 回复包含完成信号,自动停止', 'OpenClaw reply contains completion signal, auto-stopping', 'OpenClaw 回覆包含完成信號,自動停止'),
|
||
hostedTimerExpired: _('定时 {min} 分钟已到,自动停止', 'Timer expired ({min} min), auto-stopping', '定時 {min} 分鐘已到,自動停止'),
|
||
hostedNeedIntervention: _('需要人工介入: {reason}', 'Manual intervention needed: {reason}'),
|
||
hostedGwNotReady: _('Gateway 未就绪', 'Gateway not ready', 'Gateway 未就緒'),
|
||
hostedErrorThreshold: _('连续错误超过阈值', 'Consecutive errors exceeded threshold', '連續錯誤超過阈值'),
|
||
hostedModelNotConfigured: _('托管 Agent 未配置模型(请在 AI 助手页面配置)', 'Hosted Agent model not configured (please configure in AI Assistant page)', '托管 Agent 未設定模型(請在 AI 助手頁面設定)'),
|
||
hostedModelUrlInvalid: _('托管 Agent 模型地址无效,请在 AI 助手页面填写完整的 http(s):// 地址', 'Hosted Agent model URL is invalid. Please enter a full http(s):// URL on the AI Assistant page.', '托管 Agent 模型位址無效,請在 AI 助手頁面填寫完整的 http(s):// 位址'),
|
||
hostedApiError: _('API 错误 {code}', 'API Error {code}', 'API 錯誤 {code}'),
|
||
hostedPrefix: _('[托管 Agent] ', '[Hosted Agent] '),
|
||
hostedContextSummary: _('[上下文摘要 - 已压缩 {n} 条历史]', '[Context Summary - compressed {n} history entries]', '[上下文摘要 - 已壓縮 {n} 條歷史]'),
|
||
compactionHistory: _('压缩历史', 'Compaction History', '壓縮歷史'),
|
||
compactionLoading: _('加载压缩检查点...', 'Loading compaction checkpoints...', '載入壓縮檢查點...'),
|
||
compactionEmpty: _('该会话暂无压缩检查点', 'No compaction checkpoints for this session', '該對話暫無壓縮檢查點'),
|
||
compactionBranch: _('分支', 'Branch', '分支'),
|
||
compactionRestore: _('恢复', 'Restore', '恢復'),
|
||
compactionBranchDone: _('已从检查点创建分支会话', 'Branch session created from checkpoint', '已從檢查點建立分支對話'),
|
||
compactionRestoreDone: _('已恢复到检查点', 'Restored to checkpoint', '已恢復到檢查點'),
|
||
compactionConfirmRestore: _('确定要恢复到此检查点吗?当前会话内容将被替换。', 'Restore to this checkpoint? Current session content will be replaced.', '確定要恢復到此檢查點嗎?目前對話內容將被替換。'),
|
||
compactionUnsupported: _('当前 Gateway 版本不支持压缩历史功能,请升级到 OpenClaw 2026.4.9+', 'Compaction history requires OpenClaw 2026.4.9+', '目前 Gateway 版本不支援壓縮歷史功能,請升級到 OpenClaw 2026.4.9+'),
|
||
}
|