Spring Boot默认支持国际化配置,只需要添加配置文件即可。
(1)配置文件
放在/src/main/resources/文件夹下即可
- messages.properties 默认
- messages_en.properties(英文)
- messages_zh.properties(中文)
- messages_ja.properties(日文)
(2)默认配置
引用
spring.messages.always-use-message-format=false # Set whether to always apply the MessageFormat rules, parsing even messages without arguments.
spring.messages.basename=messages # Comma-separated list of basenames, each following the ResourceBundle convention.
spring.messages.cache-seconds=-1 # Loaded resource bundle files cache expiration, in seconds. When set to -1, bundles are cached forever.
spring.messages.encoding=UTF-8 # Message bundles encoding.
spring.messages.fallback-to-system-locale=true # Set whether to fall back to the system Locale if no files for a specific Locale have been found.
修改spring.messages.basename的配置:
引用
spring.messages.basename=i18n/messages_common,i18n/messages_api,i18n/messages_admin
以下文件将都会被加载
- /src/main/resources/i18n/messages_common.properties
- /src/main/resources/i18n/messages_api.properties
- /src/main/resources/i18n/messages_admin.properties
(3)页面显示(Thymeleaf)
/src/main/resources/hello.html
<h1 th:text="#{search.condition}"></h1>
(4)代码中使用
@Autowired
private MessageSource messageSource;
String msg = messageSource.getMessage("search.condition", null, locale);
a- 获取request的Locale
Controller参数注入
@RequestMapping("/sample")
public String sample(Model model, Locale locale) {
String message = messageSource.getMessage("search.condition", null, locale);
log.info(message);
return "sample";
}
代码获取
Locale locale1 = LocaleContextHolder.getLocale(); // 当前request
Locale locale2 = RequestContextUtils.getLocale(request); // 指定request
b- 通用的使用
@Component
public class MessageManager {
private static MessageSource messageSource;
public static String getMsg(String key) {
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(key, null, locale);
}
public static String getMsg(String key, String... arg) {
Locale locale = LocaleContextHolder.getLocale();
Object[] args = new Object[arg.length];
for (int i = 0; i < arg.length; i++) {
args[i] = arg[i];
}
return messageSource.getMessage(key, args, locale);
}
@Autowired(required = true)
public void setMessageSource(MessageSource messageSource) {
MessageManager.messageSource = messageSource;
}
}
String msg = MessageManager.getMsg("search.condition");
(5)设置验证信息Validator
Hibernate Validator 和 JSR 303 validation API的提示信息,默认是ValidationMessages.properties。亦可以统一到messages.properties里。
@Configuration
public class MessageConfig extends WebMvcConfigurerAdapter {
@Autowired
private MessageSource messageSource;
@Bean
public LocalValidatorFactoryBean validator() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(messageSource);
return localValidatorFactoryBean;
}
@Override
public Validator getValidator() {
return validator();
}
}
(6)设置语言
默认根据浏览器的语言设置来决定显示语言AcceptHeaderLocaleResolver。一般应用多采用会话级别的语言设置SessionLocaleResolver。
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.CHINA);
return sessionLocaleResolver;
}
(7)切换语言
a- 通过Interceptor
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
URL中通过参数lang就可以切换到不同语言。比如:http://localhost:8080/hello.html?lang=zh
b- 代码内设置语言
Locale locale = Locale.CHINA;
LocaleContextHolder.setLocale(locale);
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
分享到:
相关推荐
在本篇“Spring Boot入门 - 基础篇(11)- 数据源配置”中,我们将探讨如何在Spring Boot项目中配置数据源,以便连接到数据库并执行相关的CRUD操作。Spring Boot以其自动化配置和简化开发流程而受到广泛欢迎,它使得...
本篇将深入探讨dbApi-spring-boot-starter的使用,结合提供的"dbApi-spring-boot-starter-demo"案例代码,帮助开发者理解和实践这一工具。 一、dbApi-spring-boot-starter简介 dbApi-spring-boot-starter的核心...
本篇文章将深入探讨Spring Boot入门项目的构建过程,以及它如何与微服务和分布式系统相结合。 **1. Spring Boot基础知识** Spring Boot 的核心理念是“约定优于配置”。它通过内置的Tomcat服务器、自动配置的Spring...
总的来说,"spring-boot-study-base.zip"是一个很好的Spring Boot入门教程,它涵盖了从基础到实践的关键知识点。通过学习和实践,你可以快速掌握Spring Boot的精髓,从而在实际开发中提高效率,构建出更加健壮和灵活...
本篇将基于"spring-boot-study-master.zip"这一压缩包,深入探讨Spring Boot的核心概念及实战应用,包括Druid、Ehcache、JWT、Mybatis、Generator、Quartz、Scheduling、Shiro以及Upload等模块,旨在帮助初学者从零...
### 二、Spring Boot入门实例步骤 #### 1. 创建项目 首先,我们需要一个支持Spring Boot的IDE,如IntelliJ IDEA。然后,通过IDE的新建项目向导,选择Spring Initializr来创建一个新的Spring Boot项目。在这个向导...
在"spring boot入门篇demo+ppt"中,我们可以期待学习以下核心知识点: 1. **Spring Boot基础知识**:了解Spring Boot的基本概念,包括其设计目标、主要特性以及与其他Spring框架的关系。 2. **起步依赖(Starter)...
在本篇Spring Boot笔记中,我们将探讨Spring Boot的核心特性、如何创建一个简单的Spring Boot应用以及相关的Maven配置。Spring Boot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建以及开发过程,提供了一种...
接下来,我们来看 `spring boot入门篇.pptx`,这个PPT很可能是对Spring Boot基础知识的详细讲解,可能包括以下内容: 1. **Spring Boot简介**:介绍Spring Boot的诞生背景、目标以及主要特点。 2. **环境准备**:...
通过阅读 "Spring boot(一): 入门篇.pdf" 和 "Spring boot(二):web综合开发.pdf",你可以深入了解 Spring Boot 的基本概念、快速上手指南以及如何进行 Web 应用的综合开发。这些资料将引导你从初识 Spring Boot 到...
以上是 Spring Boot 基础篇的知识点,包括 Spring Boot 简介、快速上手 Spring Boot、Spring Boot 入门案例、parent starter 引导类、内嵌 Tomcat 基础配置、配置属性配置、yaml 文件语法规则、yaml 数据读取、整合...
- **Starters**: Spring Boot 提供了一系列的 Starter POMs,用于快速搭建项目所需的基础结构。 - **代码结构**: - **默认包**: 建议使用默认包还是自定义包结构。 - **主应用类定位**: 主类的位置对自动配置和...
本篇笔记将介绍Spring Boot的核心概念、微服务架构、环境准备、入门案例以及相关开发工具的配置方法。 1. Spring Boot简介 Spring Boot是由Pivotal团队提供的开源框架,它使用“约定优于配置”的原则,旨在简化...
- **基础篇**:介绍 Spring Boot 的基本概念、安装和配置等基础知识。 - **进阶篇**:探讨如何利用 Spring Boot 构建复杂的应用程序,包括安全性和性能优化等方面。 - **实践篇**:提供一系列实战案例,涵盖微服务...
在上一部分中,我们可能已经介绍了Spring Boot的基础知识和快速入门。在此阶段,我们将更进一步,通过代码示例深入了解Spring Boot的核心特性以及如何集成常用的数据库连接池Druid和SQL监控工具P6Spy。 首先,...
为了更好地理解和掌握 Spring Boot,本文将围绕其入门篇进行详细介绍。 #### 二、Spring Boot 的核心价值 1. **自动配置**:Spring Boot 提供了一系列的自动配置选项,这意味着开发者无需编写大量的配置代码,框架...
一、支持泥瓦匠关注泥瓦匠个人博客的更新我的博客-分享学习可落地的技术博文Spring Boot 2.x系列教程,spring boot实践学习案例,是...错误处理Spring Boot 2 快速教程WebFlux 系列教程大纲(一)『 基础 - 入门篇 』S
在本篇【springBoot笔记二-来自于百度文库1】中,主要讲解了Spring Boot的基础概念、核心特性以及如何创建一个简单的Spring Boot项目。以下是详细的知识点解析: 1. **Spring Boot简介**: - Spring Boot是Spring...
"基础篇-03-SpringBoot入门案例(Idea联网版).mp4"和"基础篇-06-SpringBoot入门案例(手工制作版).mp4"通过实例演示了如何在IntelliJ IDEA中创建和配置Spring Boot项目,讲解了Spring Initializr的使用,以及如何...
在本篇博客“Spring Boot / Spring MVC 入门实践(三):入门项目介绍与用户注册登录的实现”中,我们将深入探讨如何使用Spring Boot和Spring MVC构建一个基础的Web应用,涵盖用户注册和登录的功能。这个源码将提供...