feat(i18n): 剩余模块全量国际化 — 51% 覆盖率 (231 文件接入 t())

批量转换 163 个文件,3204 处中文替换为 t() 调用:
- Monitor: 日志中心/告警中心/数据源/大屏/站点拨测/SNMP/中间件 全部转换
- Kubernetes: ResourceVisualEditor/NamespaceResourcePage/拓扑/事件 全部转换
- Deploy: 流水线/发布/凭证/RBAC 全部转换
- Server/Cloud/Agent/Task/Layout/UI: 全部转换
- 翻译词典扩展至 6474 行 (22 namespaces, 5000+ keys)
- tsc 编译零错误
This commit is contained in:
attacker committed 2026-07-03 01:51:57 +08:00
1 parent 78c27037e3
commit ecec73989b
166 files changed
+6925 -2800

No files matched your search

@@ -13,6 +13,7 @@ import { AlertCircle, X, Check, Loader2 } from 'lucide-react';
import { releaseApi } from '@/api';
import { toast } from 'sonner';
import type { JsonData } from '@/types/common';
import { useTranslation } from 'react-i18next';
interface ReleaseApproveDialogProps {
release: JsonData | null;
@@ -22,6 +23,7 @@ interface ReleaseApproveDialogProps {
}
export function ReleaseApproveDialog({ release, open, onOpenChange, onSuccess }: ReleaseApproveDialogProps) {
const { t } = useTranslation();
const [submitting, setSubmitting] = useState(false);
// 提交完成即重置 loading(防复用) // Logan.Li
@@ -35,15 +37,15 @@ export function ReleaseApproveDialog({ release, open, onOpenChange, onSuccess }:
try {
if (approved) {
await releaseApi.approveRelease(release.id);
toast.success('审批通过');
toast.success(t('approval.flow.approveTitle'));
} else {
await releaseApi.rejectRelease(release.id);
toast.success('已驳回');
toast.success(t('deploy.toast.rejected'));
}
onOpenChange(false);
onSuccess?.();
} catch {
toast.error(approved ? '审批失败' : '驳回失败');
toast.error(approved ? t('approval.msg.approveFailed') : t('deploy.release.rejectFail'));
} finally {
setSubmitting(false);
}
@@ -53,7 +55,7 @@ export function ReleaseApproveDialog({ release, open, onOpenChange, onSuccess }:
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent>
<DialogHeader>
<DialogTitle>审批发布</DialogTitle>
<DialogTitle>{t('pipeline.approve')}</DialogTitle>
<DialogDescription>
{release?.app_name} - {release?.version}
</DialogDescription>
@@ -61,7 +63,7 @@ export function ReleaseApproveDialog({ release, open, onOpenChange, onSuccess }:
<div className="py-4">
{release?.description && (
<div className="p-3 rounded-lg bg-[var(--dg-bg-tertiary)] mb-4">
<p className="text-xs text-[var(--dg-text-secondary)] mb-1">发布说明</p>
<p className="text-xs text-[var(--dg-text-secondary)] mb-1">{t('pipeline.releaseDesc')}</p>
<p className="text-sm text-[var(--dg-text-primary)]">{release.description}</p>
</div>
)}