IDEA spring-boot简单实现国际化

一、创建springboot项目

IDEA spring-boot简单实现国际化_第1张图片

IDEA spring-boot简单实现国际化_第2张图片

选择web模块

IDEA spring-boot简单实现国际化_第3张图片

模板引擎选择 Thymeleaf,也可以自己在pom文件中自己引用

IDEA spring-boot简单实现国际化_第4张图片

二、添加Jquery,和Bootstrap

百度搜索webjar,进入官网
IDEA spring-boot简单实现国际化_第5张图片

把依赖拷贝下来放在pom文件中,当然可以选择自己要的版本

IDEA spring-boot简单实现国际化_第6张图片
可以设置thymeleaf的版本
thymeleaf-layout是布局的功能

thymeleaf-layout只有2.0以上的版本才支持thymeleaf 3.0
IDEA spring-boot简单实现国际化_第7张图片

三、Java类,及修改默认配置,注册组件

新建三个包

IDEA spring-boot简单实现国际化_第8张图片

1. component包新建MyLocaleResolver类
用来重写默认国际化设置,可以通过点击中文,Englist来转换,而且不会受浏览器语言的限制

IDEA spring-boot简单实现国际化_第9张图片

public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
	   //获取我们自己传入的参数
        String parameter = httpServletRequest.getParameter("l");
        //如果没有传入,就返回默认的
        Locale locale  = Locale.getDefault();
        if(!StringUtils.isEmpty(parameter)){
             String[] split = parameter.split("_");
             locale= new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}

2. config包新建MyMVCConfig
来修改一下mvc的一些基本配置,修改登录页的位置

@Configuration
public class MyMVCConfig extends WebMvcConfigurerAdapter {
    @Bean//将组件注册到容器中
    public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
      WebMvcConfigurerAdapter adapter = new  WebMvcConfigurerAdapter(){

          @Override
          public void addViewControllers(ViewControllerRegistry registry){

              //浏览器发送 /,/index.html最后都会到login
              registry.addViewController( "/").setViewName("login");
              registry.addViewController( "/index.html").setViewName("login");
          }
      };
      return  adapter;
    }
    //注册我们自己写的国际化设置
    @Bean//必须的
    public LocaleResolver localeResolver(){
        return  new MyLocaleResolver();
    }
}

3. 在controller包中新建HelloController
写我们自己的控制器代码

注释的方法 可以忽略

//此处一定是Controller,如果是RestController,或者加上@ResponseBody,只能返回文本
@Controller
public class HelloController {
//也可以在这里写一个方法配置login页,不用写2中的webMvcConfigurerAdapter
//    @RequestMapping({"/","login.html"})
//    public String login(){
//        return "Login";
//    }


    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World";
    }

//    @RequestMapping("/success")
//    public String success(Model model){
//        //classpath:/templates/success.html
//        //map.put("hello","快出来");
//        model.addAttribute("hello","粗来");
//        return "success";
//    }
    @RequestMapping("/success")
    public String success(Map map){
        map.put("hello","原来是@RestController的问题");
        return "success";
    }
}

四、写resources

IDEA spring-boot简单实现国际化_第10张图片

  1. 在static中新建asserts文件夹,把bootstrap的js和css放在里面
  2. 在i18n中新建->Resource Bundle->叫做login

新建三个properties文件,第一个就是默认的
IDEA spring-boot简单实现国际化_第11张图片

随便选一个进去,选择Resource Bundle,然后新建一个自己需要的,后面就会有默认,中文,英文的,自己添加OK

IDEA spring-boot简单实现国际化_第12张图片
4. bootstrap中登陆页面考进来

全部代码如下:
里面该有的解释都有
thymeleaf都是th:+ 属性来设置


//引入命名空间 可以 对thymeleaf 提示

  
    
    
    
    
    //这个我没有弄
    

    Signin Template for Bootstrap

    
    //这个在我们 引用的bootstrap外部库里面,从webjar开始
    

    
    //我们自己的登陆css
    
  

  
    
  


五、在application.properties文件中加入我们写的i18n

spring.messages.basename=i18n.login

六、测试

默认是中文的,即使把浏览器设置为英文,还是显示中文,
如果要跟随浏览器语言,就把自己写的MyLocaleResolver去掉,就可以根据浏览器语言来切换国际化
IDEA spring-boot简单实现国际化_第13张图片

点击英文
注意我们浏览器地址的变化,还有那是个L

IDEA spring-boot简单实现国际化_第14张图片

七、乱码问题

单个项目设置,setting->后面都一样
全局设置,other setting-> File Encodings -> Properties Files ->选择UTF-8把后面转换的那个也勾上

IDEA spring-boot简单实现国际化_第15张图片

你可能感兴趣的:(springboot)