- Implement runtime i18n using MutationObserver for automatic DOM translation
- Add language switcher dropdown in dashboard header (EN/VI/ZH)
- Support 3 languages: English (default), Tiếng Việt, 简体中文
- Add translation files: vi.json (197 entries), zh-CN.json (513 entries, cleaned)
- Translate dashboard UI: sidebar menu, header, settings, MITM page
- Use cookie-based locale persistence with /api/locale endpoint
- Zero component changes required - translations applied at runtime
- Fix Header flicker on route change with key={pathname}
Co-authored-by: eachann <each1024@qq.com>
Based on PR #247 from decolua/9router with runtime approach
Made-with: Cursor
33 lines
1.5 KiB
JavaScript
33 lines
1.5 KiB
JavaScript
// Shared Components - Export all
|
|
export { default as Button } from "./Button";
|
|
export { default as Input } from "./Input";
|
|
export { default as Select } from "./Select";
|
|
export { default as Card } from "./Card";
|
|
export { default as Modal, ConfirmModal } from "./Modal";
|
|
export { default as Loading, Spinner, PageLoading, Skeleton, CardSkeleton } from "./Loading";
|
|
export { default as Avatar } from "./Avatar";
|
|
export { default as Badge } from "./Badge";
|
|
export { default as Toggle } from "./Toggle";
|
|
export { default as ThemeToggle } from "./ThemeToggle";
|
|
export { ThemeProvider } from "./ThemeProvider";
|
|
export { default as Sidebar } from "./Sidebar";
|
|
export { default as Header } from "./Header";
|
|
export { default as Footer } from "./Footer";
|
|
export { default as OAuthModal } from "./OAuthModal";
|
|
export { default as ModelSelectModal } from "./ModelSelectModal";
|
|
export { default as ManualConfigModal } from "./ManualConfigModal";
|
|
export { default as UsageStats } from "./UsageStats";
|
|
export { default as LanguageSwitcher } from "./LanguageSwitcher";
|
|
export { default as RequestLogger } from "./RequestLogger";
|
|
export { default as KiroAuthModal } from "./KiroAuthModal";
|
|
export { default as KiroOAuthWrapper } from "./KiroOAuthWrapper";
|
|
export { default as KiroSocialOAuthModal } from "./KiroSocialOAuthModal";
|
|
export { default as CursorAuthModal } from "./CursorAuthModal";
|
|
export { default as IFlowCookieModal } from "./IFlowCookieModal";
|
|
export { default as SegmentedControl } from "./SegmentedControl";
|
|
|
|
// Layouts
|
|
export * from "./layouts";
|
|
|
|
|