mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-15 03:57:30 +08:00
872 lines
33 KiB
TypeScript
872 lines
33 KiB
TypeScript
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;
|