17、SpringBoot使用国际化功能

1、首先在配置文件中配置

# 国际化配置文件(包名.基础名)
spring.messages.basename=i18n.login

2、创建国际化配置文件 i18n文件夹

 

 

 3、定义国际化组件

public class MyLocaleResolver implements LocaleResolver {
    
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String l = request.getParameter("l");
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

4、把组件放入容器中

@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {

    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }

}

5、在模板引擎中页面中使用获取国际化消息:th:text="#{login.btn}"  

    <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>

6、在后端如何获取

  @Autowired
    private MessageSource messageSource;

    @ResponseBody
    @RequestMapping("/message")
    public String message(HttpServletRequest request) {
        Locale locale = getLocale(request);

        String message = messageSource.getMessage("login.username", null, locale);
        return message;
    }


    public Locale getLocale(HttpServletRequest request) {
        String l = request.getParameter("l");
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

 

posted @ 2021-06-20 15:30  shunnWcs  阅读(87)  评论(0)    收藏  举报