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

@@ -28,6 +28,7 @@ import { UserDetailDialog } from './UserDetailDialog';
import { CsvImportDialog } from './CsvImportDialog';
import { LdapImportDialog } from './LdapImportDialog';
import { usePermission } from '@/hooks/usePermission';
import { useTranslation } from 'react-i18next';
interface SystemUserTabProps {
// Search
@@ -119,6 +120,7 @@ export function SystemUserTab({
handleLdapImport,
setLdapUsers,
}: SystemUserTabProps) {
const { t } = useTranslation();
const { hasPermission } = usePermission();
const canManage = hasPermission('system:user');
@@ -140,7 +142,7 @@ export function SystemUserTab({
<div className="relative w-64">
<Search className="absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]" />
<Input
placeholder="搜索用户..."
placeholder={t('system.searchUserDot')}
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
className="pl-9 h-9 bg-[var(--dg-bg-tertiary)]/50 border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"
@@ -150,13 +152,13 @@ export function SystemUserTab({
{hasPermission('system:user') && (
<Button variant="outline" className="border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]" onClick={() => setImportDialogOpen('csv')}>
<Upload className="h-4 w-4 mr-2" />
批量导入
{t('common.batchImport')}
</Button>
)}
{hasPermission('system:user') && (
<Button variant="outline" className="border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]" onClick={() => setImportDialogOpen('ldap')}>
<Network className="h-4 w-4 mr-2" />
LDAP 导入
{t('system.ldapImport')}
</Button>
)}
{hasPermission('system:user') && (
@@ -175,11 +177,11 @@ export function SystemUserTab({
</span>
<div className="flex items-center gap-2">
<Button variant="outline" size="sm" className="dg-btn-secondary" onClick={() => setSelectedUserIds([])}>
取消选择
{t('cloud.clearSelection')}
</Button>
<Button variant="outline" size="sm" className="dg-btn-danger dg-btn-sm" onClick={handleBatchDelete}>
<Trash2 className="w-4 h-4 mr-2" />
批量删除
{t('system.terminalBatchDelete')}
</Button>
</div>
</div>
@@ -201,13 +203,13 @@ export function SystemUserTab({
/>
</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)]">来源</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-right">操作</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('system.userTitleField')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('system.contactInfo')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('system.userRole')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('common.source')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('system.userStatus')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)]">{t('system.lastLogin')}</TableHead>
<TableHead className="text-[var(--dg-text-secondary)] text-right">{t('system.auditAction')}</TableHead>
</TableRow>
</TableHeader>
<TableBody>