feat(i18n): 安全审计模块全量国际化 — 7 文件硬编码中文改翻译键 + audit 命名空间(89 键)

迁移文件:
- AuditOperationsTab.tsx — 操作审计(搜索/筛选/虚拟滚动表格/详情弹窗/统计弹窗)
- TerminalAuditTab.tsx — 终端审计子标签(在线/历史/命令)
- LoginLogsTab.tsx — 登录日志(DataTable + 状态筛选 + 登录方式)
- ActiveSessionsPanel.tsx — 在线会话(自动刷新 + 阻断确认 + 实时监控)
- HistorySessionsPanel.tsx — 历史会话(回放/下载录制)
- SessionCommandsPanel.tsx — 会话命令(虚拟滚动)
- helpers.tsx — formatDuration/getStatusBadge (i18n.t 非组件模式)

翻译键: audit 命名空间 89 键 (operations/login/terminal 三子域)
  + common.duration 时长单位(秒/分/时)
总键数: 481→610, 命名空间: 8→9 (common/menu/header/login/dashboard/server/alert/approval/audit)
zh-CN/en-US 完全对齐, tsc -b=0, npm build✓, 17/17 测试通过
This commit is contained in:
attacker committed 2026-06-29 20:44:08 +08:00
1 parent fef4997391
commit 186ece6495
10 files changed
+375 -141

No files matched your search

+110 -1
View File
@@ -71,7 +71,14 @@
"operationSuccess": "Operation succeeded",
"operationFailed": "Operation failed",
"loadFailed": "Failed to load",
"saveFailed": "Failed to save"
"saveFailed": "Failed to save",
"duration": {
"sec": "{{count}}s",
"min": "{{count}}m",
"minSec": "{{m}}m {{s}}s",
"hour": "{{count}}h",
"hourMin": "{{h}}h {{m}}m"
}
},
"menu": {
"dashboard": "Dashboard",
@@ -545,5 +552,107 @@
"templateNotLoaded": "Template not loaded",
"pleaseFill": "Please fill in \"{{label}}\""
}
},
"audit": {
"operations": {
"searchPlaceholder": "Search audit logs...",
"allModules": "All Modules",
"allActions": "All Actions",
"noData": "No audit logs",
"viewDetail": "View Details",
"totalLogs": "{{count}} logs",
"virtualScroll": "virtual scroll",
"detailTitle": "Audit Log Details",
"statsTitle": "Audit Statistics",
"noStats": "No statistics available",
"topModules": "Top Modules",
"topUsers": "Active Users",
"col": {
"time": "Time",
"user": "User",
"module": "Module",
"actionType": "Action",
"resource": "Resource",
"ip": "IP",
"result": "Result",
"detail": "Detail"
},
"detailCol": {
"userId": "User ID",
"ipAddress": "IP Address",
"userAgent": "User-Agent",
"message": "Message"
},
"stats": {
"totalLogs": "Total Logs",
"todayLogs": "Today",
"successCount": "Success",
"failureCount": "Failed"
}
},
"login": {
"searchPlaceholder": "Search user/IP/location...",
"noData": "No login logs",
"all": "All",
"col": {
"loginTime": "Login Time",
"user": "User",
"loginType": "Method",
"ip": "IP",
"location": "Location",
"browser": "Browser/OS",
"status": "Status"
},
"type": {
"password": "Password",
"ldap": "LDAP",
"token": "Token",
"oauth": "OAuth"
}
},
"terminal": {
"searchUserServer": "Search user/server...",
"searchUserServerIp": "Search user/server/IP...",
"searchUserCommand": "Search user/command...",
"sessionIdPlaceholder": "Session ID (optional)",
"noActive": "No active sessions",
"noHistory": "No history sessions",
"noCommands": "No command records",
"totalCommands": "{{count}} commands",
"virtualScroll": "virtual scroll",
"autoRefresh": "Auto Refresh",
"autoRefreshHintOn": "Auto-refresh every {{sec}}s · click to disable",
"autoRefreshHintOff": "Click to enable auto-refresh",
"killTitle": "Terminate Session",
"killConfirm": "Force disconnect user \"{{user}}\"'s current session?",
"killConfirmBtn": "Terminate",
"liveMonitor": "Live Monitor",
"replay": "Replay",
"downloadRecord": "Download Recording",
"tab": {
"active": "Active Sessions",
"history": "History Sessions",
"commands": "Session Commands"
},
"col": {
"id": "ID",
"user": "User",
"targetServer": "Target Server",
"port": "Port",
"startTime": "Start Time",
"endTime": "End Time",
"duration": "Duration",
"status": "Status",
"actions": "Actions",
"command": "Command",
"outputSize": "Output Size",
"sessionRef": "Session"
},
"status": {
"active": "Active",
"failed": "Failed",
"closed": "Closed"
}
}
}
}