231 lines
4.8 KiB
Markdown
231 lines
4.8 KiB
Markdown
|
|
# 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
|