thymeleaf常识
https://blog.csdn.net/chs007chs/article/details/82497743
${}变量引用
#{}i18n国际化
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
配置
package com.example.demo.中英文切换;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import java.util.Locale;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class LocaleConfig extends WebMvcConfigurerAdapter {
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
// 默认语言
slr.setDefaultLocale(Locale.US);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
// 参数名
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
在resource下创建messages.properties,空的
还有messages_en_US.properties
hello=hello
world=world
messages_zh_CN.properties
hello=\u4F60\u597D
world=\u4e16\u754c
中文转Unicodehttp://tool.chinaz.com/tools/unicode.aspx
前端进行国际化转换
页面
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" media="all" href="../../css/gtvg.css" th:href="@{/css/gtvg.css}" />
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<p><h3 th:text="#{hello}"></h3>
<a href="?lang=en_US">英语</a>
<a href="?lang=zh_CN">中文</a>
</p>
</div>
</body>
</html>
后端进行国际化转化
控制器
@Autowired
private MessageSource messageSource;
@GetMapping("/tt")
public String index(Model model) {
Locale locale = LocaleContextHolder.getLocale();
model.addAttribute("world", messageSource.getMessage("world", null, locale));
return "tt";
}
注入MessageSource
页面
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" media="all" href="../../css/gtvg.css" th:href="@{/css/gtvg.css}" />
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<p><h3 th:text="#{hello}+','+${world}"></h3>
<a href="?lang=en_US">英语</a>
<a href="?lang=zh_CN">中文</a>
</p>
</div>
</body>
</html>
其实是作为${}变量来使用的
遇到的坑,页面一直显示??hello_en_US??
解决:html引入
<link rel="stylesheet" type="text/css" media="all" href="../../css/gtvg.css" th:href="@{/css/gtvg.css}" />