datai/docs/archive/changelog/2026-01-25-002-02-changelog.md

8.6 KiB
Raw Blame History

变更日志

元数据

  • 需求编号002-02
  • 创建时间2026-01-25
  • 创建人AI Assistant
  • 版本号v1.0.0

变更概述

实现后端国际化功能,包括错误消息国际化、日志消息国际化、验证消息国际化、通知消息国际化、用户语言偏好管理和国际化资源管理等功能。该功能使系统能够根据用户的语言偏好显示相应的多语言内容,提升用户体验。

变更内容

新增功能

1. 错误消息国际化

  • 创建 ErrorCode 枚举类,将错误代码映射到国际化资源键
  • 扩展 GlobalExceptionHandler 类,支持根据用户语言偏好返回国际化错误消息
  • 实现自动从请求上下文获取用户语言偏好
  • 支持默认语言回退机制

2. 日志消息国际化

  • 扩展 LogAspect 切面类,支持国际化日志消息
  • 在日志记录时自动获取当前用户的语言偏好
  • 支持操作日志和系统日志的国际化

3. 验证消息国际化

  • 创建 ValidationConfig 配置类,支持国际化验证消息
  • 集成 Spring Validation 和 MessageSource
  • 自动根据用户语言偏好返回验证错误消息

4. 通知消息国际化

  • 扩展 IMessageSystemService 接口,添加国际化通知消息方法
  • 扩展 MessageSystemServiceImpl 类,实现国际化通知消息发送
  • 支持根据接收者语言偏好发送通知

5. 用户语言偏好管理

  • 扩展 SysUser 实体类,添加 langCode 字段存储用户语言偏好
  • 创建 I18nController 类,提供语言偏好管理接口
  • 支持用户设置和查询语言偏好
  • 支持系统默认语言配置

6. 国际化资源管理

  • 更新 I18nConfig 配置类,使用 ReloadableResourceBundleMessageSource
  • 支持热加载国际化资源文件
  • 创建 messages.properties 和 messages_en_US.properties 资源文件
  • 提供刷新国际化资源的接口

修改功能

1. 扩展 SysUser 实体类

  • 添加 langCode 字段VARCHAR(10)
  • 添加 getter 和 setter 方法
  • 支持用户语言偏好持久化

2. 扩展 MessageUtils 工具类

  • 添加支持 Locale 参数的 getMessage 方法
  • 添加支持用户 ID 的 getMessage 方法
  • 自动从用户上下文获取语言偏好
  • 支持默认语言回退

3. 更新 I18nConfig 配置类

  • 使用 ReloadableResourceBundleMessageSource 替代 ResourceBundleMessageSource
  • 配置资源文件编码为 UTF-8
  • 设置缓存时间为 3600 秒
  • 支持资源文件热加载

4. 扩展 LogAspect 切面类

  • 在记录操作日志时使用国际化消息
  • 支持根据当前用户语言偏好记录日志
  • 保持原有日志记录逻辑不变

5. 扩展 GlobalExceptionHandler 类

  • 在处理异常时使用国际化错误消息
  • 支持根据用户语言偏好返回错误消息
  • 保持原有异常处理逻辑不变

6. 扩展 IMessageSystemService 接口

  • 添加 sendI18nMessage 方法,支持国际化通知消息
  • 添加 batchSendI18nMessage 方法,支持批量国际化通知消息
  • 保持原有通知消息方法不变

7. 扩展 MessageSystemServiceImpl 类

  • 实现 sendI18nMessage 方法
  • 实现 batchSendI18nMessage 方法
  • 支持根据接收者语言偏好发送通知
  • 保持原有通知消息逻辑不变

新增代码文件

枚举类

  • datai-framework/src/main/java/com/datai/framework/enums/ErrorCode.java - 错误代码枚举类

实体类扩展

  • datai-modules-system/src/main/java/com/datai/modules/system/domain/SysUser.java - 扩展 SysUser 实体类,添加 langCode 字段

工具类扩展

  • datai-framework/src/main/java/com/datai/framework/utils/MessageUtils.java - 扩展 MessageUtils 工具类,支持国际化

配置类

  • datai-framework/src/main/java/com/datai/framework/config/I18nConfig.java - 更新 I18nConfig 配置类
  • datai-framework/src/main/java/com/datai/framework/config/ValidationConfig.java - 新增 ValidationConfig 配置类

切面类扩展

  • datai-framework/src/main/java/com/datai/framework/aspectj/LogAspect.java - 扩展 LogAspect 切面类,支持国际化日志

异常处理类扩展

  • datai-framework/src/main/java/com/datai/framework/web/exception/GlobalExceptionHandler.java - 扩展 GlobalExceptionHandler 类,支持国际化错误消息

控制器类

  • datai-framework/src/main/java/com/datai/framework/web/controller/I18nController.java - 新增 I18nController 类,提供国际化管理接口

国际化资源文件

  • datai-framework/src/main/resources/i18n/messages.properties - 中文国际化资源文件
  • datai-framework/src/main/resources/i18n/messages_en_US.properties - 英文国际化资源文件

单元测试

  • datai-framework/src/test/java/com/datai/framework/enums/ErrorCodeTest.java - ErrorCode 单元测试
  • datai-framework/src/test/java/com/datai/framework/utils/MessageUtilsTest.java - MessageUtils 单元测试

服务类扩展

  • datai-modules-system/src/main/java/com/datai/modules/system/service/IMessageSystemService.java - 扩展 IMessageSystemService 接口
  • datai-modules-system/src/main/java/com/datai/modules/system/service/impl/MessageSystemServiceImpl.java - 扩展 MessageSystemServiceImpl 类

新增文档

需求文档

设计文档

决策记录

SQL 脚本

提示词文档

参考代码文档

实施方案文档

会话记录

影响范围

模块级别

  • datai-framework - 框架核心模块
  • datai-modules-system - 系统模块

功能级别

  • 国际化i18n功能
  • 异常处理功能
  • 日志记录功能
  • 验证功能
  • 通知消息功能
  • 用户管理功能

文件级别

  • 新增 13 个代码文件
  • 修改 7 个现有文件
  • 新增 2 个国际化资源文件
  • 新增 8 个文档文件

数据库级别

  • 修改 sys_user 表,添加 lang_code 字段

相关文档

核心文档

实施文档

记录文档

技术选型

国际化框架

  • Spring Framework MessageSource
  • ReloadableResourceBundleMessageSource
  • ResourceBundleMessageSource

数据库

  • MySQL 5.7+
  • 添加 lang_code 字段到 sys_user

编码格式

  • UTF-8
  • 支持多语言字符

测试

单元测试

  • ErrorCode 单元测试
  • MessageUtils 单元测试

集成测试

  • 错误消息国际化测试
  • 日志消息国际化测试
  • 验证消息国际化测试
  • 通知消息国际化测试
  • 用户语言偏好管理测试

手动测试

  • 测试不同语言偏好的用户
  • 测试默认语言回退机制
  • 测试国际化资源热加载

部署说明

数据库变更

执行以下 SQL 脚本:

ALTER TABLE sys_user ADD COLUMN lang_code VARCHAR(10) DEFAULT 'zh_CN' COMMENT '语言代码';

配置文件

确保 application.yml 中包含以下配置:

spring:
  messages:
    basename: i18n/messages
    encoding: UTF-8
    cache-duration: 3600

资源文件

将国际化资源文件放置在 src/main/resources/i18n/ 目录下:

  • messages.properties - 中文
  • messages_en_US.properties - 英文

后续优化

性能优化

  • 缓存国际化资源
  • 优化资源加载机制

功能扩展

  • 支持更多语言
  • 支持动态语言切换
  • 支持语言包热更新

用户体验

  • 提供语言切换界面
  • 支持浏览器语言自动检测
  • 支持用户自定义语言偏好