262 lines
8.6 KiB
Markdown
262 lines
8.6 KiB
Markdown
# 变更日志
|
||
|
||
## 元数据
|
||
- 需求编号: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 类
|
||
|
||
### 新增文档
|
||
|
||
#### 需求文档
|
||
- [后端国际化需求](../requirements/2026-01-21-002-02-后端国际化需求.md)
|
||
|
||
#### 设计文档
|
||
- [后端国际化设计](../design/2026-01-21-002-02-后端国际化设计.md)
|
||
|
||
#### 决策记录
|
||
- [后端国际化技术选型](../decisions/adr/2026-01-25-002-02-ADR-后端国际化技术选型.md)
|
||
|
||
#### SQL 脚本
|
||
- [后端国际化数据库变更](../sql/2026-01-25-002-02-backend-i18n.sql)
|
||
|
||
#### 提示词文档
|
||
- [后端国际化功能实现提示词](../prompts/2026-01-25-002-02-prompt-后端国际化功能.md)
|
||
|
||
#### 参考代码文档
|
||
- [后端国际化参考代码](../reference-code/2026-01-25-002-02-code-后端国际化.md)
|
||
|
||
#### 实施方案文档
|
||
- [后端国际化实施方案](../implementation/2026-01-25-002-02-implementation-后端国际化.md)
|
||
|
||
#### 会话记录
|
||
- [后端国际化功能实现会话记录](../sessions/2026-01-25-002-02-session.md)
|
||
|
||
## 影响范围
|
||
|
||
### 模块级别
|
||
- `datai-framework` - 框架核心模块
|
||
- `datai-modules-system` - 系统模块
|
||
|
||
### 功能级别
|
||
- 国际化(i18n)功能
|
||
- 异常处理功能
|
||
- 日志记录功能
|
||
- 验证功能
|
||
- 通知消息功能
|
||
- 用户管理功能
|
||
|
||
### 文件级别
|
||
- 新增 13 个代码文件
|
||
- 修改 7 个现有文件
|
||
- 新增 2 个国际化资源文件
|
||
- 新增 8 个文档文件
|
||
|
||
### 数据库级别
|
||
- 修改 `sys_user` 表,添加 `lang_code` 字段
|
||
|
||
## 相关文档
|
||
|
||
### 核心文档
|
||
- [需求文档](../requirements/2026-01-21-002-02-后端国际化需求.md)
|
||
- [设计文档](../design/2026-01-21-002-02-后端国际化设计.md)
|
||
- [决策记录](../decisions/adr/2026-01-25-002-02-ADR-后端国际化技术选型.md)
|
||
|
||
### 实施文档
|
||
- [SQL 脚本](../sql/2026-01-25-002-02-backend-i18n.sql)
|
||
- [提示词文档](../prompts/2026-01-25-002-02-prompt-后端国际化功能.md)
|
||
- [参考代码文档](../reference-code/2026-01-25-002-02-code-后端国际化.md)
|
||
- [实施方案文档](../implementation/2026-01-25-002-02-implementation-后端国际化.md)
|
||
|
||
### 记录文档
|
||
- [会话记录](../sessions/2026-01-25-002-02-session.md)
|
||
- [变更日志](./2026-01-25-002-02-changelog.md)
|
||
|
||
## 技术选型
|
||
|
||
### 国际化框架
|
||
- Spring Framework MessageSource
|
||
- ReloadableResourceBundleMessageSource
|
||
- ResourceBundleMessageSource
|
||
|
||
### 数据库
|
||
- MySQL 5.7+
|
||
- 添加 `lang_code` 字段到 `sys_user` 表
|
||
|
||
### 编码格式
|
||
- UTF-8
|
||
- 支持多语言字符
|
||
|
||
## 测试
|
||
|
||
### 单元测试
|
||
- ErrorCode 单元测试
|
||
- MessageUtils 单元测试
|
||
|
||
### 集成测试
|
||
- 错误消息国际化测试
|
||
- 日志消息国际化测试
|
||
- 验证消息国际化测试
|
||
- 通知消息国际化测试
|
||
- 用户语言偏好管理测试
|
||
|
||
### 手动测试
|
||
- 测试不同语言偏好的用户
|
||
- 测试默认语言回退机制
|
||
- 测试国际化资源热加载
|
||
|
||
## 部署说明
|
||
|
||
### 数据库变更
|
||
执行以下 SQL 脚本:
|
||
```sql
|
||
ALTER TABLE sys_user ADD COLUMN lang_code VARCHAR(10) DEFAULT 'zh_CN' COMMENT '语言代码';
|
||
```
|
||
|
||
### 配置文件
|
||
确保 `application.yml` 中包含以下配置:
|
||
```yaml
|
||
spring:
|
||
messages:
|
||
basename: i18n/messages
|
||
encoding: UTF-8
|
||
cache-duration: 3600
|
||
```
|
||
|
||
### 资源文件
|
||
将国际化资源文件放置在 `src/main/resources/i18n/` 目录下:
|
||
- `messages.properties` - 中文
|
||
- `messages_en_US.properties` - 英文
|
||
|
||
## 后续优化
|
||
|
||
### 性能优化
|
||
- 缓存国际化资源
|
||
- 优化资源加载机制
|
||
|
||
### 功能扩展
|
||
- 支持更多语言
|
||
- 支持动态语言切换
|
||
- 支持语言包热更新
|
||
|
||
### 用户体验
|
||
- 提供语言切换界面
|
||
- 支持浏览器语言自动检测
|
||
- 支持用户自定义语言偏好
|