• Springboot实现国际化以及部署Linux不生效问题


    1、在application.properties 添加以下配置:

    #国际化配置
    spring.messages.basename=i18n/messages/messages
    spring.messages.fallback-to-system-locale=false

     2、添加配置文件在 resources目录下 如下图所示:

    这个国际化文件命名有个坑,必须按照小明名称进行  否则部署linux国际化不生效,目前是遇到这个问题,问题修改en_us/zh_cn/es_pa得到解决 。如果有其他方式 ,欢迎留言沟通交流。

    3、添加国际化配置文件:

    I18nConfig.java

    package com.example.cxjgmanagedevice.utils;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.support.ReloadableResourceBundleMessageSource;
    import org.springframework.web.servlet.LocaleResolver;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
    import org.springframework.web.servlet.i18n.SessionLocaleResolver;
    
    import java.util.Locale;
    
    @Configuration
    public class I18nConfig implements WebMvcConfigurer {
    
        @Bean
        public LocaleResolver localeResolver() {
            SessionLocaleResolver slr = new SessionLocaleResolver();
            slr.setDefaultLocale(Locale.US); // 设置默认语言为英语
            return slr;
        }
    
        @Bean
        public ReloadableResourceBundleMessageSource messageSource() {
            ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
            messageSource.setBasenames("classpath:i18n/messages/messages"); // 设置基础名,不带后缀
            messageSource.setDefaultEncoding("UTF-8");
            messageSource.setCacheSeconds(5); // 设置缓存刷新间隔(秒)
            return messageSource;
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
            localeChangeInterceptor.setParamName("lang"); // 通过URL参数lang来切换语言
            registry.addInterceptor(localeChangeInterceptor);
        }
    }

    4、创建控制类 添加属性:

    private final MessageSource messageSource;
    
    @Autowired
    public UserController(MessageSource messageSource) {
        this.messageSource = messageSource;
    }

    5、在对应接口方法上通过下面方式进行国际化

    Locale locale = new Locale(lang);
    String message = null;
    if (StringUtils.isBlank(mobile) || StringUtils.isBlank(random)) {
        message = messageSource.getMessage("1004",null , locale);
        return ResultCodeDataObj.INFO("1004", message,null);
    }

    6、国际化配置文件

    至此:你的国际化流程已经顺利完成,中间过程中,如果有任何问题,欢迎骚扰。

  • 相关阅读:
    数据科学中的数据库简介
    Kotlin协程:异常处理机制
    14.信号量的代码实现
    D359周赛复盘:贪心解决求最小和问题⭐⭐+较为复杂的双层线性DP⭐⭐
    网络安全(黑客)自学
    信息系统项目管理-项目变更管理-十六
    服务器硬件基础知识:新手完全指南
    【线性代数】
    yum install ansible无法直接安装Ansible的解决方法
    安卓逆向入门级学习————自用
  • 原文地址:https://blog.csdn.net/qq_23000805/article/details/138153570