mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-19 23:29:51 +08:00
用户将 C:\...\image.png 等本地路径粘贴到晴辰助手输入框,消息发送到 OpenAI 兼容 API 时触发 "Only base64, http or https URLs are supported" 错误;由于历史上下文包含坏消息,后续对话会继续报错形成循环。 三处修复: 1. paste 事件:如果剪贴板是纯文本且为本地路径(Windows/Unix/file://), 阻止默认粘贴并 toast 提示用户 2. drop 事件:若拖入的是路径文本(无 files),同样拦截并提示 3. buildMessageContent:调用 sanitizeUserTextForApi,把  这类 markdown 图片替换为占位文本 "[本地文件(已忽略)]", 让已经输入路径的老会话也能自愈,不再循环报错 路径识别支持: - Windows 绝对路径(C:\... / D:/...) - macOS/Linux 常见路径前缀(/Users /home /mnt /media /opt /tmp /var /root) - file:// URL 翻译覆盖 11 种语言(zh-CN/zh-TW/en/ja/ko/vi/es/pt/ru/fr/de)。 Refs: #226
296 lines
37 KiB
JavaScript
296 lines
37 KiB
JavaScript
import { _ } from '../helper.js'
|
||
|
||
export default {
|
||
modeChat: _('聊天', 'Chat', '', 'チャット', '채팅', 'Trò chuyện'),
|
||
modeChatDesc: _('纯对话,不使用工具', 'Pure conversation, no tools', '純對話,不使用工具', '会話のみ、ツール不使用', '대화만, 도구 미사용', 'Chỉ trò chuyện, không dùng công cụ'),
|
||
modePlan: _('规划', 'Plan', '規劃', 'プランニング', '플래닝', 'Lập kế hoạch'),
|
||
modePlanDesc: _('AI 只读分析,工具仅查看', 'AI read-only analysis, tools view-only', 'AI 唯讀分析,工具僅查看', 'AI 読み取り専用分析、ツールは閲覧のみ', 'AI 읽기 전용 분석, 도구는 조회만', 'AI chỉ phân tích, công cụ chỉ để xem'),
|
||
modeExecute: _('执行', 'Execute', '執行', '実行', '실행', 'Thực thi'),
|
||
modeExecuteDesc: _('允许执行命令和修改文件', 'Allow running commands and modifying files', '允許執行命令和修改檔案', 'コマンド実行とファイル変更を許可', '명령 실행 및 파일 변경 허용', 'Cho phép chạy lệnh và sửa tệp'),
|
||
modeUnlimited: _('无限', 'Unlimited', '無限', '無制限', '무제한', 'Không giới hạn'),
|
||
modeUnlimitedDesc: _('跳过危险确认,全自动执行', 'Skip danger confirmations, fully automated', '略過危險確認,全自動執行', '危険確認をスキップ、全自動実行', '위험 확인 건너뛰기, 완전 자동 실행', 'Bỏ qua xác nhận nguy hiểm, tự động hoàn toàn'),
|
||
apiHintOpenai: _('兼容 OpenAI 接口(大多数中转站、Ollama 等)', 'OpenAI compatible API (most proxies, Ollama, etc.)', '相容 OpenAI 介面(大多數中轉站、Ollama 等)'),
|
||
apiHintAnthropic: _('Anthropic Claude 原生接口', 'Anthropic Claude native API', 'Anthropic Claude 原生介面'),
|
||
apiHintGemini: _('Google Gemini 原生接口', 'Google Gemini native API', 'Google Gemini 原生介面'),
|
||
apiBasePlaceholderOpenai: _('https://api.openai.com/v1 或中转站地址', 'https://api.openai.com/v1 or proxy URL', 'https://api.openai.com/v1 或中轉站位址'),
|
||
apiKeyPlaceholderOpenai: _('sk-... 或中转站密钥', 'sk-... or proxy key', 'sk-... 或中轉站金鑰'),
|
||
defaultName: _('晴辰助手', 'Assistant', '', 'AI アシスタント', 'AI 어시스턴트', 'Trợ lý AI', 'Asistente IA', 'Assistente IA', 'ИИ-ассистент', 'Assistant IA', 'KI-Assistent'),
|
||
defaultPersonality: _('专业、友好、乐于助人', 'Professional, friendly, and helpful', '專業、友好、樂於助人', 'プロフェッショナル、フレンドリー、親切'),
|
||
contextSavedToast: _('已保存诊断上下文,可从侧边栏进入「{assistant}」继续处理', 'Diagnostic context saved. Open "{assistant}" from the sidebar to continue.', '已儲存診斷上下文,可從側邊欄進入「{assistant}」繼續處理', '診断コンテキストを保存しました。サイドバーの「{assistant}」から続けて処理できます。', '진단 컨텍스트를 저장했습니다. 사이드바의 "{assistant}"에서 이어서 처리하세요.', 'Đã lưu ngữ cảnh chẩn đoán. Hãy mở "{assistant}" từ thanh bên để tiếp tục.'),
|
||
dragHint: _('长按可拖动', 'Hold to drag', '長按可拖動', '長押しでドラッグできます', '길게 눌러 드래그', 'Nhấn giữ để kéo'),
|
||
skillCheckConfig: _('检查配置', 'Check Config', '檢查設定'),
|
||
skillCheckConfigDesc: _('检查 OpenClaw 配置文件是否正确', 'Check if OpenClaw config files are correct', '檢查 OpenClaw 設定檔案是否正確'),
|
||
skillDiagnoseGateway: _('诊断 Gateway', 'Diagnose Gateway', '诊斷 Gateway'),
|
||
skillDiagnoseGatewayDesc: _('诊断 Gateway 运行状态', 'Diagnose Gateway running status', '诊斷 Gateway 執行狀態'),
|
||
skillBrowseDir: _('浏览目录', 'Browse Directory', '瀏覽目錄'),
|
||
skillBrowseDirDesc: _('浏览 OpenClaw 配置目录结构', 'Browse OpenClaw config directory structure', '瀏覽 OpenClaw 設定目錄結構'),
|
||
skillCheckEnv: _('检查环境', 'Check Environment', '檢查環境'),
|
||
skillCheckEnvDesc: _('检查系统环境是否满足要求', 'Check if system meets requirements', '檢查系統環境是否滿足要求'),
|
||
skillAnalyzeLogs: _('分析日志', 'Analyze Logs', '分析日誌'),
|
||
skillAnalyzeLogsDesc: _('分析最近的日志,找出问题', 'Analyze recent logs to find issues', '分析最近的日誌,找出問題'),
|
||
skillFixCommon: _('一键修复', 'Auto Fix', '一鍵修复'),
|
||
skillFixCommonDesc: _('自动检测并修复常见问题', 'Auto-detect and fix common issues', '自動檢測並修复常见問題'),
|
||
skillReportBug: _('反馈 Bug', 'Report Bug'),
|
||
skillReportBugDesc: _('整理成标准 GitHub Issue', 'Format as a standard GitHub Issue', '整理成標準 GitHub Issue'),
|
||
skillPrAssistant: _('PR 助手', 'PR Assistant'),
|
||
skillPrAssistantDesc: _('帮你走一遍 PR 流程', 'Walk through the PR process', '幫你走一遍 PR 流程'),
|
||
skillSkillsManager: _('Skills 管理', 'Skills Manager'),
|
||
skillSkillsManagerDesc: _('管理 OpenClaw 的 Skills', 'Manage OpenClaw Skills'),
|
||
// Hermes 专属 Skills
|
||
skillHermesChat: _('终端对话', 'Terminal Chat', '終端對話'),
|
||
skillHermesChatDesc: _('在终端中启动 Hermes 交互式对话', 'Start Hermes interactive chat in terminal', '在終端中啟動 Hermes 交互式對話'),
|
||
skillHermesDiagnose: _('诊断 Hermes', 'Diagnose Hermes', '診斷 Hermes'),
|
||
skillHermesDiagnoseDesc: _('检查 Hermes Agent 运行状态', 'Check Hermes Agent status', '檢查 Hermes Agent 運行狀態'),
|
||
skillHermesConfig: _('检查配置', 'Check Config', '檢查配置'),
|
||
skillHermesConfigDesc: _('检查 Hermes 配置文件是否正确', 'Check if Hermes config is correct', '檢查 Hermes 配置檔案是否正確'),
|
||
skillHermesBrowseDir: _('浏览目录', 'Browse Directory', '瀏覽目錄'),
|
||
skillHermesBrowseDirDesc: _('浏览 Hermes 配置目录结构', 'Browse Hermes config directory structure', '瀏覽 Hermes 配置目錄結構'),
|
||
skillHermesUpgrade: _('升级 Hermes', 'Upgrade Hermes', '升級 Hermes'),
|
||
skillHermesUpgradeDesc: _('升级到最新版本', 'Upgrade to the latest version', '升級到最新版本'),
|
||
skillHermesLogs: _('分析日志', 'Analyze Logs', '分析日誌'),
|
||
skillHermesLogsDesc: _('分析 Hermes 最近的日志', 'Analyze recent Hermes logs', '分析 Hermes 最近的日誌'),
|
||
skillHermesUninstall: _('卸载 Hermes', 'Uninstall Hermes', '解除安裝 Hermes'),
|
||
skillHermesUninstallDesc: _('完全卸载 Hermes Agent', 'Completely uninstall Hermes Agent', '完全解除安裝 Hermes Agent'),
|
||
soulFileSoul: _('核心人格', 'Core persona'),
|
||
soulFileIdentity: _('身份信息', 'Identity info', '身份資訊'),
|
||
soulFileUser: _('用户偏好', 'User preferences', '使用者偏好'),
|
||
soulFileAgents: _('Agent 信息', 'Agent info', 'Agent 資訊'),
|
||
soulFileTools: _('工具描述', 'Tool descriptions'),
|
||
soulFileMemory: _('记忆文件', 'Memory files', '記憶檔案'),
|
||
soulLoaded: _('已加载 {loaded}/{total} 个文件({size})', 'Loaded {loaded}/{total} files ({size})', '已載入 {loaded}/{total} 個檔案({size})'),
|
||
soulMemoryDaily: _('每日记忆', 'Daily memory', '每日記憶'),
|
||
soulMemoryCount: _('{count} 条', '{count} entries', '{count} 條'),
|
||
sendQueue: _('发送队列', 'Send Queue', '發送佇列'),
|
||
clickToEdit: _('点击编辑', 'Click to edit', '点擊編輯'),
|
||
edit: _('编辑', 'Edit', '編輯'),
|
||
sendNow: _('立即发送', 'Send Now', '立即發送'),
|
||
imageTooLarge: _('图片太大,请选择小于 10MB 的图片', 'Image too large, please select one under 10MB', '圖片太大,請選擇小於 10MB 的圖片'),
|
||
imageMessage: _('(图片消息)', '(image message)', '(圖片訊息)'),
|
||
image: _('图片', 'Image', '圖片'),
|
||
localPathBlocked: _(
|
||
'请直接粘贴或拖拽图片本身,而不是本地文件路径',
|
||
'Please paste or drag the image itself, not a local file path',
|
||
'請直接貼上或拖曳圖片本身,而不是本地檔案路徑',
|
||
'画像自体を貼り付けるかドラッグしてください(ローカルパスは不可)',
|
||
'이미지 자체를 붙여넣거나 드래그하세요 (로컬 경로 불가)',
|
||
'Vui lòng dán hoặc kéo hình ảnh, không phải đường dẫn tệp cục bộ',
|
||
'Pegue o arrastre la imagen en sí, no una ruta de archivo local',
|
||
'Cole ou arraste a imagem em si, não um caminho de arquivo local',
|
||
'Пожалуйста, вставьте или перетащите само изображение, а не локальный путь',
|
||
'Veuillez coller ou faire glisser l\'image elle-même, pas un chemin local',
|
||
'Bitte fügen Sie das Bild selbst ein oder ziehen Sie es, keinen lokalen Pfad',
|
||
),
|
||
localPathSanitized: _('[本地文件(已忽略,请直接上传图片)]', '[local file (ignored — please upload the image)]', '[本地檔案(已忽略,請直接上傳圖片)]'),
|
||
newSession: _('新建会话', 'New Session', '新建對話', '新しいセッション', '새 세션', 'Phiên mới', 'Nueva sesión', 'Nova sessão', 'Новая сессия', 'Nouvelle session', 'Neue Sitzung'),
|
||
deleteSession: _('删除会话', 'Delete Session', '刪除對話', 'セッション削除', '세션 삭제', 'Xóa phiên', 'Eliminar sesión', 'Excluir sessão', 'Удалить сессию', 'Supprimer la session', 'Sitzung löschen'),
|
||
noSessions: _('暂无会话', 'No sessions', '暫無對話', 'セッションなし', '세션 없음', 'Không có phiên', 'Sin sesiones', 'Sem sessões', 'Нет сессий', 'Aucune session', 'Keine Sitzungen'),
|
||
confirmDeleteSession: _('确定删除这个会话吗?', 'Delete this session?', '確定刪除这個對話吗?', 'このセッションを削除しますか?', '이 세션을 삭제하시겠습니까?'),
|
||
sessionList: _('会话列表', 'Sessions', '對話列表', 'セッションリスト', '세션 목록', 'Danh sách phiên', 'Lista de sesiones', 'Lista de sessões', 'Список сессий', 'Liste des sessions', 'Sitzungsliste'),
|
||
errConfigFirst: _('请先在设置中配置 API', 'Please configure the API in Settings first', '請先在設定中設定 API', '先に設定で API を設定してください', '먼저 설정에서 API를 설정하세요'),
|
||
errTimeout: _('请求超时', 'Request timed out', '請求逾時', 'リクエストタイムアウト', '요청 타임아웃'),
|
||
errStreamTimeout: _('流式响应超时({seconds}s 无数据),连接可能已断开', 'Streaming response timed out ({seconds}s no data), connection may be lost', '流式回應逾時({seconds}s 無資料),連線可能已斷開'),
|
||
errHomeUnavailable: _('无法获取主目录', 'Unable to determine home directory', '無法取得主目錄', 'ホームディレクトリを取得できません', '홈 디렉터리를 확인할 수 없습니다', 'Không thể xác định thư mục home'),
|
||
errWorkspaceMissing: _('Agent 工作区不存在: {agentId}', 'Agent workspace does not exist: {agentId}', 'Agent 工作區不存在: {agentId}', 'Agent ワークスペースが存在しません: {agentId}', 'Agent 작업공간이 없습니다: {agentId}', 'Workspace của Agent không tồn tại: {agentId}'),
|
||
errInvalidResponse: _('AI 未返回有效响应', 'AI did not return a valid response', 'AI 未返回有效回應', 'AI から有効な応答が返されませんでした', 'AI가 유효한 응답을 반환하지 않았습니다', 'AI không trả về phản hồi hợp lệ'),
|
||
toolRunCmd: _('执行命令', 'Run command', '執行命令'),
|
||
toolReadFile: _('读取文件', 'Read file', '讀取檔案'),
|
||
toolWriteFile: _('写入文件', 'Write file', '写入檔案'),
|
||
toolListDir: _('列出目录', 'List directory', '列出目錄'),
|
||
toolSysInfo: _('系统信息', 'System info', '系統資訊'),
|
||
toolCheckPort: _('端口检查', 'Check port', '連接埠檢查'),
|
||
toolProcessList: _('进程列表', 'Process list', '處理程序列表'),
|
||
toolWebSearch: _('网页搜索', 'Web search', '網頁搜尋'),
|
||
toolWebSearchDesc: _('搜索网页获取信息', 'Search the web for information', '搜尋網頁取得資訊'),
|
||
toolSkillHubSearch: _('搜索 SkillHub', 'Search SkillHub', '搜尋 SkillHub'),
|
||
toolSkillHubInstall: _('安装 Skill', 'Install Skill', '安裝 Skill'),
|
||
toolInstallDep: _('安装依赖', 'Install dependency', '安裝依赖'),
|
||
toolFileOps: _('文件操作', 'File Operations', '檔案操作'),
|
||
toolFileOpsDesc: _('读写文件和目录', 'Read/write files and directories', '讀写檔案和目錄'),
|
||
toolTerminal: _('终端命令', 'Terminal', '終端命令'),
|
||
toolTerminalDesc: _('执行系统命令', 'Execute system commands', '執行系統命令'),
|
||
toolSkillsList: _('技能列表', 'Skills list'),
|
||
toolSkillsCheck: _('技能检查', 'Skills check', '技能檢查'),
|
||
toolSkillInfo: _('技能详情', 'Skill details', '技能詳情'),
|
||
toolFilterAll: _('全部', 'All', '', 'すべて', '전체'),
|
||
toolNoDesc: _('无描述', 'No description', '無描述', '説明なし', '설명 없음'),
|
||
toolsAlwaysAvailable: _('始终可用', 'Always available', '始終可用', '常に利用可能'),
|
||
toolsHint: _('勾选要启用的工具类别', 'Check the tool categories to enable', '勾選要啟用的工具類別', '有効にするツールカテゴリを選択'),
|
||
toolExecuting: _('正在执行...', 'Executing...', '正在執行...', '実行中...', '실행 중...', 'Đang thực thi...', 'Ejecutando...', 'Executando...', 'Выполняется...', 'Exécution...', 'Wird ausgeführt...'),
|
||
toolDone: _('执行完成', 'Done', '執行完成', '実行完了', '실행 완료', 'Thực thi hoàn tất', 'Ejecución completada', 'Execução concluída', 'Выполнение завершено', 'Exécution terminée', 'Ausführung abgeschlossen'),
|
||
toolDenied: _('用户拒绝执行', 'User denied execution', '使用者拒絕執行', 'ユーザーが実行を拒否', '사용자가 실행 거부'),
|
||
toolExecFail: _('执行失败', 'Execution failed', '執行失敗', '実行失敗', '실행 실패'),
|
||
toolInstallSuccess: _('安装成功', 'Installed successfully', '安裝成功'),
|
||
toolInstallFail: _('安装失败', 'Installation failed', '安裝失敗'),
|
||
toolNoSkillFound: _('未找到该技能', 'Skill not found', '未找到該技能'),
|
||
toolUnknown: _('未知工具', 'Unknown tool', '', '不明なツール'),
|
||
toolRejected: _('用户拒绝了此操作', 'User rejected this operation', '使用者拒絕了此操作', 'ユーザーがこの操作を拒否しました', '사용자가 이 작업을 거부했습니다'),
|
||
toolRejectedDanger: _('用户拒绝了危险操作', 'User rejected dangerous operation', '使用者拒絕了危險操作', 'ユーザーが危険な操作を拒否しました'),
|
||
askConfirm: _('确认', 'Confirm', '確認', '確認'),
|
||
askSkip: _('跳过', 'Skip', '略過', 'スキップ'),
|
||
askSkipped: _('(已跳过)', '(Skipped)', '(已略過)', '(スキップ済み)'),
|
||
askPlaceholder: _('请选择一个选项', 'Select an option', '請選擇一個選項'),
|
||
askCustomPlaceholder: _('输入自定义回答...', 'Enter custom answer...', '輸入自定義回答...'),
|
||
askNotSelected: _('请选择一个选项或输入自定义回答', 'Please select an option or enter a custom answer', '請選擇一個選項或輸入自定義回答'),
|
||
confirmRunCmd: _('将执行以下命令', 'Will execute the following command', '將執行以下命令', '以下のコマンドを実行します', '다음 명령을 실행합니다'),
|
||
confirmCwd: _('工作目录', 'Working directory', '工作目錄', '作業ディレクトリ', '작업 디렉토리'),
|
||
confirmWriteFile: _('将写入以下文件', 'Will write to the following file', '將写入以下檔案', '以下のファイルに書き込みます', '다음 파일에 쓰기'),
|
||
confirmPreview: _('内容预览', 'Content preview', '內容預覽', '内容プレビュー'),
|
||
confirmTruncated: _('(内容已截断)', '(Content truncated)', '(內容已截斷)'),
|
||
confirmCritical: _('⚠️ 这是一个危险操作,请仔细检查', '⚠️ This is a dangerous operation, please review carefully', '⚠️ 这是一個危險操作,請仔細檢查'),
|
||
confirmAllow: _('允许执行', 'Allow', '允許執行', '実行を許可', '실행 허용', 'Cho phép thực thi', 'Permitir ejecución', 'Permitir execução', 'Разрешить выполнение', 'Autoriser l\'exécution', 'Ausführung erlauben'),
|
||
confirmAiRequest: _('AI 请求执行以下操作', 'AI requests to perform the following operation', 'AI 請求執行以下操作', 'AI が以下の操作を要求しています'),
|
||
aiThinking: _('思考中...', 'Thinking...', '', '考え中...', '생각 중...', 'Đang suy nghĩ...', 'Pensando...', 'Pensando...', 'Думает...', 'Réflexion...', 'Denkt nach...'),
|
||
aiProcessingRound: _('第 {round} 轮处理中...', 'Processing round {round}...', '第 {round} 轮處理中...', '第 {round} ラウンド処理中...', '{round}라운드 처리 중...'),
|
||
aiCallingTools: _('调用工具: {tools}', 'Calling tools: {tools}', '調用工具: {tools}', 'ツール呼出: {tools}', '도구 호출: {tools}', 'Gọi công cụ: {tools}', 'Llamando herramientas: {tools}', 'Chamando ferramentas: {tools}', 'Вызов инструментов: {tools}', 'Appel d\'outils: {tools}', 'Werkzeugaufruf: {tools}'),
|
||
toolLoopQuestion: _('AI 已执行 {round} 轮工具调用,如何继续?', 'AI has executed {round} rounds of tool calls. How to proceed?', 'AI 已執行 {round} 轮工具呼叫,如何繼續?', 'AI が {round} ラウンドのツール呼び出しを実行しました。続行しますか?', 'AI가 {round}라운드의 도구 호출을 실행했습니다. 계속하시겠습니까?'),
|
||
toolLoopContinue: _('继续自动执行 {rounds} 轮', 'Continue auto-executing {rounds} rounds', '繼續自動執行 {rounds} 轮', 'さらに {rounds} ラウンド自動実行', '추가 {rounds}라운드 자동 실행'),
|
||
toolLoopNoBreak: _('不再询问,持续执行', 'Don\'t ask again, keep executing', '不再询問,持續執行', '中断せず継続実行'),
|
||
toolLoopRethink: _('让 AI 重新思考', 'Let AI rethink', '讓 AI 重新思考', 'AI に再考させる'),
|
||
toolLoopStop: _('停止执行', 'Stop execution', '停止執行', '実行停止', '실행 중지'),
|
||
autoRoundsLabel: _('自动执行轮数', 'Auto-execution rounds', '自動執行轮數'),
|
||
autoRoundsDesc: _('工具调用在询问前的自动执行轮数', 'Number of auto-execution rounds before asking', '工具呼叫在询問前的自動執行轮數'),
|
||
autoRoundsHint: _('设为 0 表示每次都询问', 'Set to 0 to ask every time', '設為 0 表示每次都询問'),
|
||
autoRoundsUnit: _('轮', 'rounds'),
|
||
autoRoundsDefault: _('默认', 'Default', '預設'),
|
||
autoRoundsUnlimited: _('无限', 'Unlimited', '無限', '無限', '무제한', 'Không giới hạn'),
|
||
errorAnalyze: _('让 AI 分析', 'Let AI analyze', '讓 AI 分析'),
|
||
errorDismiss: _('忽略', 'Dismiss'),
|
||
errorShowLog: _('展开日志', 'Show log', '展開日誌'),
|
||
errorHideLog: _('收起日志', 'Hide log', '收起日誌'),
|
||
welcomeText: _('你好!我是你的 AI 助手,有什么可以帮你的?', 'Hello! I\'m your AI assistant. How can I help you?', '你好!我是你的 AI 助手,有什么可以幫你的?', 'こんにちは!AI アシスタントです。何かお手伝いできることはありますか?', '안녕하세요! AI 어시스턴트입니다. 무엇을 도와드릴까요?', 'Xin chào! Tôi là trợ lý AI. Tôi có thể giúp gì cho bạn?', '¡Hola! Soy el asistente IA. ¿En qué puedo ayudarle?', 'Olá! Sou o assistente IA. Como posso ajudar?', 'Здравствуйте! Я ИИ-ассистент. Чем могу помочь?', 'Bonjour ! Je suis l\'assistant IA. Comment puis-je vous aider ?', 'Hallo! Ich bin der KI-Assistent. Wie kann ich Ihnen helfen?'),
|
||
loading: _('加载中...', 'Loading...', '載入中...', '読み込み中...', '로딩 중...', 'Đang tải...', 'Cargando...', 'Carregando...', 'Загрузка...', 'Chargement...', 'Laden...'),
|
||
testConnTitle: _('连接测试', 'Connection Test', '連線測試', '接続テスト', '연결 테스트'),
|
||
testSuccess: _('连接成功', 'Connection successful', '連線成功', '接続成功', '연결 성공', 'Kết nối thành công', 'Conexión exitosa', 'Conexão bem-sucedida', 'Подключение успешно', 'Connexion réussie', 'Verbindung erfolgreich'),
|
||
testFailed: _('连接失败', 'Connection failed', '連線失敗', '接続失敗', '연결 실패', 'Kết nối thất bại', 'Conexión fallida', 'Conexão falhou', 'Ошибка подключения', 'Connexion échouée', 'Verbindung fehlgeschlagen'),
|
||
testNoReply: _('(无回复内容)', '(No reply content)', '(無回覆內容)', '(応答なし)'),
|
||
settingsTitle: _('助手设置', 'Assistant Settings', '助手設定', 'アシスタント設定', '어시스턴트 설정', 'Cài đặt trợ lý', 'Configuración del asistente', 'Configurações do assistente', 'Настройки ассистента', 'Paramètres de l\'assistant', 'Assistenten-Einstellungen'),
|
||
settings: _('设置', 'Settings', '設定', '設定', '설정', 'Cài đặt', 'Configuración', 'Configurações', 'Настройки', 'Paramètres', 'Einstellungen'),
|
||
settingsSaved: _('设置已保存', 'Settings saved', '設定已儲存', '設定を保存しました', '설정 저장됨', 'Đã lưu cài đặt', 'Configuración guardada', 'Configurações salvas', 'Настройки сохранены', 'Paramètres enregistrés', 'Einstellungen gespeichert'),
|
||
settingsTabApi: _('API 配置', 'API Config', 'API 設定', 'API 設定', 'API 설정', 'Cấu hình API'),
|
||
settingsTabTools: _('工具', 'Tools', '', 'ツール', '도구', 'Công cụ'),
|
||
settingsTabPersona: _('人设', 'Persona', '人設', 'ペルソナ', '페르소나', 'Nhân dạng'),
|
||
settingsTabKnowledge: _('知识库', 'Knowledge Base', '知識庫', 'ナレッジベース', '지식 베이스', 'Kho tri thức'),
|
||
apiType: _('接口类型', 'API Type', '介面類型', 'API タイプ', 'API 유형'),
|
||
model: _('模型', 'Model', '', 'モデル', '모델', 'Mô hình', 'Modelo', 'Modelo', 'Модель', 'Modèle', 'Modell'),
|
||
temperature: _('温度', 'Temperature', '溫度', '温度', '온도', 'Nhiệt độ', 'Temperatura', 'Temperatura', 'Температура', 'Température', 'Temperatur'),
|
||
quickSelect: _('快捷选择', 'Quick Select', '快捷選擇', 'クイック選択', '빠른 선택'),
|
||
visitSite: _('访问官网', 'Visit Website', '訪問官網', 'サイトを訪問', '사이트 방문'),
|
||
notConfigured: _('未配置', 'Not configured', '未設定', '未設定', '미설정'),
|
||
qtcoolName: _('晴辰云', 'QingChen Cloud', '晴辰雲'),
|
||
qtcoolDesc: _('每日签到领取免费额度,多种高级模型低至官方价 2-3 折', 'Daily check-in for free credits, premium models as low as 20-30% of official price', '每日簽到領取免費額度,多種高級模型低至官方價 2-3 折'),
|
||
qtcoolRecommend: _('推荐', 'Recommended', '推薦'),
|
||
qtcoolCheckin: _('每日签到领额度', 'Daily check-in for credits', '每日簽到領額度'),
|
||
qtcoolLearnMore: _('了解更多 →', 'Learn more →'),
|
||
qtcoolKeyPlaceholder: _('粘贴你的 API Key', 'Paste your API Key', '貼上你的 API Key'),
|
||
qtcoolInstructions: _('没有 Key?前往 <a>签到页</a> 免费领取', 'No key? Go to <a>check-in page</a> to get one for free', '沒有 Key?前往 <a>簽到頁</a> 免費領取'),
|
||
qtcoolEnterKey: _('请输入 API Key', 'Please enter API Key', '請輸入 API Key'),
|
||
qtcoolFillFirst: _('请先填写 API Key', 'Please fill in API Key first', '請先填寫 API Key'),
|
||
qtcoolFillFirst: _('请先填写 API Key', 'Please fill in API Key first', '請先填写 API Key'),
|
||
qtcoolConnecting: _('连接中...', 'Connecting...', '連線中...'),
|
||
qtcoolLoadingModels: _('正在获取模型列表...', 'Fetching model list...', '正在取得模型列表...'),
|
||
qtcoolConnectFail: _('连接失败', 'Connection failed', '連線失敗'),
|
||
qtcoolSelectModel: _('选择模型', 'Select model', '選擇模型'),
|
||
qtcoolApply: _('一键配置', 'One-Click Config', '一鍵設定'),
|
||
qtcoolConfigured: _('已配置', 'Configured', '已設定'),
|
||
qtcoolAssistantOnly: _('仅配置助手', 'Configure assistant only', '僅設定助手'),
|
||
qtcoolSetMain: _('设为主模型', 'Set as primary', '設為主模型'),
|
||
qtcoolSetMainDone: _('已设为主模型', 'Set as primary model', '已設為主模型'),
|
||
qtcoolMainSwitched: _('主模型已切换为 {model}', 'Primary model switched to {model}', '主模型已切換為 {model}'),
|
||
qtcoolTestPass: _('连接测试通过', 'Connection test passed', '連線測試通過'),
|
||
qtcoolTestFail: _('连接测试失败', 'Connection test failed', '連線測試失敗'),
|
||
qtcoolSyncTitle: _('同步到 OpenClaw', 'Sync to OpenClaw'),
|
||
qtcoolSyncDesc: _('将当前晴辰云配置同步到 OpenClaw 全局配置', 'Sync current QingChen Cloud config to OpenClaw global config', '將目前晴辰雲設定同步到 OpenClaw 全域設定'),
|
||
qtcoolSyncTo: _('同步到 OpenClaw', 'Sync to OpenClaw'),
|
||
qtcoolSyncToDesc: _('将晴辰云的 API 配置写入 OpenClaw 全局配置文件', 'Write QingChen Cloud API config to OpenClaw global config file', '將晴辰雲的 API 設定写入 OpenClaw 全域設定檔案'),
|
||
qtcoolSyncToTitle: _('确认同步到 OpenClaw', 'Confirm sync to OpenClaw', '確認同步到 OpenClaw'),
|
||
qtcoolConfirmSync: _('将覆盖 OpenClaw 中同名的 Provider,确定继续?', 'This will overwrite the same-name Provider in OpenClaw. Continue?', '將覆蓋 OpenClaw 中同名的 Provider,確定繼續?'),
|
||
qtcoolSyncToDone: _('已同步到 OpenClaw', 'Synced to OpenClaw'),
|
||
qtcoolSyncFail: _('同步失败', 'Sync failed', '同步失敗'),
|
||
qtcoolWriteFail: _('写入配置失败', 'Failed to write config', '写入設定失敗'),
|
||
qtcoolGatewayFail: _('Gateway 重启失败', 'Gateway restart failed', 'Gateway 重啟失敗'),
|
||
qtcoolAllDone: _('全部完成', 'All done'),
|
||
qtcoolSyncFrom: _('从 OpenClaw 读取', 'Read from OpenClaw', '從 OpenClaw 讀取'),
|
||
qtcoolSyncFromTitle: _('确认从 OpenClaw 读取', 'Confirm read from OpenClaw', '確認從 OpenClaw 讀取'),
|
||
qtcoolSyncFromDesc: _('将从 OpenClaw 读取配置:\nBase URL: {baseUrl}\nAPI Key: {apiKey}\n模型: {model}', 'Will read config from OpenClaw:\nBase URL: {baseUrl}\nAPI Key: {apiKey}\nModel: {model}', '將從 OpenClaw 讀取設定:\nBase URL: {baseUrl}\nAPI Key: {apiKey}\n模型: {model}'),
|
||
qtcoolConfirmRead: _('确认读取', 'Confirm Read', '確認讀取'),
|
||
qtcoolSyncFromDone: _('已从 OpenClaw 读取配置', 'Read config from OpenClaw', '已從 OpenClaw 讀取設定'),
|
||
qtcoolReadFail: _('读取失败', 'Read failed', '讀取失敗'),
|
||
qtcoolNoProvider: _('OpenClaw 中没有找到晴辰云的配置', 'QingChen Cloud config not found in OpenClaw', 'OpenClaw 中沒有找到晴辰雲的設定'),
|
||
testFillUrlKey: _('请先填写 Base URL 和 API Key', 'Please fill in Base URL and API Key first', '請先填写 Base URL 和 API Key', '先に Base URL と API Key を入力してください'),
|
||
testFillUrl: _('请先填写 Base URL', 'Please fill in Base URL first', '請先填写 Base URL', '先に Base URL を入力してください'),
|
||
testFillModel: _('请先填写模型名称', 'Please fill in model name first', '請先填写模型名稱', '先にモデル名を入力してください'),
|
||
testing: _('测试中...', 'Testing...', '測試中...', 'テスト中...', '테스트 중...', 'Đang kiểm tra...', 'Probando...', 'Testando...', 'Проверка...', 'Test en cours...', 'Wird getestet...'),
|
||
testSending: _('正在发送测试请求...', 'Sending test request...', '正在發送測試請求...', 'テストリクエスト送信中...'),
|
||
testBtn: _('测试连接', 'Test Connection', '測試連線', '接続テスト', '연결 테스트', 'Kiểm tra kết nối', 'Probar conexión', 'Testar conexão', 'Проверить подключение', 'Tester la connexion', 'Verbindung testen'),
|
||
fetching: _('获取中...', 'Fetching...', '取得中...', '取得中...', '가져오는 중...'),
|
||
fetchingModels: _('正在获取模型列表...', 'Fetching model list...', '正在取得模型列表...', 'モデルリスト取得中...'),
|
||
fetchModelsTitle: _('获取模型列表', 'Fetch Model List', '取得模型列表', 'モデルリスト取得', '모델 목록 가져오기'),
|
||
fetchBtn: _('获取列表', 'Fetch List', '取得列表', 'リスト取得', '목록 가져오기'),
|
||
noModelsFound: _('未找到可用模型', 'No available models found', '', '利用可能なモデルが見つかりません', '사용 가능한 모델 없음'),
|
||
modelsFound: _('找到 {count} 个模型', 'Found {count} models', '找到 {count} 個模型', '{count} モデルが見つかりました', '{count}개 모델 발견'),
|
||
personaSource: _('人设来源', 'Persona Source', '人設來源', 'ペルソナソース', '페르소나 소스'),
|
||
personaDefault: _('默认', 'Default', '預設', 'デフォルト', '기본'),
|
||
personaOpenClaw: _('OpenClaw Agent', 'OpenClaw Agent'),
|
||
personaOpenClawHint: _('从 OpenClaw Agent 继承身份和工作区设置', 'Inherit identity and workspace from OpenClaw Agent', '從 OpenClaw Agent 繼承身份和工作區設定', 'OpenClaw Agent からIDとワークスペース設定を継承'),
|
||
personaName: _('助手名称', 'Assistant Name', '助手名稱', 'アシスタント名', '어시스턴트 이름'),
|
||
personaPersonality: _('助手性格', 'Personality', '', 'アシスタント性格', '어시스턴트 성격'),
|
||
personaPersonalityHint: _('描述助手的性格特征', 'Describe the assistant\'s personality traits', '', 'アシスタントの性格特性を説明'),
|
||
personaSelectAgent: _('选择 Agent', 'Select Agent', '選擇 Agent', 'Agent を選択', 'Agent 선택'),
|
||
personaSelectFirst: _('请先选择一个 Agent', 'Please select an Agent first', '請先選擇一個 Agent', '先に Agent を選択してください'),
|
||
personaSoulInherit: _('继承 Soul 文件', 'Inherit Soul files', '繼承 Soul 檔案'),
|
||
personaSoulHint: _('使用 Agent 的 Soul 文件作为系统提示词的一部分', 'Use Agent\'s Soul files as part of the system prompt', '使用 Agent 的 Soul 檔案作為系統提示詞的一部分'),
|
||
personaLoadSoul: _('加载 Soul', 'Load Soul', '載入 Soul'),
|
||
personaLoadingAgent: _('正在加载 Agent 信息...', 'Loading Agent info...', '正在載入 Agent 資訊...'),
|
||
personaNoAgent: _('未找到 Agent', 'Agent not found'),
|
||
personaNoWorkspace: _('该 Agent 没有工作区', 'This Agent has no workspace', '該 Agent 沒有工作區'),
|
||
personaLoadFailed: _('加载失败', 'Load failed', '載入失敗'),
|
||
personaLoadFailedDetail: _('加载 Soul 文件失败', 'Failed to load Soul files', '載入 Soul 檔案失敗'),
|
||
personaRefreshTitle: _('刷新 Agent 列表', 'Refresh Agent List', '重新整理 Agent 列表'),
|
||
personaScanning: _('扫描中...', 'Scanning...', '掃描中...'),
|
||
kbDesc: _('自定义知识库,AI 回答时会参考这些内容', 'Custom knowledge base, AI will reference these when answering', '自定義知識庫,AI 回答時會參考这些內容', 'カスタムナレッジベース、AI 回答時に参照されます', '사용자 정의 지식 베이스, AI 응답 시 참조됩니다'),
|
||
kbEmpty: _('暂无知识库条目', 'No knowledge base entries', '暫無知識庫條目', 'ナレッジベースエントリなし', '지식 베이스 항목 없음'),
|
||
kbNamePlaceholder: _('知识库名称', 'Knowledge base name', '知識庫名稱', 'ナレッジベース名'),
|
||
kbContentPlaceholder: _('知识库内容...', 'Knowledge base content...', '知識庫內容...', 'ナレッジベース内容...'),
|
||
kbNameRequired: _('请填写名称', 'Please fill in name', '請填写名稱', '名前を入力してください'),
|
||
kbContentRequired: _('请填写内容', 'Please fill in content', '請填写內容', '内容を入力してください'),
|
||
kbSave: _('保存', 'Save', '儲存', '保存', '저장'),
|
||
kbSummary: _('摘要', 'Summary'),
|
||
kbLines: _('{count} 行', '{count} lines'),
|
||
kbClickEnable: _('点击启用', 'Click to enable', '点擊啟用'),
|
||
kbClickDisable: _('点击禁用', 'Click to disable', '点擊停用'),
|
||
importTitle: _('导入配置', 'Import Config', '导入設定'),
|
||
importBtn: _('导入 OpenClaw 配置', 'Import OpenClaw Config', '导入 OpenClaw 設定'),
|
||
importScanning: _('正在扫描本地 OpenClaw 配置...', 'Scanning local OpenClaw config...', '正在掃描本地 OpenClaw 設定...'),
|
||
importNoConfig: _('未找到可导入的配置', 'No importable config found', '未找到可导入的設定'),
|
||
importNoModels: _('无模型', 'No models', '無模型'),
|
||
importGlobal: _('全局配置', 'Global Config', '全域設定'),
|
||
importFound: _('找到 {count} 个可导入的配置', 'Found {count} importable configs', '找到 {count} 個可导入的設定'),
|
||
importDone: _('已导入 {name}({count} 个模型)', 'Imported {name} ({count} models)', '已导入 {name}({count} 個模型)'),
|
||
importFail: _('导入失败', 'Import failed', '导入失敗'),
|
||
stopped: _('已停止', 'Stopped', '', '停止', '중지됨', 'Đã dừng', 'Detenido', 'Parado', 'Остановлено', 'Arrêté', 'Gestoppt'),
|
||
requestInterrupted: _('请求中断', 'Request interrupted', '請求中斷'),
|
||
retry: _('重试', 'Retry', '重試', '再試行', '재시도', 'Thử lại', 'Reintentar', 'Tentar novamente', 'Повторить', 'Réessayer', 'Wiederholen'),
|
||
continueInput: _('输入继续', 'Continue Input', '輸入繼續'),
|
||
retryHint: _('请求失败(已自动重试 3 次)', 'Request failed (auto-retried 3 times)', '請求失敗(已自動重試 3 次)'),
|
||
retrying: _('重试中...', 'Retrying...', '重試中...'),
|
||
waitForReply: _('请等待 AI 回复后再发送图片', 'Please wait for AI reply before sending images', '請等待 AI 回覆后再發送圖片'),
|
||
waitForReplyShort: _('请等待回复', 'Please wait for reply', '請等待回覆'),
|
||
copyText: _('复制文本', 'Copy Text', '複製文本', 'テキストをコピー', '텍스트 복사', 'Sao chép văn bản', 'Copiar texto', 'Copiar texto', 'Копировать текст', 'Copier le texte', 'Text kopieren'),
|
||
copyMd: _('复制 Markdown', 'Copy Markdown', '複製 Markdown', 'Markdown をコピー', 'Markdown 복사'),
|
||
viewRaw: _('查看原始数据', 'View Raw Data', '查看原始資料'),
|
||
viewDebug: _('查看请求/响应', 'View Request/Response', '查看請求/回應'),
|
||
copiedText: _('已复制文本', 'Text copied', '已複製文本', 'テキストをコピーしました', '텍스트 복사됨'),
|
||
copiedMd: _('已复制 Markdown', 'Markdown copied', '已複製 Markdown', 'Markdown をコピーしました', 'Markdown 복사됨'),
|
||
rawData: _('消息原始数据', 'Raw Message Data', '訊息原始資料'),
|
||
debugInfo: _('请求/响应调试', 'Request/Response Debug', '請求/回應除錯'),
|
||
guideTag: _('内置 AI', 'Built-in AI', '內置 AI'),
|
||
guideTitle: _('这是 ClawPanel 内置的 AI 助手', 'This is ClawPanel\'s built-in AI assistant', '这是 ClawPanel 內置的 AI 助手'),
|
||
guideDesc: _(',独立于 OpenClaw,使用你在右上角「设置」中配置的 API。', ', independent of OpenClaw, using the API configured in Settings.', ',獨立於 OpenClaw,使用你在右上角「設定」中設定的 API。'),
|
||
guideHint: _('如需与 OpenClaw Agent 对话,请前往「实时聊天」页面。', 'To chat with OpenClaw Agents, go to the Live Chat page.', '如需與 OpenClaw Agent 對話,請前往「實時聊天」頁面。'),
|
||
uploadImage: _('上传图片', 'Upload Image', '上傳圖片', '画像アップロード', '이미지 업로드'),
|
||
inputPlaceholder: _('描述你的问题,粘贴日志、截图或错误信息...', 'Describe your issue, paste logs, screenshots or error messages...', '描述你的問題,貼上日誌、截圖或錯誤資訊...', '問題を説明、ログやスクリーンショットを貼り付け...', '문제를 설명하거나 로그/스크린샷을 붙여넣으세요...', 'Mô tả vấn đề...', 'Describa el problema...', 'Descreva o problema...', 'Опишите проблему...', 'Décrivez le problème...', 'Problem beschreiben...'),
|
||
send: _('发送', 'Send', '發送', '送信', '전송', 'Gửi', 'Enviar', 'Enviar', 'Отправить', 'Envoyer', 'Senden'),
|
||
inputHint: _('Enter 发送 · Shift+Enter 换行 · 支持粘贴/拖拽图片 · AI 助手独立于 OpenClaw', 'Enter to send · Shift+Enter for newline · Paste/drag images · Independent of OpenClaw', 'Enter 發送 · Shift+Enter 換行 · 支援貼上/拖曳圖片 · AI 助手獨立於 OpenClaw', 'Enter で送信 · Shift+Enter で改行 · 画像貼り付け/ドラッグ対応 · AI アシスタントは OpenClaw とは独立'),
|
||
autoSwitchExecute: _('已自动切换到执行模式', 'Auto-switched to Execute mode', '已自動切換到執行模式'),
|
||
}
|