refactor(i18n): U23 Task 模块 i18n 治理 — 4 文件 phantom key + hash key + 硬编码中文清零

- CronJobManager/CronJobFormDialog/ScriptManager/RemoteExecPage
  从 import i18n 全局调用改为 useTranslation() hook
- 42 处 phantom key (i18n.t('Chinese text') → 语义化键)
- 28 个孤儿 hash key 清理 (cronjobformdial.s*/remoteexecpaget.s*)
- 50+ 处硬编码 JSX 中文 → t() 调用
- 新增 task.cronJob.*/task.scriptList.*/task.remoteExec.* 子命名空间
- zh/en 6825→6886 keys 对齐
- tsc -b=0, npm build✓ (17.46s), ESLint=0/45/0, go build=0
- 17/17 集成回归测试通过
This commit is contained in:
attacker committed 2026-07-11 17:48:04 +08:00
1 parent a8f6fd190b
commit de6f9454fc
7 files changed
+361 -229

No files matched your search

+97 -28
View File
@@ -4520,6 +4520,56 @@
"minutesAgo": "{{count}}m ago",
"hoursAgo": "{{count}}h ago",
"daysAgo": "{{count}}d ago"
},
"form": {
"titleCreate": "Create Cron Job",
"titleEdit": "Edit Cron Job",
"desc": "Configure scheduled tasks with script association or custom commands",
"labelName": "Job Name",
"labelDesc": "Description",
"labelCronExpr": "Cron Expression",
"labelJobType": "Execution Type",
"labelScript": "Select Script",
"labelCommand": "Command",
"placeholderName": "e.g., Database backup",
"placeholderCommand": "/scripts/backup.sh arg1 arg2",
"quickSelect": "Quick Select",
"cronHint": "Format: minute hour day month weekday",
"noScriptType": "No {{type}} scripts found in script library",
"noScriptHint": "Please create a {{type}} script in Script Library first",
"selectScriptPlaceholder": "Select a script from library...",
"emptyScript": "(empty script)",
"scriptLines": "{{count}} lines",
"cancel": "Cancel",
"toastNameRequired": "Please fill in job name and Cron expression",
"toastSaved": "Job saved successfully"
},
"typeShell": "Link to Shell scripts from the script library",
"typePython": "Link to Python scripts from the script library",
"typePowershell": "Link to PowerShell scripts from the script library",
"typeCommandDesc": "Manually enter command or script path",
"typeCommandLabel": "Custom Command",
"list": {
"subtitle": "Cron Scheduler · Script Execution · Built-in System Tasks",
"searchPlaceholder": "Search name, description, script...",
"filterStatus": "Status",
"filterHealth": "Health",
"filterType": "Type",
"selectAll": "Select All",
"batchDelete": "Delete",
"clearFilter": "Clear Filters",
"filterResult": "Filtered {{shown}}/{{total}}",
"selectedCount": "{{count}} selected",
"allHistory": "All History",
"refresh": "Refresh",
"create": "Create",
"createTask": "New Task",
"delete": "Delete Cron Job",
"toastToggled": "Status toggled",
"toastDeleted": "{{count}} jobs deleted",
"batchDeleteConfirm": "Delete {{count}} selected jobs? This cannot be undone.",
"confirmDelete": "Delete \"{{name}}\"? This cannot be undone.",
"execDuration": "Duration: {{ms}}ms"
}
},
"script": {
@@ -4566,34 +4616,53 @@
"noPython": "Python is not installed. Python scripts will not be executable.",
"partialUnavailable": "Some interpreters are unavailable; scripts of those types cannot run after creation."
},
"remoteexecpaget.seb6e67f1": "Batch Execute Commands",
"remoteexecpaget.s30048caa": "Batch Upload Files",
"remoteexecpaget.sb7e21a1e": "Select Local File",
"remoteexecpaget.sb47f0323": "Remote target path (filename auto-appended for directories)",
"cronjobformdial.s2e10ee70": "Configure Cron Job",
"cronjobformdial.s3b56b1f9": "Format: min hour day month weekday",
"cronjobformdial.s15d864c1": "Execution Type",
"systemtaskspanel.s4d5e6f7g": "Built-in",
"systemtaskspanel.s5e6f7g8h": "Process-level built-in scheduling, not editable; cleanup and cost tasks support manual trigger",
"systemtaskspanel.s6f7g8h9i": "{{count}} tasks",
"systemtaskspanel.s7g8h9i0j": "{{count}} failed",
"systemtaskspanel.s8h9i0j1k": "Task",
"systemtaskspanel.s9i0j1k2l": "Schedule / Description",
"systemtaskspanel.s0j1k2l3m": "Last Run",
"systemtaskspanel.s1k2l3m4n": "Actions",
"systemtaskspanel.s2l3m4n5o": "Retain {{days}} days",
"systemtaskspanel.s3m4n5o6p": "{{count}} runs",
"systemtaskspanel.s4n5o6p7q": "Auto",
"systemtaskspanel.s5o6p7q8r": "Run Now",
"systemtaskspanel.s6p7q8r9s": "Manually run system task '{{name}}'?",
"systemtaskspanel.s7q8r9s0t": "Execute",
"systemtaskspanel.s8r9s0t1u": "Execution completed",
"systemtaskspanel.s9s0t1u2v": "Execution failed",
"systemtaskspanel.s0t1u2v3w": "Failed to load system tasks",
"systemtaskspanel.s1u2v3w4x": "No system tasks",
"systemtaskspanel.monitor": "Monitor",
"systemtaskspanel.cleanup": "Cleanup",
"systemtaskspanel.finops": "Cost"
"scriptList": {
"subtitle": "Script editing and management",
"refresh": "Refresh",
"create": "New Script",
"batchDelete": "Batch Delete",
"cancelSelect": "Cancel Selection",
"selectedCount": "{{selected}} selected / {{total}} total",
"empty": "No scripts",
"emptyHint": "Click \"New Script\" to create your first one",
"delete": "Delete Script",
"confirmDelete": "Delete \"{{name}}\"? This cannot be undone.",
"batchDeleteConfirm": "Delete {{count}} selected scripts? This cannot be undone.",
"toastDeleted": "{{count}} scripts deleted",
"toastFetchFailed": "Failed to fetch script list",
"toastSaved": "Script saved successfully",
"toastNameRequired": "Please fill in script name and content",
"copySuffix": "(copy)"
},
"remoteExec": {
"subtitle": "Batch execute commands / upload files via native SSH",
"refresh": "Refresh",
"searchPlaceholder": "Search hostname/IP",
"emptyHint": "Add servers in Server Management first",
"selectAllCount": "All ({{count}})",
"selectedCount": "{{count}} selected",
"tabExec": "Execute Command",
"tabUpload": "Upload File",
"execTitle": "Batch Execute Commands",
"execPlaceholder": "Enter shell command to run on selected hosts, e.g.: df -h | head -5",
"execButton": "Execute ({{count}} hosts)",
"execResultTitle": "Results",
"uploadTitle": "Batch Upload Files",
"uploadFileLabel": "Select Local File",
"uploadPathLabel": "Remote target path (directories auto-append filename)",
"uploadPathPlaceholder": "/tmp/ or /opt/app/config.yaml",
"uploadButton": "Upload ({{count}} hosts)",
"toastFetchFailed": "Failed to load server list",
"toastCommandRequired": "Please enter a command to execute",
"toastHostRequired": "Please select at least one host",
"toastFileRequired": "Please select a file to upload",
"toastPathRequired": "Please enter a remote target path",
"toastExecResult": "Execution complete: {{success}}/{{total}} succeeded",
"toastUploadResult": "Upload complete: {{success}}/{{total}} succeeded",
"toastExecConfirm": "Confirm batch execution",
"toastExecConfirmDesc": "This will execute the command on {{count}} hosts. Please verify the command is safe:\n\n{{command}}",
"noOutput": "(no output)"
}
},
"rbac": {
"logRole": {