springboot随笔三:国际化

一:服务器根据浏览器请求头语言信息Accept-Language自动国际化

创建国际化文件,记住是放在claspath下,不能放在static或者public下

 

 

 

 

 

指定国际化配置路径,注意是classpath下的相对路径,也可以用locale/wording代替

 

 

 

 

登录页面为英文

 

 

 

 

 

登录页面为中文

 

 

 

二:自定义国际化信息

1. 在login.html中加入

<div>
<input type="checkbox" name="remeber"/> [[#{login.remember}]]
</div>
<div><a th:href="@{/login.html(lang='zh_CN')}">中文</a>&nbsp;&nbsp;&nbsp;<a th:href="@{/login.html(lang='en_US')}">英文</a></div>
<div>
<input type="submit" th:value="#{login.submit}"/>
</div>

效果如下

 

2. 实现LocaleResolver接口

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

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

    }
}

 

3.将MyLocaleResolver加到我们的配置类中,从而实现bean加入到spring容器中

@Configuration
//@EnableWebMvc// 如果配置了这个,springboot的webMvc将不会自动装配,也就是说springboot给我们的默认很多web功能将失效,完全有自己接管
public class MyConfig implements WebMvcConfigurer {// 通过实现WebMvcConfigurer来在原来springboot自动化的基础上进行扩展
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {// 添加一个控制视图映射
        registry.addViewController("/success").setViewName("success");
    }

    @Bean// 这里实例化一个WebMvcConfigurater对象到spring容器中,spring将会自动解析所有WebMvcConfigurer
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("login");
                registry.addViewController("/index").setViewName("login");
                registry.addViewController("/index.html").setViewName("login");
                registry.addViewController("/login").setViewName("login");
                registry.addViewController("/login.html").setViewName("login");
                //registry.addViewController("/index.html").setViewName("login");
            }
        };
    }

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

 

4. 重启服务,进行访问,点击中文/英文传递不同的参数到后台,从而解析出不同的语言,实现国际化

 

posted @ 2020-12-16 21:46  卖麦的麦麦  阅读(243)  评论(0)    收藏  举报