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、国际化配置文件

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

相关推荐

  1. spring boot集成redis,以及配置database生效问题

    2024-04-25 07:06:02       46 阅读
  2. springboot整合mybatis分页插件生效问题

    2024-04-25 07:06:02       36 阅读
  3. linux部署es8.0版本以及启动了浏览器访问

    2024-04-25 07:06:02       49 阅读
  4. linux rc.local生效

    2024-04-25 07:06:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 07:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 07:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 07:06:02       87 阅读
  4. Python语言-面向对象

    2024-04-25 07:06:02       96 阅读

热门阅读

  1. 富格林:正确曝光做单欺诈套路

    2024-04-25 07:06:02       36 阅读
  2. AIGC:机器人也有“成长的烦恼”

    2024-04-25 07:06:02       33 阅读
  3. 区块链 | ERC721 标准

    2024-04-25 07:06:02       121 阅读
  4. react/vue跳转到文章指定位置简单demo

    2024-04-25 07:06:02       191 阅读