-
-
+
+
{selector.map((s, i) => (
- updateSelector(i, 'key', e.target.value)} placeholder={i18n.t('键 (如 app)')} className="flex-1 min-w-0 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]" />
+ updateSelector(i, 'key', e.target.value)} placeholder={i18n.t('k8s.service.selectorKey')} className="flex-1 min-w-0 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]" />
=
- updateSelector(i, 'value', e.target.value)} placeholder={i18n.t('值 (如 nginx)')} className="flex-1 min-w-0 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]" />
+ updateSelector(i, 'value', e.target.value)} placeholder={i18n.t('k8s.service.selectorValue')} className="flex-1 min-w-0 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]" />
))}
diff --git a/frontend/src/components/kubernetes/workload-view/UpdateStrategySelectorCards.tsx b/frontend/src/components/kubernetes/workload-view/UpdateStrategySelectorCards.tsx
index 227eadb..53b53ac 100644
--- a/frontend/src/components/kubernetes/workload-view/UpdateStrategySelectorCards.tsx
+++ b/frontend/src/components/kubernetes/workload-view/UpdateStrategySelectorCards.tsx
@@ -20,13 +20,13 @@ export function UpdateStrategySelectorCards({ stats }: { stats: WorkloadStats })
- {i18n.t('服务名')}
+ {i18n.t('k8s.workloadView.serviceName')}
{strategyType}
{strategyType === 'RollingUpdate' && isSts && updateStrategy.rollingUpdate && (
<>
- {i18n.t('Pod 数量')}
+ {i18n.t('k8s.workloadView.podCount')}
{updateStrategy.rollingUpdate.partition ?? 0}
{updateStrategy.rollingUpdate.maxUnavailable && (
@@ -47,7 +47,7 @@ export function UpdateStrategySelectorCards({ stats }: { stats: WorkloadStats })
)}
{updateStrategy.rollingUpdate.maxSurge && (
- {i18n.t('Pod 数量')}
+ {i18n.t('k8s.workloadView.podCount')}
{typeof updateStrategy.rollingUpdate.maxSurge === 'object' ? JSON.stringify(updateStrategy.rollingUpdate.maxSurge) : updateStrategy.rollingUpdate.maxSurge}
)}
@@ -60,7 +60,7 @@ export function UpdateStrategySelectorCards({ stats }: { stats: WorkloadStats })
)}
- {i18n.t('服务名')}
+ {i18n.t('k8s.workloadView.serviceName')}
{spec.revisionHistoryLimit ?? 10}
diff --git a/frontend/src/locales/en-US.json b/frontend/src/locales/en-US.json
index 0a9d4be..8943146 100644
--- a/frontend/src/locales/en-US.json
+++ b/frontend/src/locales/en-US.json
@@ -2343,7 +2343,10 @@
"resourceTrend": "Resource Usage Trend (simulated)",
"refreshMetrics": "Refresh node metrics",
"resourceDistribution": "Resource Distribution",
- "now": "Now"
+ "now": "Now",
+ "allNamespaces": "All Namespaces",
+ "provider": "Provider",
+ "region": "Region"
},
"tab": {
"overview": "Overview",
@@ -2352,7 +2355,15 @@
"deployments": "Deployments",
"services": "Services",
"ingresses": "Ingresses",
- "events": "Events"
+ "events": "Events",
+ "statistics": "Statistics",
+ "cronJobs": "CronJobs",
+ "configMap": "ConfigMaps",
+ "secret": "Secrets",
+ "role": "Roles",
+ "roleBinding": "RoleBindings",
+ "serviceAccount": "Service Accounts",
+ "pvc": "PVCs"
},
"column": {
"name": "Name",
@@ -2703,7 +2714,13 @@
"deploymentDeleted": "{{name}} deleted",
"confirmDeletePod": "Confirm delete Pod \"{{name}}\"? This action cannot be undone.",
"deploymentNotFound": "Deployment not found: {{name}}",
- "imageLabel": "Image"
+ "imageLabel": "Image",
+ "resourceQuota": "Resource Quota",
+ "limitRange": "Limit Range",
+ "pdb": "Pod Disruption Budget",
+ "editYaml": "Edit YAML",
+ "imageUpdated": "Image updated successfully",
+ "hpaDeleted": "HPA deleted"
},
"podLogs": {
"noLogs": "No logs",
@@ -2726,7 +2743,11 @@
"loading": "Loading…",
"fetchFailed": "Failed to fetch logs",
"streamEnded": "Stream ended",
- "streamStopped": "Stream stopped"
+ "streamStopped": "Stream stopped",
+ "download": "Download Logs",
+ "searchPlaceholder": "Search logs...",
+ "previousLogs": "View previous (crashed) container logs",
+ "keywordFilter": "Keyword filter…"
},
"editMode": {
"basic": "Basic Info",
@@ -2791,7 +2812,8 @@
"minReplicas": "Min Replicas",
"maxReplicas": "Max Replicas",
"cpuTarget": "CPU Target (%)",
- "memTarget": "Memory Target (%)"
+ "memTarget": "Memory Target (%)",
+ "targetCPU": "Target CPU Utilization"
},
"redirect": {
"redirecting": "Redirecting..."
@@ -2889,7 +2911,14 @@
"colMessage": "Message",
"nameLabel": "Event name:",
"totalCount": "Total {{count}} events",
- "virtualScroll": "virtual scroll rendering"
+ "virtualScroll": "virtual scroll rendering",
+ "center": "Event Center",
+ "clusterAlerts": "Cluster Events & Alerts",
+ "normal": "Normal Events",
+ "warning": "Warning Events",
+ "warningType": "Warning Type",
+ "resourceType": "Resource Type",
+ "warningReason": "Warning Reason"
},
"yamlImport": {
"empty": "Please enter YAML",
@@ -3005,7 +3034,10 @@
"shareProcessDesc": "Share process namespace",
"save": "Save",
"saved": "update submitted",
- "secondsPlaceholder": "seconds"
+ "secondsPlaceholder": "seconds",
+ "maxSurge": "Max Surge",
+ "maxUnavailable": "Max Unavailable",
+ "strategyLabel": "Update Strategy"
},
"editBasic": {
"synced": "Synced",
@@ -3062,7 +3094,12 @@
"file": "File",
"upload": "Upload",
"readFailed": "Read failed",
- "uploadFailed": "Upload failed"
+ "uploadFailed": "Upload failed",
+ "confirmDelete": "Confirm Delete",
+ "scaleTo": "Scale to",
+ "restartConfirm": "Are you sure you want to restart this workload?",
+ "deleteWarning": "This action cannot be undone",
+ "yamlDocError": "Each YAML document must contain kind and metadata.name"
},
"namespaceResource": {
"delete1": "确认删除 Pod \"",
@@ -3085,14 +3122,17 @@
"close1": "Close",
"container1": "正在进入容器...",
"enterPod": "Enter Pod container to execute commands",
- "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
+ "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
+ "shell": "Shell"
},
"podMetrics": {
"resources2": "Pod 资源用量",
"container2": "容器 CPU/内存实时指标",
"cpu": "总 CPU",
"memory": "总内存",
- "namespace": "所有命名空间"
+ "namespace": "所有命名空间",
+ "cpuUsage": "CPU Usage",
+ "memUsage": "Memory Usage"
},
"resourceEditor": {
"create": "Create",
@@ -3133,7 +3173,11 @@
"servicePort": "Service Port",
"noSelector": "(No selector)",
"confirmDelete": "Confirm Delete",
- "deleteDesc": "This operation cannot be undone"
+ "deleteDesc": "This operation cannot be undone",
+ "portName": "Port Name",
+ "targetPort": "Target Port",
+ "protocol": "Protocol",
+ "serviceCreated": "Service created"
},
"editContainers": {
"noManifest": "Manifest data not loaded. Please use YAML editor to modify directly.",
@@ -3143,7 +3187,14 @@
"addNew": "Add New",
"initContainers": "Init Containers",
"workContainers": "Work Containers",
- "save": "Save"
+ "save": "Save",
+ "imageRequired": " image is required",
+ "nameRequired": " name is required",
+ "portNameRequired": "Port name is required",
+ "saved": "Container configuration saved",
+ "containerCount": "containers",
+ "secretPlaceholder": "Type Secret name and press Enter",
+ "initDesc": "Containers executed sequentially before main container starts, for environment initialization"
},
"editStorage": {
"volumes": "Volumes",
@@ -3154,13 +3205,34 @@
"noContainers": "(No containers)",
"readOnly": "Read Only",
"readWrite": "Read/Write",
- "save": "Save"
+ "save": "Save",
+ "emptyDir": "EmptyDir (temporary)",
+ "volumeNameRequired": "Volume name is required",
+ "selectConfigMap": "Please select a ConfigMap",
+ "selectSecret": "Please select a Secret",
+ "selectPVC": "Please select a PVC",
+ "typeRequired": " type field is required",
+ "incompleteConfig": "Volume configuration incomplete",
+ "mountPathRequired": "Mount path is required",
+ "saved": "Storage configuration saved",
+ "namePlaceholder": "e.g. app-logs / fluent-bit-config",
+ "mountPathPlaceholder": "Mount path /bitcloud/app/.../logs",
+ "typeRequiredHint": " type required field"
},
"clusterDialog": {
"nameHint": "Only English letters, numbers and hyphens (-) allowed. Cannot start or end with hyphen. Name will be the cluster unique identifier.",
"configured": "Configured (leave empty to keep)",
"kubeconfigHint": "API Server address will be auto-parsed after pasting kubeconfig content",
- "cancel": "Cancel"
+ "cancel": "Cancel",
+ "nameRule": "Only letters, digits, and hyphens (-) allowed; cannot start or end with a hyphen",
+ "nameInvalid": "Please enter a valid cluster name (letters/digits/hyphens)",
+ "saveFailed": "Failed to save cluster:",
+ "namePlaceholder": "e.g. prod-cluster",
+ "descLabel": "Cluster description",
+ "tokenPlaceholder": "Paste Service Account Token...",
+ "tokenConfigured": "Configured, enter new value to override...",
+ "addTitle": "Add Cluster",
+ "editTitle": "Edit Cluster"
},
"nodeDetail": {
"nodeTitle": "Node Details",
@@ -3184,6 +3256,167 @@
"podsOnNode": "Pods on Node",
"noPodsOnNode": "No pods on this node",
"cpuRequest": "CPU Request"
+ },
+ "nsResource": {
+ "deployDesc": "Deployment workload status",
+ "podDesc": "Pod instance status",
+ "serviceDesc": "Service networking",
+ "ingressDesc": "Ingress routing rules",
+ "configMapDesc": "Configuration maps",
+ "secretDesc": "Secret management (name and type only)",
+ "hpaDesc": "Horizontal Pod Autoscaler",
+ "pvcDesc": "Persistent Volume Claims",
+ "stsDesc": "StatefulSets",
+ "dsDesc": "DaemonSets",
+ "saDesc": "Service Accounts (RBAC identity)",
+ "roleDesc": "Namespace-level Roles (RBAC)",
+ "rbDesc": "RoleBindings (RBAC authorization)",
+ "viewYaml": "View YAML",
+ "resourceName": "Name",
+ "namespace": "Namespace"
+ },
+ "nsOverview": {
+ "workloadReplicas": "Workload replica management",
+ "podStatus": "Container instance status",
+ "cronjobManage": "CronJob management",
+ "serviceDiscovery": "Service discovery & load balancing",
+ "externalRoute": "External traffic routing rules",
+ "configMaps": "Configuration maps",
+ "secrets": "Secrets & credentials",
+ "hpaStrategy": "Horizontal autoscaling strategy",
+ "loadingStats": "Loading resource statistics..."
+ },
+ "deploymentWorkload": {
+ "loadFailed": "Failed to load details:",
+ "manifestFailed": "Failed to load manifest (edit degraded):",
+ "restartSent": "Restart command sent",
+ "restarting": "Deployment rolling restart in progress",
+ "scaleSuccess": "Scale successful",
+ "loading": "Loading Deployment...",
+ "create": "New Deployment",
+ "withService": "Includes associated Service",
+ "manifestLoadFailed": "Failed to load manifest (edit degraded):"
+ },
+ "deploymentView": {
+ "rollbackVersion": "Rollback Version",
+ "rollbackSent": "Rollback initiated",
+ "scaleSent": "Scaling submitted",
+ "pods": "Pods",
+ "access": "Access",
+ "scale": "Scale"
+ },
+ "rve": {
+ "visualUnavailable": "Visual editor unavailable",
+ "fallbackYaml": "Unable to parse resource structure, switched to YAML edit mode",
+ "saveFailed": "Save failed",
+ "parseFailed": "Unable to parse YAML",
+ "parseFailedHint": "Please check syntax and continue in YAML mode",
+ "downloaded": "Downloaded",
+ "hostPlaceholder": "Domain (e.g. api.example.com)",
+ "keyPlaceholder": "Key name (e.g. LOG_LEVEL)",
+ "parseYamlFailed": "Unable to parse YAML",
+ "checkSyntax": "Please check syntax and continue in YAML mode",
+ "fallbackToYaml": "Unable to parse resource structure, switched to YAML edit mode"
+ },
+ "workloadView": {
+ "restartSent": "Restart command sent",
+ "restartFailed": "Restart failed",
+ "loading": "Loading workload...",
+ "restarting": "Restarting...",
+ "currentReplicas": "Current Replicas",
+ "desiredSchedule": "Desired Schedule",
+ "serviceName": "Service Name",
+ "podCount": "Pod Count",
+ "actualSchedule": "Actual Schedule"
+ },
+ "pvc": {
+ "sizeLabel": "Size",
+ "accessMode": "Access Mode",
+ "storageClass": "Storage Class",
+ "sizePlaceholder": "e.g. 10Gi",
+ "scPlaceholder": "Leave empty for default StorageClass"
+ },
+ "service": {
+ "portName": "Port Name",
+ "portNum": "Port",
+ "targetPort": "Target Port",
+ "protocol": "Protocol",
+ "nodePort": "Node Port",
+ "sessionAffinity": "Session Affinity",
+ "externalTrafficPolicy": "External Traffic Policy",
+ "portLabel": "Port",
+ "selectorKey": "Key (e.g. app)",
+ "selectorValue": "Value (e.g. nginx)"
+ },
+ "ingress": {
+ "host": "Host",
+ "path": "Path",
+ "pathType": "Path Type",
+ "backend": "Backend Service",
+ "backendPort": "Backend Port",
+ "tlsSecret": "TLS Certificate",
+ "pathPlaceholder": "Path /"
+ },
+ "configMap": {
+ "key": "Key",
+ "value": "Value",
+ "addKey": "Add Key-Value",
+ "collapseAll": "Collapse All"
+ },
+ "secret": {
+ "type": "Type",
+ "data": "Data",
+ "addKey": "Add Key",
+ "collapseAll": "Collapse All"
+ },
+ "nodes": {
+ "ready": "Ready",
+ "notReady": "Not Ready",
+ "selectCluster": "Select Cluster",
+ "subtitle": "Kubernetes cluster node status and resources",
+ "noData": "No node data"
+ },
+ "capacityPage": {
+ "title": "Capacity Management"
+ },
+ "nsMgmt": {
+ "status": "Status",
+ "age": "Age",
+ "quota": "Quota",
+ "labels": "Labels",
+ "searchPlaceholder": "Search namespaces...",
+ "title": "Namespace Management",
+ "quotaLimit": "Quota Limits",
+ "nameExample": "e.g. my-app"
+ },
+ "clusterOverview": {
+ "nodeCount": "Nodes",
+ "podCount": "Pods",
+ "serviceCount": "Services",
+ "notFound": "Cluster not found",
+ "title": "Cluster Overview"
+ },
+ "controlBar": {
+ "allNs": "All Namespaces",
+ "searchPlaceholder": "Search resources...",
+ "refresh": "Refresh",
+ "create": "Create"
+ },
+ "nsResourcePage": {
+ "loading": "Loading...",
+ "noData": "No data",
+ "exportCsv": "Export CSV",
+ "exportJson": "Export JSON",
+ "exportYaml": "Export namespace YAML (tar.gz)"
+ },
+ "yamlViewer": {
+ "copy": "Copy",
+ "download": "Download",
+ "copied": "Copied",
+ "fetchFailed": "Failed to fetch YAML"
+ },
+ "podFile": {
+ "loadFailed": "Failed to load file list"
}
},
"monitor": {
diff --git a/frontend/src/locales/zh-CN.json b/frontend/src/locales/zh-CN.json
index aea10ca..7dbd4a6 100644
--- a/frontend/src/locales/zh-CN.json
+++ b/frontend/src/locales/zh-CN.json
@@ -2343,7 +2343,10 @@
"resourceTrend": "资源使用趋势(模拟最近变化)",
"refreshMetrics": "刷新节点指标",
"resourceDistribution": "资源分布",
- "now": "现在"
+ "now": "现在",
+ "allNamespaces": "全部命名空间",
+ "provider": "提供商",
+ "region": "区域"
},
"tab": {
"overview": "概览",
@@ -2352,7 +2355,15 @@
"deployments": "Deployment",
"services": "Service",
"ingresses": "Ingress",
- "events": "事件"
+ "events": "事件",
+ "statistics": "统计",
+ "cronJobs": "定时任务",
+ "configMap": "配置字典",
+ "secret": "密钥",
+ "role": "角色",
+ "roleBinding": "角色绑定",
+ "serviceAccount": "服务账号",
+ "pvc": "存储卷"
},
"column": {
"name": "名称",
@@ -2703,7 +2714,13 @@
"deploymentDeleted": "{{name}} 已删除",
"confirmDeletePod": "确认删除 Pod \"{{name}}\"?操作不可恢复。",
"deploymentNotFound": "未找到 Deployment: {{name}}",
- "imageLabel": "镜像"
+ "imageLabel": "镜像",
+ "resourceQuota": "资源配额",
+ "limitRange": "限制范围",
+ "pdb": "Pod 干扰预算",
+ "editYaml": "编辑 YAML",
+ "imageUpdated": "镜像更新成功",
+ "hpaDeleted": "HPA 已删除"
},
"podLogs": {
"noLogs": "无日志",
@@ -2726,7 +2743,11 @@
"loading": "加载中…",
"fetchFailed": "获取日志失败",
"streamEnded": "流式传输结束",
- "streamStopped": "流式传输已停止"
+ "streamStopped": "流式传输已停止",
+ "download": "下载日志",
+ "searchPlaceholder": "搜索日志...",
+ "previousLogs": "查看上一次(崩溃)容器的日志",
+ "keywordFilter": "关键字过滤…"
},
"editMode": {
"basic": "基本信息",
@@ -2791,7 +2812,8 @@
"minReplicas": "最小副本数",
"maxReplicas": "最大副本数",
"cpuTarget": "CPU 目标 (%)",
- "memTarget": "内存目标 (%)"
+ "memTarget": "内存目标 (%)",
+ "targetCPU": "目标 CPU 使用率"
},
"redirect": {
"redirecting": "正在跳转..."
@@ -2889,7 +2911,14 @@
"colMessage": "消息",
"nameLabel": "事件名:",
"totalCount": "共 {{count}} 条事件",
- "virtualScroll": "虚拟滚动渲染"
+ "virtualScroll": "虚拟滚动渲染",
+ "center": "事件中心",
+ "clusterAlerts": "集群事件与告警",
+ "normal": "正常事件",
+ "warning": "告警事件",
+ "warningType": "告警类型",
+ "resourceType": "资源类型",
+ "warningReason": "告警原因"
},
"yamlImport": {
"empty": "请输入 YAML",
@@ -3005,7 +3034,10 @@
"shareProcessDesc": "共享进程命名空间",
"save": "保存",
"saved": "更新已提交",
- "secondsPlaceholder": "秒"
+ "secondsPlaceholder": "秒",
+ "maxSurge": "最大超出",
+ "maxUnavailable": "最大不可用",
+ "strategyLabel": "更新策略"
},
"editBasic": {
"synced": "已同步",
@@ -3062,7 +3094,12 @@
"file": "文件",
"upload": "上传",
"readFailed": "读取失败",
- "uploadFailed": "上传失败"
+ "uploadFailed": "上传失败",
+ "confirmDelete": "确认删除",
+ "scaleTo": "伸缩至",
+ "restartConfirm": "确定要重启此工作负载吗?",
+ "deleteWarning": "此操作不可恢复",
+ "yamlDocError": "每个 YAML 文档必须包含 kind 和 metadata.name"
},
"namespaceResource": {
"delete1": "确认删除 Pod \"",
@@ -3085,14 +3122,17 @@
"close1": "关闭",
"container1": "正在进入容器...",
"enterPod": "进入 Pod 容器执行命令",
- "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
+ "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
+ "shell": "Shell"
},
"podMetrics": {
"resources2": "Pod 资源用量",
"container2": "容器 CPU/内存实时指标",
"cpu": "总 CPU",
"memory": "总内存",
- "namespace": "所有命名空间"
+ "namespace": "所有命名空间",
+ "cpuUsage": "CPU 使用",
+ "memUsage": "内存使用"
},
"resourceEditor": {
"create": "新建",
@@ -3133,7 +3173,11 @@
"servicePort": "Service 端口",
"noSelector": "(无 selector)",
"confirmDelete": "确认删除",
- "deleteDesc": "此操作不可撤销"
+ "deleteDesc": "此操作不可撤销",
+ "portName": "端口名称",
+ "targetPort": "目标端口",
+ "protocol": "协议",
+ "serviceCreated": "Service 已创建"
},
"editContainers": {
"noManifest": "未获取到 manifest 数据,请使用 YAML 编辑模式直接修改。",
@@ -3143,7 +3187,14 @@
"addNew": "新增",
"initContainers": "初始化容器",
"workContainers": "工作容器",
- "save": "保存"
+ "save": "保存",
+ "imageRequired": "的镜像不能为空",
+ "nameRequired": "的名称不能为空",
+ "portNameRequired": "端口名称不能为空",
+ "saved": "容器配置已保存",
+ "containerCount": "个容器",
+ "secretPlaceholder": "输入 Secret 名称后回车",
+ "initDesc": "在主容器启动前按顺序执行的容器,用于初始化环境"
},
"editStorage": {
"volumes": "数据卷",
@@ -3154,13 +3205,34 @@
"noContainers": "(无容器)",
"readOnly": "只读",
"readWrite": "读写",
- "save": "保存"
+ "save": "保存",
+ "emptyDir": "临时目录(EmptyDir)",
+ "volumeNameRequired": "请填写数据卷名称",
+ "selectConfigMap": "请选择 ConfigMap",
+ "selectSecret": "请选择 Secret",
+ "selectPVC": "请选择 PVC",
+ "typeRequired": "的类型必填项",
+ "incompleteConfig": "数据卷配置不完整",
+ "mountPathRequired": "请填写挂载路径",
+ "saved": "存储配置已保存",
+ "namePlaceholder": "如 app-logs / fluent-bit-config",
+ "mountPathPlaceholder": "挂载路径 /bitcloud/app/.../logs",
+ "typeRequiredHint": "的类型必填项"
},
"clusterDialog": {
"nameHint": "只允许英文、数字和连字符(-),首尾不能是连字符。名称将作为集群唯一标识。",
"configured": "已配置(留空不修改)",
"kubeconfigHint": "粘贴 kubeconfig 内容后将自动解析 API Server 地址",
- "cancel": "取消"
+ "cancel": "取消",
+ "nameRule": "只允许英文、数字和连字符(-),首尾不能是连字符",
+ "nameInvalid": "请输入有效的集群名称(英文/数字/连字符)",
+ "saveFailed": "保存集群失败:",
+ "namePlaceholder": "如: prod-cluster",
+ "descLabel": "集群用途描述",
+ "tokenPlaceholder": "粘贴 Service Account Token...",
+ "tokenConfigured": "已配置,输入新值覆盖...",
+ "addTitle": "添加集群",
+ "editTitle": "编辑集群"
},
"nodeDetail": {
"nodeTitle": "节点详情",
@@ -3184,6 +3256,167 @@
"podsOnNode": "节点上的 Pod",
"noPodsOnNode": "该节点上暂无 Pod",
"cpuRequest": "CPU 请求"
+ },
+ "nsResource": {
+ "deployDesc": "Deployment 工作负载运行状态",
+ "podDesc": "Pod 实例运行状态",
+ "serviceDesc": "Service 网络服务",
+ "ingressDesc": "Ingress 路由规则",
+ "configMapDesc": "配置字典",
+ "secretDesc": "密钥管理(仅名称与类型)",
+ "hpaDesc": "水平自动伸缩",
+ "pvcDesc": "存储卷声明",
+ "stsDesc": "有状态应用",
+ "dsDesc": "守护进程集",
+ "saDesc": "服务账号(RBAC 身份标识)",
+ "roleDesc": "命名空间级角色权限(RBAC)",
+ "rbDesc": "角色绑定关系(RBAC 授权)",
+ "viewYaml": "查看YAML",
+ "resourceName": "名称",
+ "namespace": "命名空间"
+ },
+ "nsOverview": {
+ "workloadReplicas": "工作负载副本管理",
+ "podStatus": "容器实例运行状态",
+ "cronjobManage": "定时任务管理",
+ "serviceDiscovery": "服务发现与负载均衡",
+ "externalRoute": "外部流量路由规则",
+ "configMaps": "配置字典",
+ "secrets": "密钥与凭证",
+ "hpaStrategy": "水平自动伸缩策略",
+ "loadingStats": "加载资源统计..."
+ },
+ "deploymentWorkload": {
+ "loadFailed": "加载详情失败:",
+ "manifestFailed": "加载 manifest 失败(编辑功能降级):",
+ "restartSent": "重启指令已下发",
+ "restarting": "Deployment 正在滚动重启",
+ "scaleSuccess": "扩缩容成功",
+ "loading": "加载 Deployment...",
+ "create": "新建 Deployment",
+ "withService": "含关联 Service",
+ "manifestLoadFailed": "加载 manifest 失败(编辑功能降级):"
+ },
+ "deploymentView": {
+ "rollbackVersion": "回滚版本",
+ "rollbackSent": "回滚已下发",
+ "scaleSent": "伸缩已提交",
+ "pods": "容器组",
+ "access": "访问方式",
+ "scale": "容器伸缩"
+ },
+ "rve": {
+ "visualUnavailable": "可视化编辑不可用",
+ "fallbackYaml": "无法解析资源结构,已切换到 YAML 编辑模式",
+ "saveFailed": "保存失败",
+ "parseFailed": "无法解析 YAML",
+ "parseFailedHint": "请检查语法后继续用 YAML 模式",
+ "downloaded": "已下载",
+ "hostPlaceholder": "域名 (如 api.example.com)",
+ "keyPlaceholder": "键名 (如 LOG_LEVEL)",
+ "parseYamlFailed": "无法解析 YAML",
+ "checkSyntax": "请检查语法后继续用 YAML 模式",
+ "fallbackToYaml": "无法解析资源结构,已切换到 YAML 编辑模式"
+ },
+ "workloadView": {
+ "restartSent": "重启指令已下发",
+ "restartFailed": "重启失败",
+ "loading": "加载工作负载...",
+ "restarting": "重启中...",
+ "currentReplicas": "当前副本",
+ "desiredSchedule": "期望调度",
+ "serviceName": "服务名",
+ "podCount": "Pod 数量",
+ "actualSchedule": "当前调度"
+ },
+ "pvc": {
+ "sizeLabel": "容量",
+ "accessMode": "访问模式",
+ "storageClass": "存储类",
+ "sizePlaceholder": "如 10Gi",
+ "scPlaceholder": "留空使用默认 StorageClass"
+ },
+ "service": {
+ "portName": "端口名称",
+ "portNum": "端口号",
+ "targetPort": "目标端口",
+ "protocol": "协议",
+ "nodePort": "Node Port",
+ "sessionAffinity": "会话亲和性",
+ "externalTrafficPolicy": "外部流量策略",
+ "portLabel": "端口",
+ "selectorKey": "键 (如 app)",
+ "selectorValue": "值 (如 nginx)"
+ },
+ "ingress": {
+ "host": "域名",
+ "path": "路径",
+ "pathType": "路径类型",
+ "backend": "后端服务",
+ "backendPort": "后端端口",
+ "tlsSecret": "TLS 证书",
+ "pathPlaceholder": "路径 /"
+ },
+ "configMap": {
+ "key": "键",
+ "value": "值",
+ "addKey": "添加键值对",
+ "collapseAll": "折叠全部"
+ },
+ "secret": {
+ "type": "类型",
+ "data": "数据",
+ "addKey": "添加密钥",
+ "collapseAll": "折叠全部"
+ },
+ "nodes": {
+ "ready": "就绪",
+ "notReady": "未就绪",
+ "selectCluster": "选择集群",
+ "subtitle": "Kubernetes 集群工作节点状态与资源",
+ "noData": "暂无节点数据"
+ },
+ "capacityPage": {
+ "title": "容量管理"
+ },
+ "nsMgmt": {
+ "status": "状态",
+ "age": "创建时间",
+ "quota": "配额",
+ "labels": "标签",
+ "searchPlaceholder": "搜索命名空间...",
+ "title": "命名空间管理",
+ "quotaLimit": "配额限制",
+ "nameExample": "例如: my-app"
+ },
+ "clusterOverview": {
+ "nodeCount": "节点数",
+ "podCount": "Pod 数",
+ "serviceCount": "Service 数",
+ "notFound": "集群未找到",
+ "title": "集群概览"
+ },
+ "controlBar": {
+ "allNs": "全部命名空间",
+ "searchPlaceholder": "搜索资源...",
+ "refresh": "刷新",
+ "create": "创建"
+ },
+ "nsResourcePage": {
+ "loading": "加载中...",
+ "noData": "暂无数据",
+ "exportCsv": "导出CSV",
+ "exportJson": "导出JSON",
+ "exportYaml": "导出命名空间 YAML(tar.gz)"
+ },
+ "yamlViewer": {
+ "copy": "复制",
+ "download": "下载",
+ "copied": "已复制",
+ "fetchFailed": "获取YAML失败"
+ },
+ "podFile": {
+ "loadFailed": "加载文件列表失败"
}
},
"monitor": {