feat(i18n): 全量中英文国际化改造
- 翻译 en-US.json 中 1006 条未翻译的中文条目为英文 - 提取 30+ 组件文件的硬编码中文到 locale JSON - 新增 900+ 翻译键覆盖所有业务模块: - Layout (Sidebar, Header, Breadcrumb) - Server (ServerForm, CloudServerImport, WebShell, RdpTools) - Deploy (ReleaseManager, PipelineCreate, AppRelease) - Kubernetes (DeploymentEdit, PodExec, PodLogs, ResourceEditor) - Monitor (UnifiedQueryPanel, AlertCenter, Prometheus/Grafana Dashboard) - AIOps (predictUtils, PredictiveCostTab, AIPredictive) - System (useLdapManagement, AgentMonitor, AgentWizard) - tsc --noEmit 类型检查通过
This commit is contained in:
1 parent
76ec9387f0
commit
a9513c2056
44 files changed
+4342
-1792
No files matched your search
@@ -412,7 +412,7 @@ export function DataTable<T = Record<string, unknown>>(
|
||||
)}
|
||||
{selectable && (selectedIds?.length ?? 0) > 0 && (
|
||||
<Badge variant="secondary" className="bg-[var(--dg-bg-active)] text-[var(--dg-text-secondary)] border-[var(--dg-border)]">
|
||||
已选 {selectedIds!.length} 项
|
||||
{t("ui.datatable.s1a2b3c4d", { count: selectedIds!.length })}
|
||||
</Badge>
|
||||
)}
|
||||
</div>
|
||||
@@ -423,7 +423,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">列</span>
|
||||
<span className="hidden sm:inline">{t("ui.datatable.s2b3c4d5e")}</span>
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align="end" className="bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]">
|
||||
@@ -579,11 +579,11 @@ export function DataTable<T = Record<string, unknown>>(
|
||||
<div className="flex items-center justify-between gap-2 px-1 py-2 flex-wrap">
|
||||
<div className="flex items-center gap-3">
|
||||
<span className="text-sm text-[var(--dg-text-muted)]">
|
||||
共 <span className="text-[var(--dg-text-secondary)] font-medium">{sortedData.length}</span> 条
|
||||
{t("ui.datatable.s3c4d5e6f", { count: sortedData.length })}
|
||||
</span>
|
||||
{selectable && (selectedIds?.length ?? 0) > 0 && (
|
||||
<span className="text-sm text-[var(--dg-text-muted)]">
|
||||
/ 已选 <span className="dg-text-blue font-medium">{selectedIds!.length}</span>
|
||||
/ {t("ui.datatable.s4d5e6f7g", { count: selectedIds!.length })}
|
||||
</span>
|
||||
)}
|
||||
<div className="flex items-center gap-1.5">
|
||||
@@ -645,7 +645,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 ? '是' : '否';
|
||||
if (typeof v === 'boolean') return v ? i18n.t('ui.datatable.s5e6f7g8h') : i18n.t('ui.datatable.s6f7g8h9i');
|
||||
if (typeof v === 'object') {
|
||||
const obj = v as Record<string, unknown>;
|
||||
const label = obj.label ?? obj.name ?? obj.value;
|
||||
|
||||
Reference in new issue
Block a user