-
项目结构:
-
编写国际化配置文件:
在resourses下建立i18n文件夹——New file——取名为Login.properties
接着相同方式new Login_en_US.properties 和 Login_ch_CN.properties
编译器会自动帮你转化为resource Bundle文件形式。单击 Login_en_US.properties,在下方切换到Resource Bundle 视角:
单击“+”——输入login.tip 等
按照右方提示书写内容
tips: 如果中文有乱码,要在编译器的设置里设置file encoding为UTF-8 -
在html文件中取值:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>登录</title> <link rel="stylesheet" type="text/css" href="/static/css/loginstyle.css"/> </head> <body> <div class="login"> <div class="login-top"> **<h1 th:text="#{login.tip}"></h1>** //用的是thymeleaf ,取值 </div> <div style="text-align: center"> <a th:href="@{/login.html(l='ch_CN')}">中文</a> //手动切换中文 </div> <div style="text-align: center"> <a th:href="@{/login.html(l='en_US')}">English</a> //手动切换英文 </div> </div> </body> </html>
-
建个MyLocaleResolver 类,自定义LocaleResolver
//泛指各种组件,就是说当我们的类不属于各种归类的时候 // (不属于@Controller、@Services等的时候), // 我们就可以使用@Component来标注这个类 //可在WebMvcAutoConfiguration源码中查看的localeResolver方法 @Component("localeResolver") public class MyLocaleResolver implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest httpServletRequest) { String l = httpServletRequest.getParameter("l"); Locale locale = Locale.getDefault();//默认语言 if(!StringUtils.isEmpty(l)){ String[] split =l.split("_"); locale = new Locale(split[0],split[1]);//split[0]语言, } return locale; //根据用户浏览器的设置的语言 /* Locale locale = Locale.getDefault();//默认语言 String getLanguage=httpServletRequest.getHeader("Accept-Language"); //格式为en,zh-CN;q=0.9,zh;q=0.8 split[0]=en,zh-CN String[] split = getLanguage.split(";"); String[] split2 = split[0].split(","); String[] split3 = split2[0].split("-"); if(split3[0].equals("zh")) { locale = new Locale("zh", "CN"); } else if(split3[0].equals("en")) { locale = new Locale("en", "US"); } return locale;*/ } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { } }
-
路径的配置
@Configuration public class MyConfig implements WebMvcConfigurer { //该步为映射路径配置 @Bean public WebMvcConfigurer webMvcConfigurer() { WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer() { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("Login"); registry.addViewController("/login.html").setViewName("Login"); } }; return webMvcConfigurer; } //该步为静态资源配置 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/static/"); } //该步为国际化配置 @Bean public LocaleResolver myLocaleResolver(){ return new MyLocaleResolver(); } }
-
莫忘配置要老命了
Springboot从入门到放弃之国际化配置
最新推荐文章于 2022-06-28 09:04:47 发布