简介
在之前项目的基础上实现登陆界面的国际化
Tip:国际化:所谓国际化就是可以让用户选择不同的语言显示
步骤
- 创建一个自己的LocaleResolver类,程序中命名为MyLocaleResolver,在该类重写resolveLocale方法,该方法用于接受前端HTML中链接的参数,从而进行逻辑判断,返回一个Locale类的对象,该对象决定了将要显示的语言。
补充英文翻译:
- locale:语言环境
- resolver:解析器
代码:
public class MyLocaleResolver implements LocaleResolver
{
@Override
public Locale resolveLocale(HttpServletRequest request)
{
String lang = request.getParameter("lang");
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(lang))
{
String[] split = lang.split("_");
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
{
}
}
-
新建一个MyMVCConfig类,该类继承于WebMvcConfigurer,使用@Configuration注解表示这个类是用于配置SpringBoot的,在其中重写方法addViewControllers,直接控制视图解析器,对主页而言相较于使用Controller,该方法更佳。实现localeResolver方法,该方法用@Bean进行注解,那么这个对象就会交由Spring进行管理,这样自定义的国际化组件才能生效。
代码:
@Configuration public class MyMVCConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); registry.addViewController("/index.html").setViewName("index"); } @Bean public LocaleResolver localeResolver() { return new MyLocaleResolver(); } }
-
运行查看结果
- 默认情况下使用浏览器中使用的默认语言,例如中文
- 点击“English”链接,显示英文界面
- 点击“中文”链接,再次返回中文界面,与默认界面相同
至此国际化完成。
补充知识
-
@Bean注解
Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,在一个方法上使用@Bean注解就表明这个方法需要交给Spring进行管理。
-
@Configuration注解
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
参考链接
简而言之:指示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理,以便在运行时为这些bean生成BeanDefinition和服务请求