• SpringBoot+Thymeleaf实现国际化


    新建Srpring Boot项目

    引入thymeleaf依赖

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
         <version>2.5.3</version>
    </dependency>
    

    项目配置application.yml

    spring:
      messages:
      	# 国际化文件名
        basename: i18n/login
      thymeleaf:
      	# 禁用thymeleaf缓存,否则热部署看不出效果
        cache: false
        # 设置编码格式
        encoding: utf-8
    server:
      port: 8888
    

    resources下添加i18n文件夹并添加登录配置文件:

    templates文件夹下添加index.html文件

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>消息国际化</title>
    </head>
    <body>
    <div>
        <label th:text="#{login.username}">UserName</label>
        <input th:placeholder="#{login.username}" placeholder="UserName">
        <br>
        <label th:text="#{login.password}">Password</label>
        <input th:placeholder="#{login.password}" placeholder="Password">
        <br>
        <button th:text="#{login.btn}">Login</button>
        <br>
        <a class="btn btn-sm" th:href="@{/index(l='zh_CN')}">中文</a>
        <a class="btn btn-sm" th:href="@{/index(l='en_US')}">English</a>
    </div>
    </body>
    </html>
    

    添加访问控制器IndexController

    package com.whw.gjh.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping
    public class IndexController {
    
        @GetMapping("/index")
        public String index() {
            return "index";
        }
    }
    

    添加自定义语言环境解析并注入到容器

    package com.whw.gjh.config;
    
    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;
    
    /**
     * @描述 自定义语言解析器,解析header中的语言
     **/
    public class MyLocaleResolver implements LocaleResolver {
        @Override
        public Locale resolveLocale(HttpServletRequest request) {
            String l = request.getParameter("l");
            Locale locale = Locale.getDefault();
            if (!StringUtils.isEmpty(l)) {
                String[] split = l.split("_");
                locale = new Locale(split[0], split[1]);
            }
            return locale;
        }
    
        @Override
        public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    
        }
    }
    

    注入容器

    package com.whw.gjh.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.LocaleResolver;
    
    @Configuration
    public class MyConfig {
    
        @Bean
        public LocaleResolver localeResolver() {
            return new MyLocaleResolver();
        }
    }
    

    配置热部署(非必须):
    引入热部署依赖并配置

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    

    运行程序并访问:

    切换语言:

  • 相关阅读:
    BZOJ 1041: [HAOI2008]圆上的整点
    BZOJ 1040: [ZJOI2008]骑士
    BZOJ 1037: [ZJOI2008]生日聚会Party
    BZOJ 1034: [ZJOI2008]泡泡堂BNB
    BZOJ 1032: [JSOI2007]祖码Zuma
    BZOJ 1031: [JSOI2007]字符加密Cipher
    BZOJ 1030: [JSOI2007]文本生成器
    Flink学习(三) 批流版本的wordcount Scala版本
    Flink学习(三) 批流版本的wordcount JAVA版本
    Flink学习(二) 应用场景和架构模型
  • 原文地址:https://www.cnblogs.com/giswhw/p/15513114.html
Copyright © 2020-2023  润新知