【SpringBoot学习笔记】实现国际化

实现国际化

以登录login页面为例:

  1. 在resources/templates文件夹下创建index.html

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
          <meta name="description" content="">
          <meta name="author" content="">
          <title>Signin Template for Bootstrap</title>
          <!-- Bootstrap core CSS -->
          <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
          <!-- Custom styles for this template -->
          <link th:href="@{/css/signin.css}" rel="stylesheet">
       </head>
    
       <body class="text-center">
          <form class="form-signin" th:action="@{/user/login}">
             <img class="mb-4" th:src="@{/img/bootstrap-solid.svg}" alt="" width="72" height="72">
             <h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h1>
    
             <!--如果msg的值不为空,则显示msg-->
             <p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
    
             <label class="sr-only" th:text="#{login.username}">Username</label>
             <input type="text" name="username" class="form-control" th:placeholder="#{login.username}" required="" autofocus="">
             <label class="sr-only" th:text="#{login.password}">Password</label>
             <input type="password" name="password" class="form-control" th:placeholder="#{login.password}" required="">
             <div class="checkbox mb-3">
                <label>
              <input type="checkbox" value="remember-me" > [[#{login.remember}]]
            </label>
             </div>
             <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
             <p class="mt-5 mb-3 text-muted">© 2017-2018</p>
             <a class="btn btn-sm" th:href="@{/index(l='ch_ZN')}">中文</a>
             <a class="btn btn-sm" th:href="@{/index(l='en_US')}">English</a>
          </form>
    
       </body>
    
    </html>
    
  2. 在resources文件夹下创建i18n文件夹

  3. 在i18n文件夹下创建login.properties(默认)、login_en_US.properties(英文)、login_zh_CN.properties(中文)文件

    login.properties(默认)

    login.btn=登录
    login.password=密码
    login.remember=记住我
    login.tip=请登录
    login.username=用户名
    

    login_en_US.properties(英文)

    login.btn=Sign in
    login.password=password
    login.remember=Remember me
    login.tip=Please Sign in
    login.username=username
    

    login_zh_CN.properties(中文)

    login.btn=登录
    login.password=密码
    login.remember=记住我
    login.tip=请登录
    login.username=用户名
    
  4. 在src/main/java/config文件夹下创建MyMvcConfig.java文件和MyLocaleResolver.java文件

    MyLocaleResolver.java

    package com.test.demo.config;
    import org.springframework.web.servlet.LocaleResolver;
    import org.thymeleaf.util.StringUtils;
    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) {
            //如果请求url没有带国际化参数就用默认的
            Locale locale = Locale.getDefault();
            
            //获取请求url中的国际化参数值
            String url = request.getParameter("l");
    
            if(!StringUtils.isEmpty(url)){
                String[] splits = url.split("_");
                //国家 地区
                locale = new Locale(splits[0], splits[1]);
            }
    
            return locale;
        }
    
        @Override
        public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    
        }
    }
    

    MyMvcConfig.java

    package com.test.demo.config;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.LocaleResolver;
    org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import java.util.Locale;
    
    //扩展springmvc
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("index");
            registry.addViewController("/index").setViewName("index");
        }
    
        //自定义国际化
        @Bean
        public LocaleResolver localeResolver(){
            return new MyLocaleResolver();
        }
    
    }
    
  5. 修改配置文件application.yml

    spring:
      #关闭模板引擎缓存
      thymeleaf:
        cache: false
    
      #配置国际化文件
      messages:
        basename: i18n.login
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值