【六袆 - 国际化】SpringBoot国际化Message

模拟场景校验请求参数

 private void checkParam(List<ReqAppAdminDTO> req) {
        // 校验管理员如果已存在,则抛出已存在异常
        req.forEach(item -> {
            AppAdminDO appAdminDO = appAdminMapper.selectByAppIdAndAdminNo(item.getAppId(), item.getAdminNo());
            if (ObjectUtil.isNotEmpty(appAdminDO)) {
                CheckUtil.check(false, ErrorMessagesConstants.APP_ADMIN_IS_EXIST, item.getAdminNo());
            }
        });

        req.forEach(item -> {
            CheckUtil.check(false, ErrorMessagesConstants.PARAM_IS_NULL_CN, item.getTel());
        });
    }

在resources目录下配置文件message_zh_cn.properties

field.invalid=字段取值错误
param.is.null=参数为空
param.existed=参数已存在

img

在这里插入图片描述

使用注解配置

@Configuration
public class StaticFieldInjectionConfiguration {

    /**
     *  国际化配置
     * @return
     */
    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasenames("i18n/messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

/**
 * 工具类注入
 */
    @PostConstruct
    private void init() {
        CheckUtil.setResources(messageSource());
        LocalMessageUtil.setResources(messageSource());
    }

}

效果

sucess

fail

在这里插入图片描述

详细步骤

在 Spring Boot 中配置国际化消息 。您可以按照以下步骤进行配置:

  1. src/main/resources 目录下创建一个名为 messages.properties 的文件,用于存储默认的消息。将您的英文消息添加到该文件中。例如:

    app.admin.is.exist=The application admin account [{0}] already exists.
    
  2. 创建其他语言的消息文件。在 src/main/resources 目录下创建对应语言的消息文件,例如 messages_zh_CN.properties(中文简体)和 messages_fr.properties(法语)。将相应语言的消息添加到对应的文件中。例如:

    messages_zh_CN.properties

    app.admin.is.exist=应用管理员账号[{0}]已存在。
    

    messages_fr.properties

    app.admin.is.exist=Le compte administrateur de l'application [{0}] existe déjà.
    
  3. 在 Spring Boot 的配置文件(application.propertiesapplication.yml)中,添加以下配置:

    # 指定默认语言
    spring.mvc.locale=zh_CN
    # 指定支持的语言
    spring.mvc.locale-resolver=fixed
    spring.mvc.locale-resolver=fixed
    spring.mvc.locale-resolver=fixed
    spring.messages.basename=messages
    
    spring:
      mvc:
        locale: zh_CN
        locale-resolver: fixed
      messages:
        basename: messages
    

    这些配置将设置默认的语言为中文(zh_CN),并将消息文件的基本名称设置为 messages

  4. 在您的代码中,您可以使用 MessageSource 来获取国际化消息。通过在需要获取消息的地方注入 MessageSource,然后使用 getMessage 方法来获取消息。例如:

    @Autowired
    private MessageSource messageSource;
    
    public void someMethod() {
        String message = messageSource.getMessage("app.admin.is.exist", new Object[]{"admin"}, LocaleContextHolder.getLocale());
        System.out.println(message);
    }
    

    在上面的示例中,getMessage 方法的第一个参数是消息代码,第二个参数是用于替换占位符的参数数组,第三个参数是当前的语言环境(通过 LocaleContextHolder.getLocale() 获取)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值