281 lines
5.6 KiB
Markdown
281 lines
5.6 KiB
Markdown
# API 文档:数据库国际化功能
|
||
|
||
## 元数据
|
||
- 需求编号:2026-01-21-002-03
|
||
- 创建时间:2026-01-25
|
||
- 创建人:SSOT 架构师
|
||
- 父需求:2026-01-21-002-项目国际化需求
|
||
|
||
## API 概述
|
||
数据库国际化功能 API 提供了语言切换、语言偏好管理、国际化资源刷新等功能,支持用户在运行时动态切换语言,并自动刷新相关缓存。API 遵循 RESTful 规范,使用标准的 HTTP 方法(GET、POST、PUT)进行数据交互。
|
||
|
||
## 接口列表
|
||
|
||
### 接口 1:刷新国际化资源
|
||
|
||
#### 功能描述
|
||
刷新国际化资源,清除 MessageSource 的缓存,强制重新加载国际化资源文件。
|
||
|
||
#### 请求方式
|
||
POST
|
||
|
||
#### 请求路径
|
||
`/system/i18n/refresh`
|
||
|
||
#### 权限要求
|
||
- `system:i18n:refresh` - 国际化资源刷新权限
|
||
|
||
#### 请求参数
|
||
无
|
||
|
||
#### 响应参数
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码(200 成功,其他失败) |
|
||
| msg | String | 提示信息 |
|
||
|
||
#### 成功示例
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "国际化资源刷新成功"
|
||
}
|
||
```
|
||
|
||
#### 失败示例
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "当前 MessageSource 不支持动态刷新"
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "国际化资源刷新失败"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 接口 2:获取当前语言偏好
|
||
|
||
#### 功能描述
|
||
获取当前用户的语言偏好,包括语言代码、语言名称、国家名称等信息。
|
||
|
||
#### 请求方式
|
||
GET
|
||
|
||
#### 请求路径
|
||
`/system/i18n/currentLocale`
|
||
|
||
#### 权限要求
|
||
- `system:i18n:query` - 国际化查询权限
|
||
|
||
#### 请求参数
|
||
无
|
||
|
||
#### 响应参数
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码(200 成功,其他失败) |
|
||
| msg | String | 提示信息 |
|
||
| data | Object | 返回数据 |
|
||
| data.langCode | String | 语言代码(zh_CN 或 en_US) |
|
||
| data.language | String | 语言名称(中文 或 English) |
|
||
| data.country | String | 国家名称(中国 或 United States) |
|
||
|
||
#### 成功示例
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {
|
||
"langCode": "zh_CN",
|
||
"language": "中文",
|
||
"country": "中国"
|
||
}
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {
|
||
"langCode": "en_US",
|
||
"language": "English",
|
||
"country": "United States"
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 失败示例
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "未找到用户信息"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 接口 3:切换语言
|
||
|
||
#### 功能描述
|
||
切换当前用户的语言偏好,更新用户的 lang_code 字段,刷新 Token,清除用户缓存,强制重新加载数据。
|
||
|
||
#### 请求方式
|
||
POST
|
||
|
||
#### 请求路径
|
||
`/system/i18n/switch`
|
||
|
||
#### 权限要求
|
||
- `system:i18n:switch` - 语言切换权限
|
||
|
||
#### 请求参数
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
|--------|------|------|------|
|
||
| langCode | String | 是 | 语言代码,支持 zh_CN 或 en_US |
|
||
|
||
#### 请求示例
|
||
```json
|
||
{
|
||
"langCode": "en_US"
|
||
}
|
||
```
|
||
|
||
#### 响应参数
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码(200 成功,其他失败) |
|
||
| msg | String | 提示信息 |
|
||
|
||
#### 成功示例
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "语言切换成功"
|
||
}
|
||
```
|
||
|
||
#### 失败示例
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "不支持的语言代码"
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "未找到用户信息"
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "语言切换失败"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 接口 4:更新用户语言偏好
|
||
|
||
#### 功能描述
|
||
更新当前用户的语言偏好,更新用户的 lang_code 字段,但不刷新 Token 和清除缓存。
|
||
|
||
#### 请求方式
|
||
PUT
|
||
|
||
#### 请求路径
|
||
`/system/i18n/updateLocale`
|
||
|
||
#### 权限要求
|
||
- `system:i18n:update` - 语言偏好更新权限
|
||
|
||
#### 请求参数
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
|--------|------|------|------|
|
||
| langCode | String | 是 | 语言代码,支持 zh_CN 或 en_US |
|
||
|
||
#### 请求示例
|
||
```json
|
||
{
|
||
"langCode": "en_US"
|
||
}
|
||
```
|
||
|
||
#### 响应参数
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码(200 成功,其他失败) |
|
||
| msg | String | 提示信息 |
|
||
|
||
#### 成功示例
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "语言偏好更新成功"
|
||
}
|
||
```
|
||
|
||
#### 失败示例
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "不支持的语言代码"
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "未找到用户信息"
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "更新语言偏好失败"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 错误码
|
||
|
||
| 错误码 | 说明 | 处理建议 |
|
||
|--------|------|---------|
|
||
| 200 | 操作成功 | 无 |
|
||
| 400 | 请求参数错误 | 检查请求参数是否符合要求 |
|
||
| 401 | 未授权 | 检查用户是否已登录 |
|
||
| 403 | 无权限 | 检查用户是否有相应的权限 |
|
||
| 500 | 不支持的语言代码 | 检查 langCode 是否为 zh_CN 或 en_US |
|
||
| 501 | 未找到用户信息 | 检查用户是否已登录 |
|
||
| 502 | 当前 MessageSource 不支持动态刷新 | 检查 MessageSource 配置 |
|
||
| 503 | 国际化资源刷新失败 | 检查国际化资源文件是否存在 |
|
||
| 504 | 语言切换失败 | 检查用户信息和数据库连接 |
|
||
| 505 | 更新语言偏好失败 | 检查用户信息和数据库连接 |
|
||
|
||
## 相关文档
|
||
- [需求文档](../requirements/2026-01-21-002-03-数据库国际化需求.md)
|
||
- [设计文档](../design/2026-01-21-002-03-数据库国际化设计.md)
|
||
- [架构决策记录](../decisions/adr/2026-01-25-002-03-ADR-数据库国际化架构决策.md)
|
||
- [参考代码文档](../reference-code/2026-01-25-002-03-code-数据库国际化功能.md)
|
||
- [实施方案文档](../implementation/2026-01-25-002-03-implementation-数据库国际化功能.md)
|
||
- [复盘文档](../retros/2026-01-25-002-03-retro.md)
|
||
- [变更日志](../changelog/2026-01-25-002-03-changelog.md)
|