国际化

简介

在之前项目的基础上实现登陆界面的国际化
Tip:国际化:所谓国际化就是可以让用户选择不同的语言显示

步骤

  1. 创建一个自己的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)
    {
    }
}
  1. 新建一个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();
        }
    }
    
  1. 运行查看结果

    • 默认情况下使用浏览器中使用的默认语言,例如中文
image.png
  • 点击“English”链接,显示英文界面
image.png
  • 点击“中文”链接,再次返回中文界面,与默认界面相同

至此国际化完成。

补充知识

  1. @Bean注解

    Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。

    SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,在一个方法上使用@Bean注解就表明这个方法需要交给Spring进行管理。

    相关链接

  2. @Configuration注解

    从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
    参考链接
    简而言之:指示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理,以便在运行时为这些bean生成BeanDefinition和服务请求

    参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。