refactor(i18n): U38 phantom CTK 清理 — 13 文件 16 处模板字面量/JSX 属性残余中文→i18n.t() 调用
13 文件 16 处 UI-facing phantom CTK (i18n.t() 模板字面量中的中文片段) 全部替换为语义化 i18n.t() 调用: - LogsHeader: '行'suffix→common.lineSuffix - analyzerHelpers: '当前值'→common.currentValue - DeploymentEditStorage: 2 toast description→k8s.editStorage.*Desc (插值) - WorkloadViewPage: 2 toast description→k8s.workloadView.restartSentDesc + k8s.workloads.scaleSuccessDesc (插值) - ServerFileBrowser: confirm→common.confirmDeleteType (插值) - LogDatasourcePage: toast '可达'→aiops.reachable - LogAlertsPanel: confirm→monitor.deleteRuleConfirmDesc (插值) - DeployTargetFields: JSX '(多容器时填写)'→common.fillIfMultiContainer - UserGroupsManager: 3 处 confirm/desc→deploy.rbac.deleteGroupDesc + pipeline.removeMemberDesc + common.memberCount (插值) - BuildNodesManager: JSX '(可选)'→common.optional (已有键复用) - useLdapManagement: confirm→system.ldapMgmt.deleteEntryDesc (插值) 新增 14 语义化翻译键 (5 common + 2 k8s.editStorage + 1 k8s.workloadView + 1 k8s.workloads + 1 aiops + 1 monitor + 1 deploy.rbac + 1 pipeline + 1 system.ldapMgmt), zh/en 7737→7751 +14 对齐 tsc -b=0, npm build✓ (16.86s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
This commit is contained in:
1 parent
7c80e35411
commit
a1d82574a7
14 files changed
+64
-35
No files matched your search
@@ -317,7 +317,7 @@ export default function BuildNodesManager({ embedded = false }: { embedded?: boo
|
||||
</div>
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
<Label className="text-xs"> {i18n.t('kubernetes.namespace.labels')} <span className="text-[var(--dg-text-muted)]">(可选)</span></Label>
|
||||
<Label className="text-xs"> {i18n.t('kubernetes.namespace.labels')} <span className="text-[var(--dg-text-muted)]">{i18n.t('common.optional')}</span></Label>
|
||||
<Input value={labels} onChange={(e) => setLabels(e.target.value)} className="h-8 text-xs dg-input" placeholder="linux,docker,high-mem" />
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
|
||||
@@ -61,7 +61,7 @@ export default function UserGroupsManager({ embedded = false }: { embedded?: boo
|
||||
};
|
||||
|
||||
const handleDelete = async (g: Group) => {
|
||||
const ok = await _confirm({ title: i18n.t('deploy.rbac.deleteGroup'), description: `确定删除「${g.name}」?所有成员和流水线授权将同时移除。`, variant: 'destructive' });
|
||||
const ok = await _confirm({ title: i18n.t('deploy.rbac.deleteGroup'), description: i18n.t('deploy.rbac.deleteGroupDesc', { name: g.name }), variant: 'destructive' });
|
||||
if (!ok) return;
|
||||
try { await deployApi.deleteGroup(g.id); toast.success(i18n.t('monitor.silenceRules.deleted')); loadGroups(); }
|
||||
catch { toast.error(i18n.t('kubernetes.msg.deleteFailed2')); }
|
||||
@@ -75,7 +75,7 @@ export default function UserGroupsManager({ embedded = false }: { embedded?: boo
|
||||
};
|
||||
|
||||
const handleRemoveMember = async (groupId: number, memberId: number, username: string) => {
|
||||
const ok = await _confirm({ title: i18n.t('pipeline.removeMember'), description: `确定从组中移除「${username}」?` });
|
||||
const ok = await _confirm({ title: i18n.t('pipeline.removeMember'), description: i18n.t('pipeline.removeMemberDesc', { username }) });
|
||||
if (!ok) return;
|
||||
try { await deployApi.removeGroupMember(groupId, memberId); toast.success(i18n.t('deploy.toast.removed')); loadGroups(); }
|
||||
catch { toast.error(i18n.t('deploy.toast.removeFailed')); }
|
||||
@@ -116,7 +116,7 @@ export default function UserGroupsManager({ embedded = false }: { embedded?: boo
|
||||
<Shield className="w-5 h-5 dg-text-blue" />
|
||||
<div>
|
||||
<div className="font-medium text-[var(--dg-text-primary)]">{g.name}</div>
|
||||
<div className="text-xs text-[var(--dg-text-secondary)]">{g.description || i18n.t('system.roleDescFallback')} · {(g.members || []).length} 位成员</div>
|
||||
<div className="text-xs text-[var(--dg-text-secondary)]">{g.description || i18n.t('system.roleDescFallback')} · {i18n.t('common.memberCount', { count: (g.members || []).length })}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
|
||||
@@ -349,7 +349,7 @@ export function DeployTargetFields({ value, onChange, requireTarget = true }: De
|
||||
)}
|
||||
</ScrollArea>
|
||||
<div className="space-y-1">
|
||||
<Label className="text-xs"> {i18n.t('kubernetes.container.containerName')} <span className="text-[var(--dg-text-muted)]">(多容器时填写)</span></Label>
|
||||
<Label className="text-xs"> {i18n.t('kubernetes.container.containerName')} <span className="text-[var(--dg-text-muted)]">{i18n.t('common.fillIfMultiContainer')}</span></Label>
|
||||
<Input
|
||||
value={value.k8sContainerName}
|
||||
onChange={(e) => onChange({ k8sContainerName: e.target.value })}
|
||||
|
||||
Reference in new issue
Block a user