Springboot Internationalization
参考文章:https://phrase.com/blog/posts/spring-boot-internationalization/
https://www.tutorialspoint.com/spring_boot/spring_boot_internationalization.htm
- 原理:
国际化是一个过程,可以使您的应用程序适应不同的语言和地区,而无需在源代码上进行工程更改。换句话说,国际化是本地化的准备。
LocaleResolver
我们需要确定您的应用程序的默认语言环境。我们需要在我们的Spring Boot应用程序中添加LocaleResolver bean。
LocaleChangeInterceptor用于根据添加到请求中的language参数的值来更改新的Locale。
为了实现此效果,我们需要将LocaleChangeInterceptor添加到应用程序的注册表拦截器中。配置类应扩展WebMvcConfigurerAdapter类,并重写addInterceptors()方法。
- create springboot maven project : https://start.spring.io/
- 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>
- code
- 配置类
package com.study.lancestudyspringboot.studyinternatonalization.config;
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.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
@Configuration
public class Internationalization implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.US);
return sessionLocaleResolver;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
- 测试配置是否成功
package com.study.lancestudyspringboot.studyinternatonalization.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("internationalizationtst")
public class HomeController {
@GetMapping("/test")
public String welcome() {
return "welcome";
}
@GetMapping("/t")
public Integer test() {
return 1;
}
}
-
消息来源
默认情况下,Spring Boot应用程序从类路径下的src / main / resources文件夹中获取
消息源。默认语言环境消息文件名应为message.properties,每个语言环境的文件应
命名为messages_XX.properties。“ XX”代表语言环境代码。所有消息属性都应用作密钥对值。如果在语言环境中找不到任何属性,则应用程序
将使用messages.properties文件中的默认属性。 -
默认的messages.properties将如下所示-
welcome.text=Hi Welcome to Everyone
-
法语的messages_fr.properties将如下所示-
welcome.text=Salut Bienvenue à tous
注意 -消息源文件应另存为“ UTF-8”文件格式。
html 放在templates 目录下

<!DOCTYPE html>
<html>
<head>
<meta charset = "ISO-8859-1"/>
<title>Internationalization</title>
</head>
<body>
<h1 th:text = "#{welcome.text}"></h1>
</body>
</html>
网友评论