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

4.8 KiB
Raw Blame History

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();

国际化功能范围

已国际化的内容

  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)

{
  "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
}

开发指南

添加新的国际化消息

  1. messages_zh_CN.properties 中添加中文消息:
user.new.feature=这是一个新功能
  1. messages_en_US.properties 中添加对应的英文消息:
user.new.feature=This is a new feature
  1. 在代码中使用:
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);

注意事项

  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 测试不同语言的响应:

# 测试中文
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