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所示。

然后就到了国际化的重头戏,需要进行i18n的配置,这里新建配置类i18nConfig,这个类需要继承WebMvcConfigurerAdapter类。其中,在localeResolver()方法中设置默认使用的语言类型,在localeChangeInterceptor()方法中设置识别语言类型的参数,并且从继承类中实现addInterceptors()方法,用于拦截localeChangeInterceptor()方法,进而实现国际化。i18nConfig类代码如代码清单3-37所示。

改造默认生成的启动类,在类上加入SpringMVC注解@Controller,注入MessageSource类获取国际化资源,并且创建方法返回资源文件对应的数据,返回到前台。新增代码如代码清单3-38所示。

在src/main/resources/template下新建index.html,在页面中创建两个按钮,单击按钮切换语言。index.html页面代码如代码清单3-39所示。

启动项目,在浏览器上访问http://localhost:8080/,显示的内容如图3-6所示。

图3-6 国际化项目,中文显示效果

单击页面中的English(US)英文按钮,显示的内容如图3-7所示。

图3-7 国际化项目,英文显示效果

这时你可能会有一个疑问,为什么没有显示默认的配置文件?这是因为在发送HTTP请求的时候,浏览器会根据你的请求头判断区域而进行系统设定。那么问题来了,怎么才会使用到默认的配置文件呢?其实很简单,浏览器根据系统区域在你的程序中找不到语言时,就会使用默认配置,比如,删除项目中英文和中文的配置,只留下一个默认配置,重启项目,再次访问http://localhost:8080/,显示的内容如图3-8所示。

图3-8 国际化项目,默认显示效果

这时就可以看到默认配置,而且即使你单击上面的两个切换语言的按钮,也不会有所改变,因为应用内现在只有这一种配置。