import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; const resources = { en: { translation: { dashboard: 'Dashboard', chat: 'Chat', config: 'Config', cronJobs: 'Cron Jobs', nodes: 'Nodes', logs: 'Real-time Logs', logCodes: 'Log Codes', skills: 'Skills', memory: 'Memory', taskAudit: 'Task Audit', tasks: 'Tasks', sidebarCore: 'Core', sidebarSystem: 'System', sidebarOps: 'Operations', sidebarInsights: 'Insights', ekg: 'EKG', ekgEscalations: 'Escalations', ekgSourceStats: 'Source Stats', ekgChannelStats: 'Channel Stats', ekgTopProvidersWorkload: 'Top Providers (workload)', ekgTopProvidersAll: 'Top Providers (all)', ekgTopErrsigWorkload: 'Top Error Signatures (workload)', ekgTopErrsigHeartbeat: 'Top Error Signatures (heartbeat)', ekgTopErrsigAll: 'Top Error Signatures (all)', taskList: 'Task List', taskDetail: 'Task Detail', taskQueue: 'Task Queue', taskLogs: 'Task Logs', mediaSources: 'Media Sources', lastPauseReason: 'Last Pause Reason', lastPauseAt: 'Last Pause Time', allSources: 'All Sources', allStatus: 'All Status', pauseTask: 'Pause', retryTask: 'Retry', completeTask: 'Complete', ignoreTask: 'Ignore', taskCrud: 'Task CRUD', createTask: 'Create', newTask: 'New Task', updateTask: 'Update', deleteTask: 'Delete', export: 'Export', dailySummary: 'Daily Summary', noDailySummary: 'No autonomy daily summary yet.', error: 'Error', noTaskAudit: 'No task audit records', selectTask: 'Select a task from the left list', loading: 'Loading...', gatewayStatus: 'Gateway Status', online: 'Online', offline: 'Offline', activeSessions: 'Active Sessions', nodesOnline: 'Nodes Online', recentCron: 'Recent Cron Jobs', nodesSnapshot: 'Nodes Snapshot', refreshAll: 'Refresh All', refresh: 'Refresh', active: 'Active', paused: 'Paused', noCronJobs: 'No cron jobs found', noNodes: 'No nodes available', sessions: 'Sessions', startConversation: 'Start a conversation', typeMessage: 'Type a message...', configuration: 'Configuration', form: 'Form', rawJson: 'Raw JSON', reload: 'Reload', saveChanges: 'Save Changes', gatewaySettings: 'Gateway Settings', host: 'Host', port: 'Port', token: 'Token', agentDefaults: 'Agent Defaults', maxToolIterations: 'Max Tool Iterations', maxTokens: 'Max Tokens', providers: 'Providers', proxyTimeout: 'Proxy Timeout (sec)', system: 'System', enableShellTools: 'Enable Shell Tools', enableLogging: 'Enable Logging', pauseJob: 'Pause Job', startJob: 'Start Job', deleteJob: 'Delete Job', gatewayToken: 'Gateway Token', enterToken: 'Enter token...', addJob: 'Add Job', editJob: 'Edit Job', jobName: 'Job Name', kind: 'Kind', everyMs: 'Interval (ms)', cronExpression: 'Cron Expression', runAt: 'Run At', message: 'Message', deliver: 'Deliver', channel: 'Channel', to: 'To (Recipient)', cancel: 'Cancel', save: 'Save', create: 'Create', update: 'Update', delete: 'Delete', add: 'Add', install: 'Install', installed: 'Installed', notInstalled: 'Not Installed', status: 'Status', source: 'Source', duration: 'Duration', provider: 'Provider', model: 'Model', time: 'Time', level: 'Level', code: 'Code', template: 'Template', content: 'Content', id: 'ID', files: 'Files', close: 'Close', path: 'Path', before: 'Before', after: 'After', hide: 'Hide', show: 'Show', clear: 'Clear', pause: 'Pause', resume: 'Resume', live: 'Live', raw: 'Raw', pretty: 'Pretty', entries: 'entries', appName: 'ClawGo', webui: 'WebUI', node: 'Node', unknownIp: 'Unknown IP', memoryFiles: 'Memory Files', memoryFileNamePrompt: 'Memory file name', noFileSelected: 'No file selected', noDescription: 'No description provided.', empty: '(empty)', modal: 'Modal', dialogPleaseConfirm: 'Please confirm', dialogNotice: 'Notice', dialogOk: 'OK', requestFailed: 'Request Failed', saved: 'Saved', reloadHistory: 'Reload History', user: 'User', exec: 'Exec', agent: 'Agent', toolOutput: 'tool output', chatServerError: 'Error: Failed to get response from server.', waitingForLogs: 'Waiting for logs...', systemLog: 'system.log', codeCaller: 'Code/Caller', recursiveAddValuePlaceholder: 'Type new value and add', recursiveSelectOption: 'Select option', logCodesSearchPlaceholder: 'Search code/text', logCodesNoCodes: 'No codes', skillsDeleteTitle: 'Delete Skill', skillsDeleteMessage: 'Are you sure you want to delete this skill?', skillsClawhubMissingTitle: 'clawhub not detected', skillsClawhubMissingMessage: 'clawhub is not installed. Install dependencies and clawhub automatically?', skillsInstallNow: 'Install now', skillsInstallingDeps: 'Installing node/npm and clawhub...', skillsInstallFailedTitle: 'Install failed', skillsInstallFailedMessage: 'Failed to install clawhub', skillsInstallDoneTitle: 'Install complete', skillsInstallDoneMessage: 'clawhub is installed. You can continue installing skills.', skillsInstallingSkill: 'Installing skill...', skillsInstallSkillDoneTitle: 'Skill installed', skillsInstallSkillDoneMessage: 'Skill "{{name}}" installed successfully.', skillsAddTitle: 'Add Skill', skillsAddMessage: 'Upload skill archive (.zip / .tar.gz / .tgz / .tar). It will be extracted into skills folder and archive will be removed.', skillsSelectArchive: 'Select archive', skillsImporting: 'Uploading and importing skill...', skillsImportFailedTitle: 'Import failed', skillsImportFailedMessage: 'Failed to import skill archive', skillsImportDoneTitle: 'Import complete', skillsImportedPrefix: 'Imported', skillsImportDoneMessage: 'Skill imported successfully.', skillsFileSaved: 'Skill file saved successfully.', skillsNamePlaceholder: 'skill name', skillsIgnoreSuspicious: 'Ignore suspicious warning (use --force)', skillsClawhubNotFound: 'clawhub not found', skillsClawhubStatus: 'clawhub', skillsAdd: 'Add Skill', skillsNoTools: 'No tools defined', skillsFileEdit: 'File Edit', configDiffPreview: 'Diff Preview', configBasicMode: 'Basic Mode', configAdvancedMode: 'Advanced Mode', configHotOnly: 'Hot-reload fields only', configSearchPlaceholder: 'Search group...', configHotFieldsFull: 'Hot-reload fields (full)', configTopLevel: 'Top Level', configProxies: 'Proxies', configNewProviderName: 'new provider name', configNoCustomProviders: 'No custom providers yet.', configNoGroups: 'No config groups found.', configDiffPreviewCount: 'Diff Preview ({{count}} items)', saveConfigFailed: 'Failed to save config', sourceAutonomy: 'autonomy', sourceDirect: 'direct', sourceMemoryTodo: 'memory_todo', statusRunning: 'running', statusWaiting: 'waiting', statusBlocked: 'blocked', statusSuccess: 'success', statusError: 'error', statusSuppressed: 'suppressed', taskId: 'Task ID', inputPreview: 'Input Preview', blockReason: 'Block Reason', actionFailed: 'Action failed', cronExpressionPlaceholder: '*/5 * * * *', recipientId: 'recipient id', languageZh: '中文', languageEn: 'English', configRoot: '(root)', configCommaSeparatedHint: ', a, b', configLabels: { gateway: 'Gateway', host: 'Host', port: 'Port', token: 'Token', agents: 'Agents', defaults: 'Defaults', max_tool_iterations: 'Max Tool Iterations', max_tokens: 'Max Tokens', providers: 'Providers', proxy: 'Proxy', timeout_sec: 'Timeout (Seconds)', shell: 'Shell', enabled: 'Enabled', logging: 'Logging', level: 'Log Level', format: 'Log Format', storage: 'Storage', path: 'Path', database: 'Database', type: 'Type', connection: 'Connection', security: 'Security', cors: 'CORS', allowed_origins: 'Allowed Origins', rate_limit: 'Rate Limit', requests_per_minute: 'Requests Per Minute', enabled_true: 'Enabled', enabled_false: 'Disabled', openai: 'OpenAI', gemini: 'Gemini', anthropic: 'Anthropic', api_key: 'API Key', model: 'Model', temperature: 'Temperature', top_p: 'Top P', top_k: 'Top K', presence_penalty: 'Presence Penalty', frequency_penalty: 'Frequency Penalty', stream: 'Stream', user: 'User', system_instruction: 'System Instruction', max_output_tokens: 'Max Output Tokens', response_mime_type: 'Response MIME Type', thinking_config: 'Thinking Config', thinking_level: 'Thinking Level', google_search: 'Google Search', google_maps: 'Google Maps', url_context: 'URL Context', api_base: 'API Base', protocol: 'Protocol', models: 'Models', responses: 'Responses', streaming: 'Streaming', web_search_enabled: 'Web Search Enabled', web_search_context_size: 'Web Search Context Size', file_search_vector_store_ids: 'File Search Vector Store IDs', file_search_max_num_results: 'File Search Max Results', include: 'Include', stream_include_usage: 'Stream Include Usage', organization: 'Organization', project: 'Project', region: 'Region', deployment_name: 'Deployment Name', version: 'Version', name: 'Name', description: 'Description', system_prompt: 'System Prompt', tools: 'Tools', auth: 'Authentication', jwt: 'JWT', secret: 'Secret', issuer: 'Issuer', audience: 'Audience', expires_in: 'Expires In', refresh_token: 'Refresh Token', access_token: 'Access Token', client_id: 'Client ID', client_secret: 'Client Secret', redirect_uri: 'Redirect URI', scope: 'Scope', state: 'State', retry: 'Retry', backoff: 'Backoff', factor: 'Factor', min_delay: 'Min Delay', max_delay: 'Max Delay', jitter: 'Jitter', channels: 'Channels', cron: 'Cron', workspace: 'Workspace', proxy_fallbacks: 'Proxy Fallbacks', heartbeat: 'Heartbeat', every_sec: 'Interval (Seconds)', ack_max_chars: 'Ack Max Chars', prompt_template: 'Prompt Template', autonomy: 'Autonomy', tick_interval_sec: 'Tick Interval (Seconds)', min_run_interval_sec: 'Min Run Interval (Seconds)', max_pending_duration_sec: 'Max Pending Duration (Seconds)', max_consecutive_stalls: 'Max Consecutive Stalls', max_dispatch_per_tick: 'Max Dispatch Per Tick', notify_cooldown_sec: 'Notify Cooldown (Seconds)', notify_same_reason_cooldown_sec: 'Same-reason Notify Cooldown (Seconds)', quiet_hours: 'Quiet Hours', user_idle_resume_sec: 'User Idle Resume (Seconds)', max_rounds_without_user: 'Max Rounds Without User', task_history_retention_days: 'Task History Retention (Days)', waiting_resume_debounce_sec: 'Waiting Resume Debounce (Seconds)', idle_round_budget_release_sec: 'Idle Round Budget Release (Seconds)', allowed_task_keywords: 'Allowed Task Keywords', ekg_consecutive_error_threshold: 'EKG Consecutive Error Threshold', texts: 'Text Templates', no_response_fallback: 'No-response Fallback', think_only_fallback: 'Think-only Fallback', memory_recall_keywords: 'Memory Recall Keywords', lang_usage: 'Language Usage Hint', lang_invalid: 'Invalid Language Message', lang_updated_template: 'Language Updated Template', subagents_none: 'No-subagents Message', sessions_none: 'No-sessions Message', unsupported_action: 'Unsupported Action Message', system_rewrite_template: 'System Rewrite Template', runtime_compaction_note: 'Runtime Compaction Note', startup_compaction_note: 'Startup Compaction Note', autonomy_important_keywords: 'Autonomy Important Keywords', autonomy_completion_template: 'Autonomy Completion Template', autonomy_blocked_template: 'Autonomy Blocked Template', context_compaction: 'Context Compaction', mode: 'Mode', trigger_messages: 'Trigger Messages', keep_recent_messages: 'Keep Recent Messages', max_summary_chars: 'Max Summary Chars', max_transcript_chars: 'Max Transcript Chars', runtime_control: 'Runtime Control', intent_max_input_chars: 'Intent Max Input Chars', autonomy_tick_interval_sec: 'Autonomy Tick Interval (Seconds)', autonomy_min_run_interval_sec: 'Autonomy Min Run Interval (Seconds)', autonomy_idle_threshold_sec: 'Autonomy Idle Threshold (Seconds)', autonomy_max_rounds_without_user: 'Autonomy Max Rounds Without User', autonomy_max_pending_duration_sec: 'Autonomy Max Pending Duration (Seconds)', autonomy_max_consecutive_stalls: 'Autonomy Max Consecutive Stalls', autolearn_max_rounds_without_user: 'Autolearn Max Rounds Without User', run_state_ttl_seconds: 'Run State TTL (Seconds)', run_state_max: 'Run State Max', tool_parallel_safe_names: 'Tool Parallel Safe Names', tool_max_parallel_calls: 'Tool Max Parallel Calls', session_resource_scheduling_enabled: 'Session Resource Scheduling Enabled', session_max_parallel_runs: 'Session Max Parallel Runs', session_auto_plan_enabled: 'Session Auto Plan Enabled', session_auto_plan_max_tasks: 'Session Auto Plan Max Tasks', system_summary: 'System Summary', marker: 'Summary Marker', completed_prefix: 'Completed Prefix', changes_prefix: 'Changes Prefix', outcome_prefix: 'Outcome Prefix', completed_title: 'Completed Title', changes_title: 'Changes Title', outcomes_title: 'Outcomes Title', inbound_message_id_dedupe_ttl_seconds: 'Inbound Message Dedupe TTL (Seconds)', inbound_content_dedupe_window_seconds: 'Inbound Content Dedupe Window (Seconds)', outbound_dedupe_window_seconds: 'Outbound Dedupe Window (Seconds)', telegram: 'Telegram', allow_from: 'Allowed Senders', allow_chats: 'Allowed Chats', enable_groups: 'Enable Groups', require_mention_in_groups: 'Require Mention In Groups', discord: 'Discord', maixcam: 'MaixCam', whatsapp: 'WhatsApp', bridge_url: 'Bridge URL', feishu: 'Feishu', app_id: 'App ID', app_secret: 'App Secret', encrypt_key: 'Encrypt Key', verification_token: 'Verification Token', dingtalk: 'DingTalk', filesystem: 'Filesystem', working_dir: 'Working Directory', timeout: 'Timeout', auto_install_missing: 'Auto-install Missing', sandbox: 'Sandbox', image: 'Image', web: 'Web', search: 'Search', max_results: 'Max Results', proxies: 'Proxies', cross_session_call_id: 'Cross-session Call ID', supports_responses_compact: 'Supports Responses Compact', min_sleep_sec: 'Min Sleep (Seconds)', max_sleep_sec: 'Max Sleep (Seconds)', retry_backoff_base_sec: 'Retry Backoff Base (Seconds)', retry_backoff_max_sec: 'Retry Backoff Max (Seconds)', max_consecutive_failure_retries: 'Max Consecutive Failure Retries', max_workers: 'Max Workers', dir: 'Directory', filename: 'Filename', max_size_mb: 'Max Size (MB)', retention_days: 'Retention Days' } } }, zh: { translation: { dashboard: '仪表盘', chat: '对话', config: '配置', cronJobs: '定时任务', nodes: '节点', logs: '实时日志', logCodes: '日志编号', skills: '技能管理', memory: '记忆文件', taskAudit: '任务审计', tasks: '任务管理', sidebarCore: '核心', sidebarSystem: '系统', sidebarOps: '运维', sidebarInsights: '洞察', ekg: 'EKG', ekgEscalations: '升级拦截次数', ekgSourceStats: '来源统计', ekgChannelStats: '通道统计', ekgTopProvidersWorkload: 'Top Providers(业务负载)', ekgTopProvidersAll: 'Top Providers(全量)', ekgTopErrsigWorkload: 'Top 错误签名(业务负载)', ekgTopErrsigHeartbeat: 'Top 错误签名(心跳)', ekgTopErrsigAll: 'Top 错误签名(全量)', taskList: '任务列表', taskDetail: '任务详情', taskQueue: '任务队列', taskLogs: '任务日志', mediaSources: '媒体来源', lastPauseReason: '最近暂停原因', lastPauseAt: '最近暂停时间', allSources: '全部来源', allStatus: '全部状态', pauseTask: '暂停', retryTask: '重试', completeTask: '完成', ignoreTask: '忽略', taskCrud: '任务 CRUD', createTask: '新建', newTask: '新任务', updateTask: '更新', deleteTask: '删除', export: '导出', dailySummary: '日报摘要', noDailySummary: '暂无自治日报。', error: '错误', noTaskAudit: '暂无任务审计记录', selectTask: '请从左侧选择任务', loading: '加载中...', gatewayStatus: '网关状态', online: '在线', offline: '离线', activeSessions: '活跃会话', nodesOnline: '在线节点', recentCron: '最近定时任务', nodesSnapshot: '节点快照', refreshAll: '刷新全部', refresh: '刷新', active: '活跃', paused: '已暂停', noCronJobs: '未找到定时任务', noNodes: '无可用节点', sessions: '会话', startConversation: '开始对话', typeMessage: '输入消息...', configuration: '配置', form: '表单', rawJson: '原始 JSON', reload: '重新加载', saveChanges: '保存更改', gatewaySettings: '网关设置', host: '主机', port: '端口', token: '令牌', agentDefaults: '代理默认值', maxToolIterations: '最大工具迭代次数', maxTokens: '最大 Token 数', providers: '提供商', proxyTimeout: '代理超时 (秒)', system: '系统', enableShellTools: '启用 Shell 工具', enableLogging: '启用日志', pauseJob: '暂停任务', startJob: '启动任务', deleteJob: '删除任务', gatewayToken: '网关令牌', enterToken: '输入令牌...', addJob: '新增任务', editJob: '编辑任务', jobName: '任务名称', kind: '类型', everyMs: '间隔 (毫秒)', cronExpression: 'Cron 表达式', runAt: '执行时间', message: '消息', deliver: '投递', channel: '频道', to: '接收者', cancel: '取消', save: '保存', create: '创建', update: '更新', delete: '删除', add: '添加', install: '安装', installed: '已安装', notInstalled: '未安装', status: '状态', source: '来源', duration: '耗时', provider: '提供商', model: '模型', time: '时间', level: '级别', code: '代码', template: '模板', content: '内容', id: 'ID', files: '文件', close: '关闭', path: '路径', before: '变更前', after: '变更后', hide: '隐藏', show: '显示', clear: '清空', pause: '暂停', resume: '继续', live: '实时', raw: '原始', pretty: '格式化', entries: '条', appName: 'ClawGo', webui: 'WebUI', node: '节点', unknownIp: '未知 IP', memoryFiles: '记忆文件', memoryFileNamePrompt: '记忆文件名', noFileSelected: '未选择文件', noDescription: '暂无描述。', empty: '(空)', modal: '弹窗', dialogPleaseConfirm: '请确认', dialogNotice: '提示', dialogOk: '确定', requestFailed: '请求失败', saved: '已保存', reloadHistory: '重新加载历史', user: '用户', exec: '执行', agent: '助手', toolOutput: '工具输出', chatServerError: '错误:获取服务端响应失败。', waitingForLogs: '等待日志中...', systemLog: '系统日志', codeCaller: '代码/来源', recursiveAddValuePlaceholder: '输入新值后添加', recursiveSelectOption: '下拉选择', logCodesSearchPlaceholder: '搜索代码/文本', logCodesNoCodes: '暂无代码', skillsDeleteTitle: '删除技能', skillsDeleteMessage: '确认删除这个技能吗?', skillsClawhubMissingTitle: '未检测到 clawhub', skillsClawhubMissingMessage: '检测到系统中未安装 clawhub。是否自动安装依赖环境并安装 clawhub?', skillsInstallNow: '立即安装', skillsInstallingDeps: '正在安装 node/npm 与 clawhub...', skillsInstallFailedTitle: '安装失败', skillsInstallFailedMessage: '安装 clawhub 失败', skillsInstallDoneTitle: '安装完成', skillsInstallDoneMessage: 'clawhub 已安装,可继续安装技能。', skillsInstallingSkill: '正在安装技能...', skillsInstallSkillDoneTitle: '技能安装完成', skillsInstallSkillDoneMessage: '技能 "{{name}}" 安装成功。', skillsAddTitle: '添加技能', skillsAddMessage: '请上传技能压缩包(.zip / .tar.gz / .tgz / .tar)。上传后将自动解压到 skills 目录,并删除上传压缩包。', skillsSelectArchive: '选择压缩包', skillsImporting: '正在上传并导入技能...', skillsImportFailedTitle: '导入失败', skillsImportFailedMessage: '技能压缩包导入失败', skillsImportDoneTitle: '导入完成', skillsImportedPrefix: '已导入', skillsImportDoneMessage: '技能导入成功。', skillsFileSaved: '技能文件保存成功。', skillsNamePlaceholder: '技能名', skillsIgnoreSuspicious: '忽略可疑告警(使用 --force)', skillsClawhubNotFound: '未找到 clawhub', skillsClawhubStatus: 'clawhub', skillsAdd: '添加技能', skillsNoTools: '未定义工具', skillsFileEdit: '文件编辑', configDiffPreview: '差异预览', configBasicMode: '基础模式', configAdvancedMode: '高级模式', configHotOnly: '仅热更新字段', configSearchPlaceholder: '搜索分类...', configHotFieldsFull: '热更新字段(完整)', configTopLevel: '顶层分类', configProxies: '代理配置', configNewProviderName: '新 provider 名称', configNoCustomProviders: '暂无自定义 provider。', configNoGroups: '未找到配置分组。', configDiffPreviewCount: '配置差异预览({{count}}项)', saveConfigFailed: '保存配置失败', sourceAutonomy: 'autonomy', sourceDirect: 'direct', sourceMemoryTodo: 'memory_todo', statusRunning: 'running', statusWaiting: 'waiting', statusBlocked: 'blocked', statusSuccess: 'success', statusError: 'error', statusSuppressed: 'suppressed', taskId: '任务 ID', inputPreview: '输入预览', blockReason: '阻断原因', actionFailed: '操作失败', cronExpressionPlaceholder: '*/5 * * * *', recipientId: '接收者 ID', languageZh: '中文', languageEn: 'English', configRoot: '(根)', configCommaSeparatedHint: ',例如 a,b', configLabels: { gateway: '网关', host: '主机', port: '端口', token: '令牌', agents: '代理', defaults: '默认值', max_tool_iterations: '最大工具迭代次数', max_tokens: '最大 Token 数', providers: '提供商', proxy: '代理', timeout_sec: '超时时间 (秒)', shell: 'Shell', enabled: '已启用', logging: '日志', level: '日志级别', format: '日志格式', storage: '存储', path: '路径', database: '数据库', type: '类型', connection: '连接', security: '安全', cors: '跨域资源共享 (CORS)', allowed_origins: '允许的来源', rate_limit: '速率限制', requests_per_minute: '每分钟请求数', enabled_true: '已启用', enabled_false: '已禁用', openai: 'OpenAI', gemini: 'Gemini', anthropic: 'Anthropic', api_key: 'API 密钥', model: '模型', temperature: '温度', top_p: 'Top P', top_k: 'Top K', presence_penalty: '存在惩罚', frequency_penalty: '频率惩罚', stream: '流式传输', user: '用户', system_instruction: '系统指令', max_output_tokens: '最大输出 Token', response_mime_type: '响应 MIME 类型', thinking_config: '思考配置', thinking_level: '思考级别', google_search: '谷歌搜索', google_maps: '谷歌地图', url_context: 'URL 上下文', api_base: 'API 基础地址', protocol: '协议', models: '模型列表', responses: 'Responses 配置', streaming: '流式输出', web_search_enabled: '启用网页搜索', web_search_context_size: '网页搜索上下文大小', file_search_vector_store_ids: '文件搜索向量库 ID 列表', file_search_max_num_results: '文件搜索最大结果数', include: '包含字段', stream_include_usage: '流式包含用量', organization: '组织', project: '项目', region: '区域', deployment_name: '部署名称', version: '版本', name: '名称', description: '描述', system_prompt: '系统提示词', tools: '工具', auth: '身份验证', jwt: 'JWT', secret: '密钥', issuer: '发行者', audience: '受众', expires_in: '过期时间', refresh_token: '刷新令牌', access_token: '访问令牌', client_id: '客户端 ID', client_secret: '客户端密钥', redirect_uri: '重定向 URI', scope: '范围', state: '状态', retry: '重试', backoff: '退避', factor: '因子', min_delay: '最小延迟', max_delay: '最大延迟', jitter: '抖动', channels: '通道', cron: '定时任务', workspace: '工作目录', proxy_fallbacks: '代理回退链', heartbeat: '心跳', every_sec: '间隔(秒)', ack_max_chars: '确认最大字符数', prompt_template: '提示模板', autonomy: '自治', tick_interval_sec: '轮询间隔(秒)', min_run_interval_sec: '最小运行间隔(秒)', max_pending_duration_sec: '最大挂起时长(秒)', max_consecutive_stalls: '最大连续停滞次数', max_dispatch_per_tick: '每次轮询最大派发数', notify_cooldown_sec: '通知冷却(秒)', notify_same_reason_cooldown_sec: '同原因通知冷却(秒)', quiet_hours: '静默时段', user_idle_resume_sec: '用户空闲恢复(秒)', max_rounds_without_user: '无用户最大轮数', task_history_retention_days: '任务历史保留天数', waiting_resume_debounce_sec: '等待恢复防抖(秒)', idle_round_budget_release_sec: '空闲轮次预算释放(秒)', allowed_task_keywords: '允许任务关键词', ekg_consecutive_error_threshold: 'EKG 连续错误阈值', texts: '文本模板', no_response_fallback: '无响应兜底文案', think_only_fallback: '仅思考兜底文案', memory_recall_keywords: '记忆召回关键词', lang_usage: '语言用法提示', lang_invalid: '语言非法提示', lang_updated_template: '语言更新模板', subagents_none: '无子代理提示', sessions_none: '无会话提示', unsupported_action: '不支持操作提示', system_rewrite_template: '系统改写模板', runtime_compaction_note: '运行期压缩说明', startup_compaction_note: '启动期压缩说明', autonomy_important_keywords: '自治重要关键词', autonomy_completion_template: '自治完成模板', autonomy_blocked_template: '自治阻塞模板', context_compaction: '上下文压缩', mode: '模式', trigger_messages: '触发消息数', keep_recent_messages: '保留最近消息数', max_summary_chars: '摘要最大字符数', max_transcript_chars: '转录最大字符数', runtime_control: '运行时控制', intent_max_input_chars: '意图输入最大字符数', autonomy_tick_interval_sec: '自治轮询间隔(秒)', autonomy_min_run_interval_sec: '自治最小运行间隔(秒)', autonomy_idle_threshold_sec: '自治空闲阈值(秒)', autonomy_max_rounds_without_user: '自治无用户最大轮数', autonomy_max_pending_duration_sec: '自治最大挂起时长(秒)', autonomy_max_consecutive_stalls: '自治最大连续停滞次数', autolearn_max_rounds_without_user: '自学习无用户最大轮数', run_state_ttl_seconds: '运行状态 TTL(秒)', run_state_max: '运行状态上限', tool_parallel_safe_names: '工具并行安全名单', tool_max_parallel_calls: '工具最大并行调用数', session_resource_scheduling_enabled: '会话资源调度开关', session_max_parallel_runs: '会话最大并行数', session_auto_plan_enabled: '会话自动拆解开关', session_auto_plan_max_tasks: '会话自动拆解最大任务数', system_summary: '系统摘要', marker: '摘要标记', completed_prefix: '完成前缀', changes_prefix: '变更前缀', outcome_prefix: '结果前缀', completed_title: '完成标题', changes_title: '变更标题', outcomes_title: '结果标题', inbound_message_id_dedupe_ttl_seconds: '入站消息去重 TTL(秒)', inbound_content_dedupe_window_seconds: '入站内容去重窗口(秒)', outbound_dedupe_window_seconds: '出站去重窗口(秒)', telegram: 'Telegram', allow_from: '允许发送者', allow_chats: '允许会话', enable_groups: '启用群组', require_mention_in_groups: '群组需 @ 提及', discord: 'Discord', maixcam: 'MaixCam', whatsapp: 'WhatsApp', bridge_url: '桥接地址', feishu: '飞书', app_id: '应用 ID', app_secret: '应用密钥', encrypt_key: '加密 Key', verification_token: '校验 Token', dingtalk: '钉钉', filesystem: '文件系统', working_dir: '工作目录', timeout: '超时', auto_install_missing: '自动安装缺失依赖', sandbox: '沙箱', image: '镜像', web: 'Web', search: '搜索', max_results: '最大结果数', proxies: '代理集合', cross_session_call_id: '跨会话调用 ID', supports_responses_compact: '支持紧凑 responses', min_sleep_sec: '最小休眠(秒)', max_sleep_sec: '最大休眠(秒)', retry_backoff_base_sec: '重试退避基准(秒)', retry_backoff_max_sec: '重试退避上限(秒)', max_consecutive_failure_retries: '最大连续失败重试次数', max_workers: '最大 worker 数', dir: '目录', filename: '文件名', max_size_mb: '最大大小(MB)', retention_days: '保留天数' } } } }; i18n .use(LanguageDetector) .use(initReactI18next) .init({ resources, fallbackLng: 'zh', interpolation: { escapeValue: false, }, }); export default i18n;