Skip to content

🌍 国际化(i18n)配置指南

📖 功能介绍

TIP

国际化(i18n)功能支持系统提供多语言界面和消息提示,提升全球用户的使用体验。

⚙️ 配置说明

1. 请求头配置

参数名说明示例
wueasy-language语言标识zh, en

2. 默认语言设置

yaml
wueasy:
  i18n:
    defaultLanguage: zh    # 设置默认语言为中文

📝 语言包配置

1. 文件结构

在项目的 resources 目录下创建 i18n 文件夹,包含以下文件:

resources/
└── i18n/
├── messages_zh.properties # 中文语言包
└── messages_en.properties # 英文语言包

2. 中文语言包示例 (messages_zh.properties)

properties
# 系统错误
ERROR=很抱歉,系统繁忙,请稍后再试!
SERVER_PARAM_ERROR=参数格式错误!

# 验证码相关
CAPTCHA_SEND_OFTEN=验证码发送频繁,请稍后再试!
CAPTCHA_SEND_LIMIT_IP=当前ip发送验证码超出限额,请明天再试!
CAPTCHA_SEND_LIMIT_CODE=当前号码发送消息超出限额,请明天再试!
CAPTCHA_EMPTY=验证码未发送或已过期,请重新发送!
CAPTCHA_MISMATCHING=验证码不匹配!

# 文件操作
FILE_MAX_SIZE=文件大小超出限制!
FILE_IO_ERROR=上传失败!
FILE_DOWN_ERROR=下载失败!
FILE_NOT_EXIST_ERROR=文件不存在!
FILE_EMPTY=文件不能为空!
FILE_EXTNAME=禁止上传文件类型!

# 加密解密
CRYPTO_ENCRYPT_ERROR=加密失败!
CRYPTO_DECRYPT_ERROR=解密失败!

# 分页相关
MIN_PAGE_NUM_ERROR=页码最小值为1!
MAX_PAGE_SIZE_ERROR=每页数量最大值为1000!
MIN_PAGE_SIZE_ERROR=每页数量最小值为1!

3. 英文语言包示例 (messages_en.properties)

properties
# System Errors
ERROR=Sorry, the system is busy. Please try again later!
SERVER_PARAM_ERROR=Parameter format error!

# Captcha Related
CAPTCHA_SEND_OFTEN=Verification code sent too frequently, please try again later!
CAPTCHA_SEND_LIMIT_IP=IP verification code limit exceeded, please try tomorrow!
CAPTCHA_SEND_LIMIT_CODE=Phone number message limit exceeded, please try tomorrow!
CAPTCHA_EMPTY=Verification code not sent or expired, please resend!
CAPTCHA_MISMATCHING=Verification code does not match!

# File Operations
FILE_MAX_SIZE=File size exceeds limit!
FILE_IO_ERROR=Upload failed!
FILE_DOWN_ERROR=Download failed!
FILE_NOT_EXIST_ERROR=File does not exist!
FILE_EMPTY=File cannot be empty!
FILE_EXTNAME=File type not allowed!

# Encryption/Decryption
CRYPTO_ENCRYPT_ERROR=Encryption failed!
CRYPTO_DECRYPT_ERROR=Decryption failed!

# Pagination
MIN_PAGE_NUM_ERROR=Minimum page number is 1!
MAX_PAGE_SIZE_ERROR=Maximum page size is 1000!
MIN_PAGE_SIZE_ERROR=Minimum page size is 1!

💡 使用示例

1. 参数验证国际化

java
@Data
public class BasePageDto {
    /**
     * 页码
     */
    @Min(value = 1, message = "MIN_PAGE_NUM_ERROR")
    private long pageNum = 1;
    
    /**
     * 每页数量
     */
    @Max(value = 1000, message = "MAX_PAGE_SIZE_ERROR")
    @Min(value = 1, message = "MIN_PAGE_SIZE_ERROR")
    private int pageSize = 20;
}

2. 业务异常国际化

java
@Service
public class UserService {
    public void login(LoginDto dto) {
        if (!"admin".equals(dto.getAccountNo()) || 
            !"123456".equals(dto.getPassword())) {
            throw new InvokeException(-1, "USER_OR_PASSWORD_ERROR");
        }
    }
}

⚠️ 注意事项

  1. 命名规范

    • 语言文件必须遵循 messages_{语言代码}.properties 格式
    • 错误码建议使用大写字母和下划线组合
  2. 编码设置

    • 属性文件必须使用 UTF-8 编码
    • 注意特殊字符的转义
  3. 维护建议

    • 保持各语言文件的同步更新
    • 定期检查缺失的翻译项
    • 注意信息的语义准确性

🔍 常见问题

  1. 消息未国际化

    • 检查语言标识是否正确
    • 验证属性文件编码格式
    • 确认消息键是否存在
  2. 默认语言不生效

    • 检查配置文件设置
    • 验证语言文件是否存在
    • 确认文件命名是否正确