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

+6 -7
View File
@@ -52,7 +52,6 @@ import {
Settings2,
} from 'lucide-react';
import { cn } from '@/lib/utils';
import i18n from '@/i18n';
// ─── Types ───────────────────────────────────────────────
@@ -224,7 +223,7 @@ export function DataTable<T = Record<string, unknown>>(
data,
rowKey,
searchable = false,
searchPlaceholder = i18n.t('ui.dataTable.s64e327'),
searchPlaceholder = '搜索...',
searchKeys,
sortable: globalSortable = false,
pagination: enablePagination = false,
@@ -237,7 +236,7 @@ export function DataTable<T = Record<string, unknown>>(
exportFilename = 'export.csv',
columnToggle = false,
loading = false,
emptyText = i18n.t('common.noData'),
emptyText = '暂无数据',
emptyRender,
onRowClick,
rowClassName,
@@ -423,7 +422,7 @@ export function DataTable<T = Record<string, unknown>>(
<DropdownMenuTrigger asChild>
<Button variant="outline" size="sm" className="h-8 gap-1.5 border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-hover)] hover:text-[var(--dg-text-primary)]">
<Eye className="h-3.5 w-3.5" />
<span className="hidden sm:inline">{i18n.t('ui.dataTable.scb2f68')}</span>
<span className="hidden sm:inline">列</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]">
@@ -451,7 +450,7 @@ export function DataTable<T = Record<string, unknown>>(
className="h-8 gap-1.5 border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-hover)] hover:text-[var(--dg-text-primary)]"
>
<Download className="h-3.5 w-3.5" />
<span className="hidden sm:inline">{i18n.t('common.export')}</span>
<span className="hidden sm:inline">导出</span>
</Button>
)}
</div>
@@ -587,7 +586,7 @@ export function DataTable<T = Record<string, unknown>>(
</span>
)}
<div className="flex items-center gap-1.5">
<span className="text-sm text-[var(--dg-text-muted)]">{i18n.t('common.perPage')}</span>
<span className="text-sm text-[var(--dg-text-muted)]">每页</span>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" size="sm" className="h-7 px-2 min-w-[56px] gap-1 border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-hover)]">
@@ -645,7 +644,7 @@ export function DataTable<T = Record<string, unknown>>(
function renderCellValue(v: unknown): React.ReactNode {
if (v == null || v === '') return <span className="text-[var(--dg-text-muted)]">—</span>;
if (typeof v === 'boolean') return v ? i18n.t('common.yes') : i18n.t('common.no');
if (typeof v === 'boolean') return v ? '是' : '否';
if (typeof v === 'object') {
const obj = v as Record<string, unknown>;
const label = obj.label ?? obj.name ?? obj.value;