8.6 KiB
8.6 KiB
变更日志
元数据
- 需求编号: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- 英文
后续优化
性能优化
- 缓存国际化资源
- 优化资源加载机制
功能扩展
- 支持更多语言
- 支持动态语言切换
- 支持语言包热更新
用户体验
- 提供语言切换界面
- 支持浏览器语言自动检测
- 支持用户自定义语言偏好