feat(i18n): U5 Kubernetes 模块国际化 — 新增 k8s 命名空间(184键) + KubernetesClusterDetail/TopologyView 全量迁移硬编码中文改翻译键

- 新增 k8s 翻译命名空间: cluster/tab/column/empty/label/topology/resource/workload 8 子命名空间
- KubernetesClusterDetail.tsx: 7 Tab(概览/节点/Pod/Deployment/Service/Ingress/事件) 表头+空状态+趋势图标签全量国际化
- TopologyView.tsx: 标题/编辑模式/连线模式/节点编辑弹框/Toast/搜索栏全量国际化
- 新增 common.duration.minAgo 插值键
- 翻译键 1019→1204(+185), 11 命名空间, zh-CN/en-US 完全对齐
- tsc --noEmit=0, npm build✅(17.81s), 17/17 测试通过
This commit is contained in:
attacker committed 2026-07-01 02:28:33 +08:00
1 parent 3b19ae6e98
commit 6db6acc6bd
7 files changed
+611 -129

No files matched your search

+204 -1
View File
@@ -77,7 +77,8 @@
"min": "{{count}}m",
"minSec": "{{m}}m {{s}}s",
"hour": "{{count}}h",
"hourMin": "{{h}}h {{m}}m"
"hourMin": "{{h}}h {{m}}m",
"minAgo": "{{count}} min ago"
}
},
"menu": {
@@ -1145,5 +1146,207 @@
"allType": "All Types",
"pagination": "{{n}}/page"
}
},
"k8s": {
"cluster": {
"detail": "Cluster Details",
"version": "Version",
"nodeCount": "nodes",
"created": "Created",
"loadFailed": "Failed to load cluster details",
"resourceTrend": "Resource Usage Trend (simulated)",
"refreshMetrics": "Refresh node metrics",
"resourceDistribution": "Resource Distribution",
"now": "Now"
},
"tab": {
"overview": "Overview",
"nodes": "Nodes",
"pods": "Pods",
"deployments": "Deployments",
"services": "Services",
"ingresses": "Ingresses",
"events": "Events"
},
"column": {
"name": "Name",
"namespace": "Namespace",
"role": "Role",
"status": "Status",
"cpu": "CPU",
"memory": "Memory",
"os": "OS",
"restartCount": "Restarts",
"node": "Node",
"replicas": "Replicas",
"availableReplicas": "Available",
"image": "Image",
"type": "Type",
"ports": "Ports",
"selector": "Selector",
"hosts": "Hosts",
"backend": "Backend",
"tls": "TLS",
"createdAt": "Created"
},
"empty": {
"nodes": "No node data",
"pods": "No pod data",
"deployments": "No deployment data",
"services": "No service data",
"ingresses": "No ingress data",
"events": "No events"
},
"label": {
"cpu": "CPU",
"memory": "Memory",
"cpuPercent": "CPU(%)",
"memoryPercent": "Memory(%)",
"enabled": "Enabled",
"disabled": "Disabled",
"cores": "cores"
},
"topology": {
"title": "Architecture Topology",
"selectCluster": "Select Cluster",
"allResources": "All Resources",
"editMode": "Edit Mode",
"connectMode": "Connect Mode",
"saveLayout": "Save Layout",
"resetLayout": "Reset Layout",
"addNode": "Add Node",
"editNode": "Edit Node",
"deleteNode": "Delete Node",
"nodeName": "Node Name",
"nodeType": "Node Type",
"nodeNote": "Note",
"searchPlaceholder": "Search nodes...",
"noData": "No topology data, please select a cluster",
"layoutSaved": "Layout saved",
"layoutSaveFailed": "Save failed",
"layoutReset": "Layout has been reset",
"connectHint": "Click two nodes to create a connection",
"cancelConnect": "Cancel Connection",
"confirmDeleteNode": "Delete node \"{{name}}\"?",
"customNode": "Custom Node",
"dragHint": "Drag nodes to adjust position",
"subtitle": "Kubernetes cluster resource topology visualization · drag nodes to adjust layout",
"editModeActive": "Edit Mode",
"connecting": "Connecting",
"selectTarget": "select target node",
"selectSource": "select source node",
"sourceSelected": "Source node selected: {{name}}, click target node",
"connectSelf": "Cannot connect to itself",
"connectAdded": "Connection added",
"exitEdit": "Exit Edit",
"addConnection": "Add Connection",
"autoGenerate": "Auto Regenerate",
"autoGenerateTitle": "Ignore saved layout and regenerate based on K8s resources (Ingress path→Svc→Deploy→Pod)",
"saving": "Saving...",
"resetConfirm": "This will clear the saved layout and auto-arrange again",
"editToolbarHint": "Double-click node to edit · Click dashed line to delete · Drag to reposition",
"totalNodes": "Total Nodes",
"connections": "Connections",
"custom2": "Custom",
"allTypes": "All Types",
"noDataWithCluster": "No topology data for this cluster",
"noDataSelectCluster": "Select a cluster to view topology",
"nodeList": "Node List",
"clickToViewDetail": "Click a node to view details",
"noNodes": "No nodes",
"customSuffix": "Custom",
"relatedConnections": "Related Connections",
"noConnections": "No related connections",
"editNodeTitle": "Edit Node",
"addNodeTitle": "Add Custom Node",
"editNodeDesc": "Modify node properties",
"addNodeDesc": "Add non-Kubernetes resources like databases, external services",
"namePlaceholder": "e.g. MySQL Primary, Redis Cluster",
"notePlaceholder": "Connection info, usage notes, etc.",
"add2": "Add",
"nodeUpdated": "Node updated",
"nodeAdded": "Node added",
"nodeDeleted": "Node deleted",
"deleteNodeTitle": "Delete Node",
"deleteNodeDesc": "Delete \"{{name}}\"? Related connections will also be removed",
"deleteEdgeTitle": "Delete Connection",
"deleteEdgeDesc": "Delete this custom connection?",
"edgeDeleted": "Connection deleted",
"nativeEdgeNoDelete": "Kubernetes native relationships cannot be deleted",
"nodeTypeLabel": "Node Type",
"nodeNameRequired": "Please enter a node name",
"deleteText": "✕ Delete"
},
"resource": {
"configMaps": "ConfigMaps",
"secrets": "Secrets",
"services": "Services",
"ingresses": "Ingresses",
"pvcs": "Persistent Volume Claims",
"visualEditor": "Visual Editor",
"yamlEditor": "YAML Editor",
"editResource": "Edit Resource",
"visualMode": "Visual Mode",
"yamlMode": "YAML Mode",
"keyValuePairs": "Key-Value Pairs",
"addRow": "Add Row",
"key": "Key",
"value": "Value",
"decodedValue": "Decoded Value",
"portConfig": "Port Configuration",
"selectorConfig": "Selector Configuration",
"routeRules": "Route Rules",
"storageConfig": "Storage Configuration",
"targetPort": "Target Port",
"protocol": "Protocol",
"nodePort": "Node Port",
"serviceType": "Service Type",
"storageClass": "Storage Class",
"accessMode": "Access Mode",
"size": "Size",
"path": "Path",
"pathType": "Path Type",
"serviceName": "Service Name",
"servicePort": "Service Port",
"host": "Host",
"addPort": "Add Port",
"addRoute": "Add Route",
"addSelector": "Add Selector",
"labelKey": "Label Key",
"labelValue": "Label Value",
"noPorts": "No port configuration",
"noRoutes": "No route rules",
"noSelectors": "No selectors",
"saveSuccess": "Resource saved successfully",
"saveFailed": "Failed to save resource",
"parseFailed": "YAML parsing failed, please check the format",
"plaintext": "Plaintext",
"encoded": "Encoded"
},
"workload": {
"scheduling": "Scheduling",
"nodeName": "Node Name",
"nodeSelector": "Node Selector",
"nodeAffinity": "Node Affinity",
"service": "Service",
"storage": "Storage",
"updateStrategy": "Update Strategy",
"rollingUpdate": "Rolling Update",
"recreate": "Recreate",
"volumes": "Volumes",
"mounts": "Mounts",
"addVolume": "Add Volume",
"addMount": "Add Mount",
"portName": "Port Name",
"port": "Port",
"presetHttp": "HTTP",
"presetWebSocket": "WebSocket",
"presetGrpc": "gRPC",
"capacity": "Capacity",
"accessModes": "Access Modes",
"mountPath": "Mount Path",
"subPath": "Sub Path",
"readOnly": "Read Only"
}
}
}