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