首页 > 其他分享 >springboot 框架国际化 + thymeleaf

springboot 框架国际化 + thymeleaf

时间:2023-09-09 14:22:23浏览次数:39  
标签:web 国际化 springboot springframework thymeleaf org import login servlet

项目目录结构

image

  • 注意:导入thymeleaf,web的pom依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • 配置各国语言的变量值,在resource目录下建立login.properties,login_en_US.properties,login_zh_CN.properties配置文件
    • 导入plugins Resource Bundle Edits可以便捷配置,如下图所示

image

  • 在application.properties 配置路径login.properties (就是将语言配置切入springboot的配置中去)
# spring的国际化配置
spring.messages.basename=i18n.login
此时就可以在index.html中访问到login.properties中的配置
  • 前端代码,记得加上thymeleaf的(不知道叫什莫)html头部解析配置
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
<h1 class="h3 mb-3 font-weight-normal" th:text="#{login.sub_title}">Please sign in</h1>
<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">english</a>
为了让前端可以切换语言,我们还要有地区解析器的配置,获取前端请求,更换login配置
  • 然后就是配置DIY的地区解析器localeResolver,(看上面的项目结构里)
package cn.mao.config;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;

import java.util.Locale;

public class AppLocaleResolver implements LocaleResolver {
    // 处理请求
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //获取请求参数
        String l = request.getParameter("l");

        Locale locale = Locale.getDefault();
        if (locale != null && StringUtils.isEmpty(l)) {
            return locale;
        }else{
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

  • 最后就是将localeResolver切入springboot配置,自定义了AppConfig,(看最最前面的项目结构)
package cn.mao.config;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");

    }


    @Bean
    @Qualifier("localeResolver") // 需要指定名,或者一下方法名不变,springboot底层装配固定了Bean的命名
    public LocaleResolver localeResolver(){
        return new AppLocaleResolver();
    }
}

  • 接下来,运行就可以了,自由切换语言了

标签:web,国际化,springboot,springframework,thymeleaf,org,import,login,servlet
From: https://www.cnblogs.com/maoshine/p/17689425.html

相关文章

  • springboot打fat包怎么把第三方jar打入boot/lib中
    在maven工程的POM文件修改如下,在build部分: <resources><resource><directory>src/main/resources</directory></resource><resource><directory>../yhya-credibledata-collect-service/lib</directory>......
  • IntelliJ IDEA新建SpringBoot项目
    IntelliJIDEA新建SpringBoot项目前言虽然新建项目比较简单,但还是有几个点需要注意。步骤下载和安装IDEA不再介绍新建工程点击“NewProject”标红的为重点关注需要关注的几个字段:Name:项目/模块名Artifact:相当于具体的功能名Group:可以理解为分组,例如......
  • springboot简单使用poi-tl
    简介poi-tl是一个基于ApachePOI的开源Word模板引擎,比Freemarker的功能更加强大。官方文档地址:http://deepoove.com/poi-tl/导包导入包时,依赖说明参考官方文档,导入包不适配可能会造成一些问题,此处可以使用<dependency><groupId>org.apache.poi</grou......
  • SpringBoot中配置文件和配置类实现个性化配置的一点区别
    先说配置文件,以properties文件为例,默认存放静态资源文件夹路径是 "classpath:/META-INF/resources/","classpath:/resources/","classpath:/static/","classpath:/public/"。经过下面配置后,这些默认规则都不再生效。#自定义静态资源文件夹位置spring.web.resources.static-locat......
  • 为什么 springboot 项目中 使用 lombok 不需要指定版本
    springboot默认管理了lombok的版本依赖,所以不需要指定版本号SpringBoot项目中使用Lombok不需要显式指定Lombok的版本,是因为SpringBoot的父项目(spring-boot-starter-parent)已经为您管理了Lombok的版本。这是通过在SpringBoot的父项目中的dependencyManagement部分指定Lombok的......
  • springboot实现 伪微信登录
    众所周知,微信扫码登陆的功能,个人网站是无法申请的,我们想在本地测一下微信登录也是无法实现。要实现微信登录,首先你得是一个企业单位,有公章才能申请,申请还要花费300块大洋。如果我们只是想学习和体验一下微信登录,可以自己本地搭建个微型服务模拟一下,过一把瘾也是可以的。如果你是企......
  • 详谈SpringBoot启动项目后执行自定义方法的方式
    在main启动函数中调用这个是在所有启动后执行,也是常用之一。@SpringBootApplicationpublicclassListenerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ListenerApplication.class,args);System.out.println("启动成......
  • springboot - idea - active: @profileActive@ 有时候 不识别 @ 导致启动失败
    1.背景有时候正常,有时候不行,特别是maven执行了clean命令后 2.解决右键执行一下这个即可 ......
  • springboot策略模式
    一.定义接口publicinterfacePearlTaskService{IntegergetTaskType();Map<String,Integer>execute(LonguserId,GameTaskgameTask,StringgameCode);}二.定义抽象类@Slf4jpublicabstractclassPearlTaskStrategyimplementsPearlTaskService{protec......
  • SpringBoot整合thymeleaf
    JavaEE领域有几种常用的模板引擎:Jsp,Thymeleaf,Freemarker,Velocity等.对于前端页面渲染效率来说JSP其实还是最快的,Velocity次之.Thymeleaf虽然渲染效率不是很快,但语法比较轻巧.Thymeleaf支持html5标准,Thymeleaf页面无需部署到servlet开发到服务器上,以.html后缀结......