From 67295c22d107436bb01c9f856d819a82e15757a1 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Fri, 3 Apr 2026 13:10:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=85=A8=E9=9D=A2=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=AD=E8=8B=B1=E6=96=87=E5=A4=9A=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将翻译文件拆分为独立的 en.ts/zh.ts,为 t() 函数添加插值支持, 国际化 Dashboard 全部页面和组件(登录、注册、项目管理、设置、 MCP 集成等),修复 ThemeToggle 仅中文标签的 bug, 在 Dashboard header 中添加 LanguageToggle 组件。 Co-Authored-By: Claude Opus 4.6 --- packages/web/src/components/ConfirmDialog.tsx | 4 +- packages/web/src/components/SchemaView.tsx | 48 ++- .../web/src/components/SettingsDialog.tsx | 82 ++-- packages/web/src/components/ThemeToggle.tsx | 15 +- packages/web/src/lib/i18n.tsx | 301 +-------------- packages/web/src/lib/i18n/en.ts | 361 ++++++++++++++++++ packages/web/src/lib/i18n/zh.ts | 361 ++++++++++++++++++ packages/web/src/pages/ImportDialog.tsx | 28 +- packages/web/src/pages/Layout.tsx | 31 +- packages/web/src/pages/Login.tsx | 26 +- packages/web/src/pages/ProjectDetail.tsx | 20 +- packages/web/src/pages/Projects.tsx | 24 +- packages/web/src/pages/Register.tsx | 34 +- packages/web/src/pages/ReimportDialog.tsx | 46 +-- packages/web/src/pages/landing/LandingNav.tsx | 17 +- packages/web/src/pages/tabs/DocPreview.tsx | 16 +- .../web/src/pages/tabs/McpIntegration.tsx | 50 +-- .../web/src/pages/tabs/ModuleManagement.tsx | 26 +- .../web/src/pages/tabs/ProjectSettings.tsx | 32 +- 19 files changed, 1005 insertions(+), 517 deletions(-) create mode 100644 packages/web/src/lib/i18n/en.ts create mode 100644 packages/web/src/lib/i18n/zh.ts diff --git a/packages/web/src/components/ConfirmDialog.tsx b/packages/web/src/components/ConfirmDialog.tsx index dff3b81..7bd807c 100644 --- a/packages/web/src/components/ConfirmDialog.tsx +++ b/packages/web/src/components/ConfirmDialog.tsx @@ -1,4 +1,5 @@ import Modal from './Modal'; +import { useI18n } from '../lib/i18n'; type ConfirmDialogProps = { open: boolean; @@ -11,6 +12,7 @@ type ConfirmDialogProps = { }; export default function ConfirmDialog({ open, onConfirm, onCancel, title, description, confirmText = 'Confirm', variant = 'danger' }: ConfirmDialogProps) { + const { t } = useI18n(); const iconColor = variant === 'danger' ? 'text-danger bg-danger-muted' : 'text-warning bg-warning-muted'; return ( @@ -28,7 +30,7 @@ export default function ConfirmDialog({ open, onConfirm, onCancel, title, descri
- +