![Spring Boot 2实战之旅](https://wfqqreader-1252317822.image.myqcloud.com/cover/805/26542805/b_26542805.jpg)
3.7 国际化使用
对于很多门户网站,可能有很多客户来源于其他国家,这时就需要使用国际化来进行对外的交流。那么,在Spring Boot项目中是如何使用国际化的呢?
接下来使用一个小例子介绍Spring Boot项目如何运用国际化。
本节使用的依赖文件与3.5节使用Thymeleaf所使用的依赖文件以及配置文件完全一致,这里不再展示。
Spring Boot在默认情况下是支持国际化使用的,首先需要在src/main/resources下新建国际化资源文件,这里为了举例说明,分别创建如下三个文件:
• messages.properties(默认配置),内容如代码清单3-34所示。
代码清单3-34 国际化项目-默认语言配置文件内容
message = 欢迎使用国际化(默认)
• messages_en_US.properties(英文配置),内容如代码清单3-35所示。
代码清单3-35 国际化项目-英文配置文件内容
message = Welcome to internationalization (English)
• messages_zh_CN.properties(汉语配置),内容如代码清单3-36所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-T50_80984.jpg?sign=1739301549-4Vd52IYm5SuwxMOfKuWe15cyFOEZs4aX-0-93d8c94477bd953d4151e081f581587b)
然后就到了国际化的重头戏,需要进行i18n的配置,这里新建配置类i18nConfig,这个类需要继承WebMvcConfigurerAdapter类。其中,在localeResolver()方法中设置默认使用的语言类型,在localeChangeInterceptor()方法中设置识别语言类型的参数,并且从继承类中实现addInterceptors()方法,用于拦截localeChangeInterceptor()方法,进而实现国际化。i18nConfig类代码如代码清单3-37所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-T51_80986.jpg?sign=1739301549-9yyLRFSXEcZIu9pOchQar36XnwP7m0L5-0-b58bf1d4ae21e032959ccc8726a009e8)
改造默认生成的启动类,在类上加入SpringMVC注解@Controller,注入MessageSource类获取国际化资源,并且创建方法返回资源文件对应的数据,返回到前台。新增代码如代码清单3-38所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-T51_80985.jpg?sign=1739301549-KbVwwcN1VPYY3ThGaeM2fIaGrzjkIDLA-0-8ed12851963d5f6c32680760f00f1fd6)
在src/main/resources/template下新建index.html,在页面中创建两个按钮,单击按钮切换语言。index.html页面代码如代码清单3-39所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-T52_80987.jpg?sign=1739301549-IxNpv4pfmLlEioCdPGaaNOUGP31XdFc2-0-8040c6a5a28d36f3c30a6d56f02ba765)
启动项目,在浏览器上访问http://localhost:8080/,显示的内容如图3-6所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-P52_18498.jpg?sign=1739301549-R6vYtob9rkAdvNnrt5u1cMXvZgphNeQL-0-3a9bea09b4f367f4dc3df3cb044b11fc)
图3-6 国际化项目,中文显示效果
单击页面中的English(US)英文按钮,显示的内容如图3-7所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-P52_18508.jpg?sign=1739301549-lI9aPtv4TDcQAAC0csFZas8qpoZ9Ea6T-0-e4d64eac2541ef3bb86981230fff74c1)
图3-7 国际化项目,英文显示效果
这时你可能会有一个疑问,为什么没有显示默认的配置文件?这是因为在发送HTTP请求的时候,浏览器会根据你的请求头判断区域而进行系统设定。那么问题来了,怎么才会使用到默认的配置文件呢?其实很简单,浏览器根据系统区域在你的程序中找不到语言时,就会使用默认配置,比如,删除项目中英文和中文的配置,只留下一个默认配置,重启项目,再次访问http://localhost:8080/,显示的内容如图3-8所示。
![](https://epubservercos.yuewen.com/47855F/15056703904175906/epubprivate/OEBPS/Images/Figure-P53_18520.jpg?sign=1739301549-FX3nVbmTGDCGOpKyxy5j6NMEABxkGrsl-0-d772c7e5a8e820c4fc11949f1abb93d1)
图3-8 国际化项目,默认显示效果
这时就可以看到默认配置,而且即使你单击上面的两个切换语言的按钮,也不会有所改变,因为应用内现在只有这一种配置。