SpringBoot 国际化语言切换

SpringBoot 国际化语言切换

配置国际化语言

  1. resources 创建 i18n国际化语言配置文件目录

  2. 创建 login.properties默认语言配置文件

  3. 创建 login_zh_CN.properties 中文配置文件

    创建中文配置文件后,IDEA会识别到正在进行国际化配置,会生成一个 Resource Bundle 'login' 的目录

    SpringBoot 国际化语言切换

  4. 打开 login.properties 配置文件点击左下角 Resource Bundle 配置各个语言的意思

    SpringBoot 国际化语言切换

  5. 在 html 页面(thymeleaf),通过 #{} 进行引用

    例如:th:text="#{login.title}"

  6. 默认根据浏览器语言进行显示

点击链接切换语言

SpringBoot 国际化语言切换

  1. 页面点击链接进行跳转

    1. 通过 @{} 跳转到当前页面,小括号内是传的值
    <a class="btn btn-sm" th:href="@{/login.html(l='zh_CN')}">中文</a>
    <a class="btn btn-sm" th:href="@{/login.html(l='en_US')}">English</a>
    
  2. component目录下创建 MyLocaleResolve(语言环境解析器)

    1. 实现 LocaleResolve接口

      package com.example.springbootweb.component;
      
      import org.springframework.util.StringUtils;
      import org.springframework.web.servlet.LocaleResolver;
      
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.util.Locale;
      
      public class MyLocaleResolver implements LocaleResolver {
          @Override
          public Locale resolveLocale(HttpServletRequest request) {
            	// 从 request 域中读取传过来的参数
              String l = request.getParameter("l");
            	// 声明 Locale 为默认语言显示
              Locale locale = Locale.getDefault();
            	// 判断传入参数是否为空
              if (!StringUtils.isEmpty(l)){
                	// 将传过来的参数,通过下划线分割,获取到地区(zh)即代码(CN)
                  String[] split = l.split("_");
                	// 进行赋值
                  locale = new Locale(split[0],split[1]);
              }
            	// 返回
              return locale;
          }
      
          @Override
          public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
      
          }
      }
      
      
  3. config.MvcConfig下加载自己配置的语言环境解析器

        /**
         * 加载自己语言环境解析器
         * @return LocaleResolver
         */
        @Bean
        public LocaleResolver localeResolver(){
            return new MyLocaleResolver();
        }
    
上一篇:在Java中更改打印流的语言环境


下一篇:Linux学习----ArchLinux安装