很多项目中都需要国际化的支持,这里来使用springboot实现国际化,关于国际化i18n的各个国家语言的编码,大家可以自行查询,这里不列出,只配置英文en_US和中文zh_CN。
国际化的支持不需要加入额外的依赖,我们只加入一个web组件即可:
启动类不用改,增加一个配置类:
配置中配置了两个地方,一个是使用SessionLocaleResolver,并且配置了默认的国际化语言为英语,另一个配置了国际化功能的参数,通过这个参数可以选择使用哪个国家的语言,比如需要使用中文,可以在url后面加上?lang=zh_CN。
下面来看一下配置文件,需要配置两个参数:
basename表示的意思是,国际化内容的路径,也就是i18n文件夹下面以num开头的所有文件,i18n文件夹需要放在resources下面。basename可以支持多个参数,用逗号隔开。
fallback-to-system-locale=false表示找不到对应语言的时候,比如写了lang=123,那么就是用默认文件num.properties中的配置内容。
根据上面的配置,我们要在resources下面新建一个i18n文件夹,并在文件夹下面新建三个文件,分别是 num.properties, num_en_US.properties, num_zh_CN.properties,在 num.properties中,我们输入内容 i18n.num=123,在 num_en_US.properties中,我们输入内容 i18n.num=456,在 num_zh_CN.properties中,我们输入内容 i18n.num=789,
所有的配置都完成了,国际化可以直接使用了,我们来写一个接口测试一下:
MessageSource可以直接获取国际化对应的内容,接口本身的写法没有任何影响,我们来测试一下,首先看一下中文:
没有问题,再来看一下英文:
也没有问题,再来看一下一种不存在的语言:
这时候走的就是国际化默认的配置内容!我们再来试试不传入lang参数的结果:
可以看到返回的是英文的结果,也就是我们在配置类中配置的默认的国际化语言。
注意,在浏览器中测试时,受cookie的影响,不输入语言参数的结果并不一定是设置的结果,如果想要达到这种效果,需要每次清除cookie。
代码地址: https://gitee.com/blueses/spring-boot-demo