refactor(i18n): U19 i18n hash 键治理 — 删除 866 死键 + 重命名 21 高频键

死键清理: 从 zh-CN.json 和 en-US.json 移除 866 个重构遗弃的 unreferenced
hash keys (filename.hash 格式)。这些键在组件迁移到语义化键后成为孤儿。

Live 键重命名 (21 个):
  ui.datatable.s1a2b3c4d → selectedCount
  ui.datatable.s2b3c4d5e → columns
  ui.datatable.s3c4d5e6f → totalCount
  aiops.predictive.s{1-3} → metricsTab/capacityTab/costTab
  aiops.predictivecost.s{1-3} → aiFailed/overview/aiInsight
  task.systemtaskspanel.s{1-3} → monitor/cleanup/finops
  aiops.agentcli.s{1-3} → archLayer/archDesc/securityLayer
  system.useldapmanageme.s{1-2} → ouExists/createOuFailed
  common.requestts.sd3ab821c → common.request.tokenExpired
  k8s.editAdvanced.s0c1fec65 → secondsPlaceholder
  k8s.{kubectl,podExec}.sc8107726 → connectErrorAnsi

影响: zh/en 7597→6731 keys 对齐, 文件 328KB→276KB (-16%)
      仍有 172 个 live hash keys 待后续重命名

tsc -b=0, npm build✓ (17.45s), ESLint=0/66/0, go build=0, 17/17 测试通过
This commit is contained in:
attacker committed 2026-07-11 08:08:07 +08:00
1 parent 543365596d
commit bb2b50276a
12 files changed
+74 -73

No files matched your search

+28 -28
View File
@@ -376,7 +376,6 @@
"remark": "Remark",
"rename": "Rename",
"report": "Report",
"requestts.sd3ab821c": "Session expired, please log in again",
"required": "Required",
"reset": "Reset",
"restart": "Restart",
@@ -511,7 +510,8 @@
"createFailed": "Create failed",
"created": "Created",
"severity": "Severity",
"critical": "Critical"
"critical": "Critical",
"request.tokenExpired": "Session expired, please log in again"
},
"menu": {
"dashboard": "Dashboard",
@@ -2979,7 +2979,6 @@
"namespace": "所有命名空间"
},
"editAdvanced": {
"s0c1fec65": "seconds",
"noManifest": "Manifest data not loaded. Please use YAML editor to modify directly.",
"updateStrategy": "Update Strategy",
"rollingUpdate": "Rolling Update",
@@ -3002,7 +3001,8 @@
"hostPIDDesc": "Share host PID namespace",
"shareProcessDesc": "Share process namespace",
"save": "Save",
"saved": "update submitted"
"saved": "update submitted",
"secondsPlaceholder": "seconds"
},
"editBasic": {
"synced": "Synced",
@@ -3040,8 +3040,8 @@
"kubectl": {
"disconnected": "\\r\\n\\x1b[31m[连接已断开]\\x1b[0m\\r\\n",
"failed": "WebSocket 连接失败",
"sc8107726": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
"cluster": "正在连接集群..."
"cluster": "正在连接集群...",
"connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
},
"misc": {
"cluster1": "加载集群列表失败:",
@@ -3069,7 +3069,6 @@
"execError": "Execution error",
"reconnect": "\\r\\n\\x1b[33m⚠ bash 不可用,请切换 /bin/sh 后重连。\\x1b[0m",
"close": "\\r\\n\\x1b[33m[连接已关闭]\\x1b[0m\\r\\n",
"sc8107726": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
"connected": "Connected",
"connecting": "Connecting",
"connectionError": "Connection error",
@@ -3082,7 +3081,8 @@
"fullscreen": "Fullscreen",
"close1": "Close",
"container1": "正在进入容器...",
"enterPod": "Enter Pod container to execute commands"
"enterPod": "Enter Pod container to execute commands",
"connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
},
"podMetrics": {
"resources2": "Pod 资源用量",
@@ -4473,9 +4473,6 @@
"cronjobformdial.s2e10ee70": "Configure Cron Job",
"cronjobformdial.s3b56b1f9": "Format: min hour day month weekday",
"cronjobformdial.s15d864c1": "Execution Type",
"systemtaskspanel.s1a2b3c4d": "Monitor",
"systemtaskspanel.s2b3c4d5e": "Cleanup",
"systemtaskspanel.s3c4d5e6f": "Cost",
"systemtaskspanel.s4d5e6f7g": "Built-in",
"systemtaskspanel.s5e6f7g8h": "Process-level built-in scheduling, not editable; cleanup and cost tasks support manual trigger",
"systemtaskspanel.s6f7g8h9i": "{{count}} tasks",
@@ -4493,7 +4490,10 @@
"systemtaskspanel.s8r9s0t1u": "Execution completed",
"systemtaskspanel.s9s0t1u2v": "Execution failed",
"systemtaskspanel.s0t1u2v3w": "Failed to load system tasks",
"systemtaskspanel.s1u2v3w4x": "No system tasks"
"systemtaskspanel.s1u2v3w4x": "No system tasks",
"systemtaskspanel.monitor": "Monitor",
"systemtaskspanel.cleanup": "Cleanup",
"systemtaskspanel.finops": "Cost"
},
"rbac": {
"logRole": {
@@ -4571,12 +4571,12 @@
"codeSnippet": {
"copyDisabled": "Copy disabled"
},
"datatable.s1a2b3c4d": "{{count}} selected",
"datatable.s2b3c4d5e": "Cols",
"datatable.s3c4d5e6f": "{{count}} total",
"datatable.s4d5e6f7g": "{{count}} selected",
"datatable.s5e6f7g8h": "Yes",
"datatable.s6f7g8h9i": "No"
"datatable.s6f7g8h9i": "No",
"datatable.selectedCount": "{{count}} selected",
"datatable.columns": "Cols",
"datatable.totalCount": "{{count}} total"
},
"kubernetes": {
"cluster": {
@@ -6608,8 +6608,8 @@
"useauditsetting.s32e8a76e": "Failed to load audit settings",
"useauditsetting.s51680af0": "Please select valid retention days",
"useauditsetting.s7d55bd57": ", no expired records",
"useldapmanageme.s1a2b3c4d": "OU \"{{name}}\" already exists, please use a different name",
"useldapmanageme.s2b3c4d5e": "Failed to create OU: "
"useldapmanageme.ouExists": "OU \"{{name}}\" already exists, please use a different name",
"useldapmanageme.createOuFailed": "Failed to create OU: "
},
"aiops": {
"title": "AIOps",
@@ -7009,9 +7009,6 @@
"predictutilsts.providerTencent": "Tencent Cloud",
"predictutilsts.providerHuawei": "Huawei Cloud",
"predictutilsts.daysUntilThreshold": "Threshold in {{days}} days",
"agentcli.s1a2b3c4d": "LLM + Tool Layer",
"agentcli.s2b3c4d5e": "OpenAI-compatible LLM; tools include ssh_execute (remote execution) and analyze_output (output analysis).",
"agentcli.s3c4d5e6f": "Security + Prompt",
"agentcli.s4d5e6f7g": "Five-level risk assessment + three-level safety mode; dangerous commands blocked, high-risk requires confirmation.",
"agentcli.s5e6f7g8h": "ReAct Core Engine",
"agentcli.s6f7g8h9i": "Think-Act-Observe loop (up to 16 rounds), retry on failure, loop detection to prevent infinite loops.",
@@ -7078,9 +7075,6 @@
"agentcli.s7y8z9a0b": "Denied execution: {{name}}",
"agentcli.s8z9a0b1c": "Please select a target host first",
"agentcli.s4f5g6h7i": "Connection not ready, please try again later",
"predictivecost.s1a2b3c4d": "AI analysis failed, check LLM configuration or try again later",
"predictivecost.s2b3c4d5e": "Cloud Cost Prediction Overview",
"predictivecost.s3c4d5e6f": "AI Deep Analysis",
"predictivecost.s4d5e6f7g": "Loading billing data...",
"predictivecost.s5e6f7g8h": "No billing data, add cost records in Cloud Billing Management first",
"predictivecost.s6f7g8h9i": "Bills front-loaded at month start, recent 7-day avg {{avg}}; may contain pre-paid or retired resources; prediction uses recent run rate.",
@@ -7104,9 +7098,6 @@
"predictivecost.s4x5y6z7a": "Monthly budget",
"predictivecost.s5y6z7a8b": "Current {{current}} / Threshold {{threshold}}, Predicted {{predicted}}",
"predictivecost.s6z7a8b9c": "Breach probability",
"predictive.s1a2b3c4d": "Metric Forecast",
"predictive.s2b3c4d5e": "Capacity Planning",
"predictive.s3c4d5e6f": "Cost Forecast",
"predictive.s4d5e6f7g": "Predictive Analysis",
"predictive.s5e6f7g8h": "Linear regression prediction, capacity planning and cost forecasting based on real-time metrics and cloud billing",
"predictive.s6f7g8h9i": "Confidence",
@@ -7142,7 +7133,16 @@
"predictutilsts.su1v2w3x4": "1. Use **bold subtitles** for sections with 1 key point each, e.g.: **Data Anomalies**, **Idle Resource Cleanup**, **Billing Mode Optimization**, **Storage Lifecycle**",
"predictutilsts.sv2w3x4y5": "2. If monthly avg and recent 7-day avg clearly contradict predicted month-end, explain in 'Data Anomalies' (pre-paid/shutdown etc.)",
"predictutilsts.sw3x4y5z6": "3. Give actionable recommendations per top service (EIP/disk/ECS spec/OSS lifecycle/reserved instances etc.)",
"predictutilsts.sx4y5z6a7": "4. Pick 3-5 most relevant recommendations, under 350 words, no generic platitudes"
"predictutilsts.sx4y5z6a7": "4. Pick 3-5 most relevant recommendations, under 350 words, no generic platitudes",
"predictive.metricsTab": "Metric Forecast",
"predictive.capacityTab": "Capacity Planning",
"predictive.costTab": "Cost Forecast",
"predictivecost.aiFailed": "AI analysis failed, check LLM configuration or try again later",
"predictivecost.overview": "Cloud Cost Prediction Overview",
"predictivecost.aiInsight": "AI Deep Analysis",
"agentcli.archLayer": "LLM + Tool Layer",
"agentcli.archDesc": "OpenAI-compatible LLM; tools include ssh_execute (remote execution) and analyze_output (output analysis).",
"agentcli.securityLayer": "Security + Prompt"
},
"breadcrumb": {
"dashboard": "Dashboard",