Files
PolyHermes/docs/i18n-implementation-status.md
T
WrBug 1a9407c544 feat: 完成前端多语言支持和菜单优化
- 缩短菜单标题,解决显示不全问题
- 添加跟随系统语言选项,作为默认选项
- 移除语言切换时的页面刷新,实现无刷新切换
- 完成主要页面的多语言替换:
  * ConfigPage - 全局配置页面
  * ResetPassword - 重置密码页面
  * LeaderList - Leader 列表页面
  * UserList - 用户列表页面
  * Statistics - 统计信息页面
  * OrderList - 订单列表页面
  * TemplateList - 模板列表页面
  * CopyTradingList - 跟单配置列表页面
- 添加简体中文、繁体中文和英文的完整翻译键
- 优化语言设置页面,支持跟随系统语言
2025-12-04 10:36:28 +08:00

7.4 KiB
Raw Blame History

多语言支持实现状态

已完成的工作

后端部分(100% 完成)

1. 核心框架

  • 创建语言资源文件(messages_zh_CN.properties, messages_zh_TW.properties, messages_en.properties
  • 配置 MessageSource BeanMessageSourceConfig.kt
  • 创建 LocaleInterceptor 拦截器
  • 修改 ErrorCode 枚举,添加 messageKey 字段(100+ 条错误消息)
  • 修改 ApiResponse.error() 方法,支持多语言
  • 创建 MessageUtils 工具类
  • 更新 WebMvcConfig,注册 LocaleInterceptor

2. Controller 更新 (全部完成)

  • AccountController - 完全更新
  • AuthController - 完全更新
  • LeaderController - 完全更新
  • UserController - 完全更新
  • CopyTradingController - 完全更新
  • CopyTradingTemplateController - 完全更新
  • MarketController - 完全更新
  • CopyTradingStatisticsController - 完全更新(包含 CopyOrderTrackingController
  • ProxyConfigController - 完全更新
  • HealthController - 无需更新(无错误响应)

3. 编译状态

  • 后端编译通过,无错误
  • 所有 ApiResponse.error() 调用都已传入 messageSource 参数

前端部分(部分完成)

1. 核心框架

  • 安装 i18next 和 react-i18next 依赖
  • 配置 i18n(语言检测、资源加载)
  • 创建语言包文件结构(zh-CN, zh-TW, en
  • 在 api.ts 中添加语言 HeaderX-Language
  • 在 main.tsx 中初始化 i18n

2. 页面更新 2个页面已完成)

  • AccountDetail.tsx - 完全使用 i18n
  • App.tsx - 订单推送通知已使用 i18nAnt Design locale 已配置
  • Login.tsx - 完全使用 i18n

3. 语言包扩展

  • 添加了登录相关翻译(login.*
  • 添加了订单相关翻译(order.*
  • 添加了账户相关翻译(account.*)
  • 添加了通用翻译(common.*

4. 编译状态

  • 前端编译通过,无错误
  • ⚠️ 有 5 个 TypeScript linter 警告(文件存在,可能是缓存问题)

待完成的工作

前端部分(21个页面待更新)

需要更新以下页面组件,使用 useTranslation Hook 替换硬编码文本:

  1. AccountList.tsx
  2. AccountImport.tsx
  3. AccountEdit.tsx
  4. LeaderList.tsx
  5. LeaderAdd.tsx
  6. LeaderEdit.tsx
  7. TemplateList.tsx
  8. TemplateAdd.tsx
  9. TemplateEdit.tsx
  10. CopyTradingList.tsx
  11. CopyTradingAdd.tsx
  12. CopyTradingStatistics.tsx
  13. CopyTradingBuyOrders.tsx
  14. CopyTradingSellOrders.tsx
  15. CopyTradingMatchedOrders.tsx
  16. PositionList.tsx
  17. OrderList.tsx
  18. Statistics.tsx
  19. UserList.tsx
  20. ResetPassword.tsx
  21. SystemSettings.tsx
  22. ConfigPage.tsx

语言包扩展

根据页面内容,可能需要添加更多翻译键:

  • Leader 相关翻译
  • Template 相关翻译
  • CopyTrading 相关翻译
  • Position 相关翻译
  • Statistics 相关翻译
  • 等等

测试建议

后端测试

  1. 编译通过
  2. 测试不同语言 Header 下的错误消息显示
  3. 测试默认语言(无 Header 时)

前端测试

  1. 编译通过
  2. 测试系统语言自动检测
  3. 测试语言切换(如果添加了切换功能)
  4. 测试不同语言下的页面显示
  5. 测试 API 请求是否正确传递语言 Header

使用说明

后端

所有 Controller 已更新,错误消息会自动根据 HTTP Header X-LanguageAccept-Language 返回对应语言。

前端

已更新的页面会自动根据系统语言显示对应文本。其他页面需要逐步更新。

下一步

  1. 逐步更新剩余的前端页面组件
  2. 根据页面内容扩展语言包
  3. 全面测试多语言功能
  4. (可选)添加语言切换组件

已完成的工作

后端部分(100% 完成)

1. 核心框架

  • 创建语言资源文件(messages_zh_CN.properties, messages_zh_TW.properties, messages_en.properties
  • 配置 MessageSource BeanMessageSourceConfig.kt
  • 创建 LocaleInterceptor 拦截器
  • 修改 ErrorCode 枚举,添加 messageKey 字段(100+ 条错误消息)
  • 修改 ApiResponse.error() 方法,支持多语言
  • 创建 MessageUtils 工具类
  • 更新 WebMvcConfig,注册 LocaleInterceptor

2. Controller 更新 (全部完成)

  • AccountController - 完全更新
  • AuthController - 完全更新
  • LeaderController - 完全更新
  • UserController - 完全更新
  • CopyTradingController - 完全更新
  • CopyTradingTemplateController - 完全更新
  • MarketController - 完全更新
  • CopyTradingStatisticsController - 完全更新(包含 CopyOrderTrackingController
  • ProxyConfigController - 完全更新
  • HealthController - 无需更新(无错误响应)

3. 编译状态

  • 后端编译通过,无错误
  • 所有 ApiResponse.error() 调用都已传入 messageSource 参数

前端部分(部分完成)

1. 核心框架

  • 安装 i18next 和 react-i18next 依赖
  • 配置 i18n(语言检测、资源加载)
  • 创建语言包文件结构(zh-CN, zh-TW, en
  • 在 api.ts 中添加语言 HeaderX-Language
  • 在 main.tsx 中初始化 i18n

2. 页面更新 2个页面已完成)

  • AccountDetail.tsx - 完全使用 i18n
  • App.tsx - 订单推送通知已使用 i18nAnt Design locale 已配置
  • Login.tsx - 完全使用 i18n

3. 语言包扩展

  • 添加了登录相关翻译(login.*
  • 添加了订单相关翻译(order.*
  • 添加了账户相关翻译(account.*)
  • 添加了通用翻译(common.*

4. 编译状态

  • 前端编译通过,无错误
  • ⚠️ 有 5 个 TypeScript linter 警告(文件存在,可能是缓存问题)

待完成的工作

前端部分(21个页面待更新)

需要更新以下页面组件,使用 useTranslation Hook 替换硬编码文本:

  1. AccountList.tsx
  2. AccountImport.tsx
  3. AccountEdit.tsx
  4. LeaderList.tsx
  5. LeaderAdd.tsx
  6. LeaderEdit.tsx
  7. TemplateList.tsx
  8. TemplateAdd.tsx
  9. TemplateEdit.tsx
  10. CopyTradingList.tsx
  11. CopyTradingAdd.tsx
  12. CopyTradingStatistics.tsx
  13. CopyTradingBuyOrders.tsx
  14. CopyTradingSellOrders.tsx
  15. CopyTradingMatchedOrders.tsx
  16. PositionList.tsx
  17. OrderList.tsx
  18. Statistics.tsx
  19. UserList.tsx
  20. ResetPassword.tsx
  21. SystemSettings.tsx
  22. ConfigPage.tsx

语言包扩展

根据页面内容,可能需要添加更多翻译键:

  • Leader 相关翻译
  • Template 相关翻译
  • CopyTrading 相关翻译
  • Position 相关翻译
  • Statistics 相关翻译
  • 等等

测试建议

后端测试

  1. 编译通过
  2. 测试不同语言 Header 下的错误消息显示
  3. 测试默认语言(无 Header 时)

前端测试

  1. 编译通过
  2. 测试系统语言自动检测
  3. 测试语言切换(如果添加了切换功能)
  4. 测试不同语言下的页面显示
  5. 测试 API 请求是否正确传递语言 Header

使用说明

后端

所有 Controller 已更新,错误消息会自动根据 HTTP Header X-LanguageAccept-Language 返回对应语言。

前端

已更新的页面会自动根据系统语言显示对应文本。其他页面需要逐步更新。

下一步

  1. 逐步更新剩余的前端页面组件
  2. 根据页面内容扩展语言包
  3. 全面测试多语言功能
  4. (可选)添加语言切换组件