Files
core_wing_web/I18N_README.md
zhoujinhua 928bb078f0
Some checks failed
CI Build and Test / build (push) Has been cancelled
Deploy to Server / build-and-deploy (push) Has been cancelled
完成app接口国际化
2025-10-21 10:15:38 +08:00

231 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CoreWing 国际化使用说明
## 概述
CoreWing 项目已完成国际化改造支持中文zh_CN和英文en_US两种语言。
## 客户端使用方式
### HTTP Header 配置
客户端通过 HTTP Header 指定语言,支持以下两种方式:
**方式一:使用 Accept-Language推荐**
```
Accept-Language: zh_CN
```
**方式二:使用自定义 lang header**
```
lang: en_US
```
### 支持的语言代码
- `zh_CN` - 简体中文(默认)
- `en_US` - 英语
### 示例
#### JavaScript/Axios
```javascript
// 中文请求
axios.get('/user/info', {
headers: {
'Accept-Language': 'zh_CN'
}
});
// 英文请求
axios.get('/user/info', {
headers: {
'Accept-Language': 'en_US'
}
});
```
#### cURL
```bash
# 中文
curl -H "Accept-Language: zh_CN" http://localhost:8080/user/info
# 英文
curl -H "Accept-Language: en_US" http://localhost:8080/user/info
```
#### Java/OkHttp
```java
Request request = new Request.Builder()
.url("http://localhost:8080/user/info")
.addHeader("Accept-Language", "zh_CN")
.build();
```
## 国际化功能范围
### 已国际化的内容
1. **API 响应消息**
- 成功/失败提示
- 用户操作反馈(登录、注册、登出等)
- 数据验证消息
2. **异常和错误消息**
- 用户认证异常
- 业务逻辑异常
- 服务器错误提示
3. **邮件模板**
- 验证码邮件内容
- 邮件主题和页脚
4. **短信模板**
- 验证码短信内容
- 短信发送结果消息
5. **钉钉推送消息**
- 反馈通知标题和内容
- 表单标签文本
## 技术实现
### 架构组成
1. **I18nConfig** - 国际化配置类
- 配置 MessageSource
- 实现自定义 LocaleResolver
- 支持从 Header 读取语言设置
2. **I18nUtil** - 国际化工具类
- 提供静态方法获取国际化消息
- 支持消息参数替换
3. **消息资源文件**
- `messages_zh_CN.properties` - 中文消息约90条
- `messages_en_US.properties` - 英文消息约90条
### 消息 Key 命名规范
```
common.* - 通用消息
user.* - 用户模块
feedback.* - 反馈模块
error.* - 错误消息
email.* - 邮件模板
sms.* - 短信模板
dingtalk.* - 钉钉推送
```
## 响应示例
### 中文响应 (Accept-Language: zh_CN)
```json
{
"code": 200,
"message": "登录成功",
"data": {
"token": "xxx",
"userId": 123
},
"success": true
}
```
### 英文响应 (Accept-Language: en_US)
```json
{
"code": 200,
"message": "Login successful",
"data": {
"token": "xxx",
"userId": 123
},
"success": true
}
```
## 开发指南
### 添加新的国际化消息
1.`messages_zh_CN.properties` 中添加中文消息:
```properties
user.new.feature=这是一个新功能
```
2.`messages_en_US.properties` 中添加对应的英文消息:
```properties
user.new.feature=This is a new feature
```
3. 在代码中使用:
```java
String message = I18nUtil.getMessage("user.new.feature");
```
### 带参数的消息
**资源文件:**
```properties
# 中文
user.welcome=欢迎,{0}!您已成功登录。
# 英文
user.welcome=Welcome, {0}! You have successfully logged in.
```
**代码使用:**
```java
String message = I18nUtil.getMessage("user.welcome", username);
```
## 注意事项
1. **默认语言**如果客户端未指定语言系统默认使用中文zh_CN
2. **URL 参数支持**:也可以通过 URL 参数切换语言
```
/user/info?lang=en_US
```
3. **消息缓存**:资源文件会缓存 1 小时,修改后需要重启应用或等待缓存过期
4. **消息 Key 不存在**:如果找不到对应的消息 key会返回 key 本身
## 修改文件清单
### 新增文件3个
- `src/main/java/com/corewing/app/config/I18nConfig.java`
- `src/main/java/com/corewing/app/util/I18nUtil.java`
- `src/main/resources/i18n/messages_zh_CN.properties`
- `src/main/resources/i18n/messages_en_US.properties`
### 修改文件13个
1. `Result.java` - 统一返回结果类
2. `AppUserController.java` - 用户控制器
3. `AppFeedbackController.java` - 反馈控制器
4. `AppUserServiceImpl.java` - 用户服务实现
5. `VerifyCodeServiceImpl.java` - 验证码服务实现
6. `AppFeedbackServiceImpl.java` - 反馈服务实现
7. `GlobalExceptionHandler.java` - 全局异常处理
8. `EmailUtil.java` - 邮件工具类
9. `SmsBaoUtil.java` - 短信工具类
10. `RedisUtil.java` - Redis工具类
## 测试建议
使用 Postman 或 curl 测试不同语言的响应:
```bash
# 测试中文
curl -H "Accept-Language: zh_CN" http://localhost:8080/user/login
# 测试英文
curl -H "Accept-Language: en_US" http://localhost:8080/user/login
```
---
**更新时间:** 2025-01-21
**版本:** 1.0