fix(i18n): 回退到稳定的 32% 覆盖率状态 (tsc + Vite 构建通过)

批量转换脚本引入的语法错误已回退,保留稳定的 i18n 转换:
- 翻译词典: 22 namespaces, 3600+ keys
- 已接入: 145+ 文件 (Dashboard/Login/K8s 主页面/Monitor/System/Deploy)
- 语言切换器在 Header 中可用 (🇨🇳/🇺🇸)
- tsc 零错误, Vite 构建成功
This commit is contained in:
attacker committed 2026-07-03 02:02:29 +08:00
1 parent ecec73989b
commit 72bfb0e12d
191 files changed
+5057 -7592

No files matched your search

@@ -19,7 +19,6 @@ import { toast } from 'sonner';
import { PageShell } from '@/components/layout/PageShell';
import { ContentPanel } from '@/components/layout/ContentPanel';
import { StatStrip } from '@/components/ui/stat-strip';
import { useTranslation } from 'react-i18next';
interface NamespaceDetail {
name: string;
@@ -40,7 +39,6 @@ const SYSTEM_NAMESPACES = new Set([
]);
export default function NamespaceManagementPage() {
const { t } = useTranslation();
const { clusterCode } = useParams<{ clusterCode: string }>();
const navigate = useNavigate();
const [namespaces, setNamespaces] = useState<NamespaceDetail[]>([]);
@@ -80,7 +78,7 @@ export default function NamespaceManagementPage() {
setCreateOpen(false);
await loadData();
} catch (err) {
toast.error(err?.message || t('monitor.quickSetupFailed'));
toast.error(err?.message || '创建失败');
} finally {
setCreating(false);
}
@@ -94,7 +92,7 @@ export default function NamespaceManagementPage() {
setDeleteTarget(null);
await loadData();
} catch (err) {
toast.error(err?.message || t('common.deleteFailed'));
toast.error(err?.message || '删除失败');
} finally {
setDeleting(false);
}
@@ -113,7 +111,7 @@ export default function NamespaceManagementPage() {
<Input
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
placeholder=t('kubernetes.namespacemanagementpage.se91247')
placeholder="搜索命名空间..."
className="max-w-xs dg-input"
/>
);
@@ -121,17 +119,17 @@ export default function NamespaceManagementPage() {
return (
<PageShell
variant="list"
title=t('kubernetes.namespacemanagementpage.se935a3')
subtitle={t('kubernetes.namespacemanagementpage.s81e4b3', { clusterCode: clusterCode })}
title="命名空间管理"
subtitle={`${clusterCode} · 资源配额与生命周期管理`}
icon={<Boxes className="h-5 w-5" />}
metrics={!loading ? (
<StatStrip
items={[
{ label: t('k8s.column.namespace'), value: namespaces.length, color: 'green' },
{ label: '命名空间', value: namespaces.length, color: 'green' },
{ label: 'Deployments', value: totalDeploys, color: 'blue' },
{ label: 'Pods', value: totalPods, color: 'purple' },
{ label: 'Services', value: totalSvcs, color: 'cyan' },
{ label: t('kubernetes.namespacemanagementpage.s47c3ae'), value: quotaCount, color: 'amber' },
{ label: '配额限制', value: quotaCount, color: 'amber' },
]}
/>
) : undefined}
@@ -149,15 +147,15 @@ export default function NamespaceManagementPage() {
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>{t('kubernetes.namespacemanagementpage.s737f41')}</DialogTitle>
<DialogTitle>创建命名空间</DialogTitle>
</DialogHeader>
<div className="space-y-4 py-4">
<div className="space-y-2">
<Label>{t('kubernetes.namespace.namespaceName')}</Label>
<Label>命名空间名称</Label>
<Input
value={newName}
onChange={(e) => setNewName(e.target.value)}
placeholder=t('kubernetes.namespacemanagementpage.scba008')
placeholder="例如: my-app"
onKeyDown={(e) => e.key === 'Enter' && handleCreate()}
/>
<p className="text-xs text-[var(--dg-text-muted)]">
@@ -166,7 +164,7 @@ export default function NamespaceManagementPage() {
</div>
</div>
<DialogFooter>
<Button variant="outline" onClick={() => setCreateOpen(false)}>{t('common.cancel')}</Button>
<Button variant="outline" onClick={() => setCreateOpen(false)}>取消</Button>
<Button onClick={handleCreate} disabled={creating || !newName.trim()}>
{creating ? <Loader2 className="h-4 w-4 animate-spin mr-1" /> : null}
创建
@@ -181,15 +179,15 @@ export default function NamespaceManagementPage() {
<Table>
<TableHeader>
<TableRow className="border-[var(--dg-border)] hover:bg-transparent">
<TableHead className="text-[var(--dg-text-secondary)]">{t('common.name')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('common.status')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('kubernetes.namespacemanagementpage.sa01a99')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">名称</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">状态</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">年龄</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">Deploy</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">Pods</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">Svc</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">{t('common.quota')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('common.tag')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">{t('common.actions')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">配额</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">标签</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-center">操作</TableHead>
</TableRow>
</TableHeader>
<TableBody>
@@ -249,13 +247,13 @@ export default function NamespaceManagementPage() {
</TableCell>
<TableCell className="text-center">
{isSystem ? (
<span className="text-xs text-[var(--dg-text-muted)]">{t('common.system3')}</span>
<span className="text-xs text-[var(--dg-text-muted)]">系统</span>
) : (
<Button
variant="ghost" size="icon"
className="h-7 w-7 text-[var(--dg-red)] hover:text-[var(--dg-red)] hover:bg-[var(--dg-red)]/10"
onClick={() => setDeleteTarget(ns.name)}
title=t('kubernetes.namespace.deleteNamespace')
title="删除命名空间"
>
<Trash2 className="h-3.5 w-3.5" />
</Button>
@@ -288,7 +286,7 @@ export default function NamespaceManagementPage() {
</div>
</div>
<DialogFooter>
<Button variant="outline" onClick={() => setDeleteTarget(null)}>{t('common.cancel')}</Button>
<Button variant="outline" onClick={() => setDeleteTarget(null)}>取消</Button>
<Button variant="destructive" onClick={handleDelete} disabled={deleting}>
{deleting ? <Loader2 className="h-4 w-4 animate-spin mr-1" /> : null}
确认删除