国际化

📎 引用文件

本文引用的文件 - frontend/src/i18n/index.ts - frontend/src/i18next.d.ts - frontend/package.json - frontend/src/main.tsx - frontend/src/i18n/locales/en.json - frontend/src/i18n/locales/zh-CN.json - frontend/src/i18n/locales/ar.json - frontend/src/i18n/locales/ja.json - frontend/src/i18n/locales/ko.json - frontend/src/i18n/__tests__/i18n.test.ts

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件为 Vibe-Trading 前端应用的国际化系统提供完整技术文档,覆盖多语言支持架构、语言包管理、动态语言切换机制、支持的语种与翻译文件组织、文本插值与复数处理、日期时间格式化策略、RTL(从右到左)语言支持与字体适配方案、翻译工作流程与质量检查、以及 i18next 配置、命名空间管理与性能优化技巧。

项目结构

国际化相关代码集中在 frontend/src/i18n 目录下: - index.ts:i18next 初始化、语言检测、资源懒加载、RTL 方向控制、语言切换事件处理 - locales:各语言 JSON 资源文件(en、zh-CN、ja、ko、ar),统一使用默认命名空间 translation - tests:包含键一致性、插值变量一致性与 RTL 工具函数的测试用例 - i18next.d.ts:TypeScript 类型声明,绑定默认命名空间与资源类型

graph TB A["应用入口 main.tsx"] --> B["i18n 初始化 index.ts"] B --> C["语言检测 LanguageDetector"] B --> D["React 集成 initReactI18next"] B --> E["内置资源 en.json"] B --> F["懒加载 zh-CN.json / ja.json / ko.json / ar.json"] B --> G["HTML dir/lang 设置"] H["组件使用 t() 与 useTranslation"] --> I["i18next 运行时"] I --> J["当前语言资源"]

图表来源 - frontend/src/main.tsx:1-10 - frontend/src/i18n/index.ts:123-157

章节来源 - frontend/src/main.tsx:1-10 - frontend/src/i18n/index.ts:1-160

核心组件

章节来源 - frontend/src/i18n/index.ts:7-33 - frontend/src/i18n/index.ts:40-80 - frontend/src/i18n/index.ts:82-121 - frontend/src/i18n/index.ts:123-157 - frontend/src/i18next.d.ts:1-12

架构总览

下图展示从应用启动到语言切换的完整流程,包括资源懒加载、RTL 方向设置与错误回退。

sequenceDiagram participant App as "应用" participant I18N as "i18n/index.ts" participant Det as "LanguageDetector" participant FS as "文件系统(懒加载)" participant DOM as "document" App->>I18N : 初始化(i18next + React集成) I18N->>Det : 检测语言(localStorage/navigator) Det-->>I18N : 返回语言代码 I18N->>DOM : 设置dir/lang(基于isRtl) alt 需要非英语资源 I18N->>FS : 动态import语言包 FS-->>I18N : 返回资源bundle I18N->>I18N : addResourceBundle(translation) I18N->>I18N : changeLanguage(最终语言) else 已存在或失败 I18N->>I18N : 保持当前语言或回退 end

图表来源 - frontend/src/i18n/index.ts:82-121 - frontend/src/i18n/index.ts:123-157

详细组件分析

i18next 初始化与配置

章节来源 - frontend/src/i18n/index.ts:123-157 - frontend/src/i18n/index.ts:7-16

语言包管理与命名空间

章节来源 - frontend/src/i18next.d.ts:1-12 - frontend/src/i18n/locales/en.json:1-800

动态语言切换机制

flowchart TD Start(["切换语言"]) --> CheckLoaded{"是否已加载?"} CheckLoaded --> |是| ApplyDir["设置文档方向"] ApplyDir --> End(["完成"]) CheckLoaded --> |否| LoadBundle["动态导入语言包"] LoadBundle --> Success{"加载成功?"} Success --> |是| AddBundle["addResourceBundle"] AddBundle --> ChangeLang["changeLanguage(最终语言)"] ChangeLang --> ApplyDir Success --> |否| Revert["清理缓存并回退到上一语言"] Revert --> End

图表来源 - frontend/src/i18n/index.ts:40-80 - frontend/src/i18n/index.ts:82-121

RTL 语言支持与字体适配

章节来源 - frontend/src/i18n/index.ts:65-80 - frontend/package.json:17-20

文本插值与复数形式

章节来源 - frontend/src/i18n/locales/en.json:46-52 - frontend/src/i18n/__tests__/i18n.test.ts:87-108

日期时间格式化

[本节为通用指导,不直接分析具体文件]

组件中使用国际化

章节来源 - frontend/src/components/charts/CandlestickChart.tsx:271-271 - frontend/src/components/charts/CorrelationMatrix.tsx:119-119 - frontend/src/components/charts/EquityChart.tsx:121-121

依赖关系分析

graph LR Pkg["package.json 依赖"] --> I18N["i18next"] Pkg --> Det["i18next-browser-languagedetector"] Pkg --> R18N["react-i18next"] Pkg --> FontA["@fontsource/inter"] Pkg --> FontB["@fontsource/jetbrains-mono"] Code["i18n/index.ts"] --> I18N Code --> Det Code --> R18N

图表来源 - frontend/package.json:23-29 - frontend/package.json:17-20 - frontend/src/i18n/index.ts:1-4

章节来源 - frontend/package.json:17-29 - frontend/src/i18n/index.ts:1-4

性能考量

章节来源 - frontend/src/i18n/index.ts:21-33 - frontend/src/i18n/index.ts:40-63 - frontend/src/i18n/index.ts:107-121

故障排查指南

章节来源 - frontend/src/i18n/__tests__/i18n.test.ts:51-66 - frontend/src/i18n/__tests__/i18n.test.ts:90-108 - frontend/src/i18n/__tests__/i18n.test.ts:112-152

结论

Vibe-Trading 前端的国际化系统基于 i18next 构建,采用默认命名空间与 JSON 资源文件管理多语言内容。通过语言检测、懒加载与事件驱动的切换机制,实现了高性能与良好的用户体验。RTL 语言(阿拉伯语)通过文档方向设置得到支持,字体与布局可据此适配。完善的测试覆盖了键一致性与插值变量一致性,保障了翻译质量。未来可考虑引入日期时间格式化插件以进一步提升本地化能力。

附录

支持的语种与文件组织

章节来源 - frontend/src/i18n/index.ts:7-16 - frontend/src/i18n/locales/en.json:1-800 - frontend/src/i18n/locales/zh-CN.json:1-800 - frontend/src/i18n/locales/ar.json:1-200

翻译工作流程与质量检查

章节来源 - frontend/src/i18n/__tests__/i18n.test.ts:51-66 - frontend/src/i18n/__tests__/i18n.test.ts:90-108

更新策略

[本节为通用指导,不直接分析具体文件]