在我们实际开发中,一个web应用可能要在多个地区使用,面对不同地区的不同语言,为了适应不同的用户,我们可以尝试在前端页面实现多语言的支持,那么同样对于后端返回的一些提示信息,异常信息等,我们后端也可以根据不同的语言环境来进行国际化处理,返回相应的信息。
想要使应用支持国际化,首先需要知道用户的语言环境,即用户想要看到的语言,我们设想在用户每次请求时告诉服务器自己的语言环境,服务器收到请求后,根据不同的语言环境返回不同的信息来实现国际化。在spring应用中,用户的语言环境是通过区域解析器
来识别的,而区域解析器有分为好几种(后面详细说
),在我们不做配置修改时,spring使用AcceptHeaderLocaleResolver
作为默认的区域解析器,它是根据HTTP请求 Header中的Accept-language
的值来解析,当然区域解析器我们也可以自定义配置。
springboot默认就支持国际化。我们只需要只需要作相应的配置即可。
1.首先你需要一个springboot项目。IDEA中分分钟创建好一个项目。
2.在resources
下定义国际化配置文件,注意名称必须以messages
开始。(在springboot中,当我们不修改配置时默认去解析名称以message开始的properties文件
)
messages.properties (默认环境,无法确定语言环境时,解析该文件中的相应信息
)
messages_zh_CN.properties(中文语言环境时,解析该文件中的相应信息
)
messages_en_US.properties(英文语言环境时,解析该文件中的相应信息
)
在三个配置文件中分别以Key = Value
形式存储如下三条信息,如下:
1
| welcome = This is a project supporting internationalization.
|
3.创建thymeleaf页面
加入thymeleaf依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
|
在resources/templates
目录下创建hello.html
页面:
尝试在不同的语言环境下,通过#{welcome}
获取信息
1 2 3 4 5 6 7 8 9 10
| <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>demo</title> </head> <body> <p><label th:text="#{welcome}"></label></p> </body> </html>
|
4.创建访问页面的controller
注意这里controller的注解时@Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;
@Controller public class BaseController { @RequestMapping("/hi") public String hello() { return "/hello"; } }
|