SpringBoot中的国际化

 

目录

1、编写国际化配置文件

2、在application.yml中指定读取的国际化配置文件:

3、login.html

4、点击中文或者English切换语言

5、登录验证


1、编写国际化配置文件

国际化配置文件默认文件名称为:messages.properties,若是自己起的其他名称,则需要在application.yml中指定文件:

如:在resources目录下创建i18n目录,在i18n目录下面创建国际化配置文件,login.properties是默认国际化配置文件,login_en_US.propertoes 英文,login_zh_CN.properties中文,创建好之后IDEA会自动识别这些配置文件是国际化配置文件。

SpringBoot中的国际化_第1张图片

随便打开一个文件,点击下面的Resource Bundle可以添加字段和值,一次可以直接更改三个配置文件。

SpringBoot中的国际化_第2张图片

2、在application.yml中指定读取的国际化配置文件:

#国际化指定文件
spring:
  messages:
    basename: i18n.login

##message.propertiesi是默认的国际化配置文件,不需要特别指定路径

3、login.html




	
	
	
	
	登陆页面
	
	
	
	







在页面中:

提示部分使用:

Please sign in

用户名: 密码: 记住我:
登陆按钮

效果:

SpringBoot中的国际化_第3张图片

 

4、点击中文或者English切换语言

4.1发出请求

//@{index.html(l='zh_CN')} 相当于http://localhost:8080/index.html?l=zh_CN
//而在后台,index.html映射的就是登陆页面
//registry.addViewController("/index.html").setViewName("login");
中文
English

4.2 自定义国际化处理组件

public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        //获取请求参数
        String parameter = httpServletRequest.getParameter("l");
        //获取默认的locale
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(parameter)) {
            String[] strings = parameter.split("_");
            //若请求参数不为空,则根据请求构造一个新的locale
            locale = new Locale(strings[0], strings[1]);
        }

        //否则返回默认的locale
        return locale;
    }

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

    }
}

    
  //找一个配置类,将自定义组件注入springboot中
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }

效果:点击切换按钮可以完成语言的转换。

SpringBoot中的国际化_第4张图片

5、登录验证

@Controller
public class LoginController {

    @PostMapping("/user/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session, Model model) {
        //简化登录流程
        if(!StringUtils.isEmpty(username) && "123456".equals(password)) {
            //登录成功,避免表单重复提交,使用重定向到主页

            //将用户存入到session中
            session.setAttribute("loginUser", username);

            return "redirect:/main.html";
        }

        //登录失败,返回登录页面
        model.addAttribute("msg", "用户名或密码错误!");
        return "login";
    }
}

在login.html中显示错误信息使用了:


${not #strings.isEmpty(msg)}即在msg为空的情况下不显示该标签

效果:

SpringBoot中的国际化_第5张图片

注意:开发期间模板引擎要实时生效

     在application.yml中关闭thymeleaf的缓存:

spring:
  thymeleaf:
    cache: false

 并且在页面修改完成后,按住ctrl+F9重新编译。

你可能感兴趣的:(SringBoot)