有的项目中需要根据环境切换不同的语言,使用国际化可以轻松解决
下面简单介绍在SpringBoot中简单使用国际化的示例,并结合源码分析

  1. 第一步,引入Thymeleaf,我们是通过Thymeleaf标签的形式对国际化取值的

    	<!-- 引入thymeleaf模板引擎-->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-thymeleaf</artifactId>
    	</dependency>
    
  2. 编写国际化配置文件
    这里以登录界面为例,写了login_zh_CN.propertieslogin_en_US.properties
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    这是常见的一些国家、语言的写法(后面大写)

    配置文件如下:

    login_en_US.properties

    login.password=Password
    login.remember=remember-me
    login.sign=Sign in
    login.tip=Please Login
    login.username=Username
    

    login_zh_CN.properties

    login.password=密码
    login.remember=记住我
    login.sign=登录
    login.tip=请登录
    login.username=用户名
    
  3. 分析SpringBoot为我们自动配置的国际化处理器
    打开MessageSourceAutoConfiguration,这就是有关国际化的自动配置类
    里面真正处理国际化的组件是ResourceBundleMessageSource,可以看到SpringBoot已经为我们自动配置好了,配置项由MessageSourceProperties提供
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    继续看,这个类里面添加了组件MessageSourceProperties,并跟全局配置文件进行了绑定
    @ConfigurationProperties从配置文件取值,前缀是spring.messages
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    继续打开该组件,其中basename这个属性表明的是加载的国际化文件的前缀(默认是messages,我这里自定义成了login)
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    那很简单的我们知道可以在全局配置文件里面修改basename的值

    #修改默认国际化识别的文件前缀(可以指定包名)
    spring:
      messages:
        basename: "i18n.login"
    

    i18n是国际化配置文件的包名

  4. 最后在页面使用Thymeleaf进行国际化取值即可
    需要注意的是:单标签使用行内写法[[#{login.remember}]]
    双标签直接使用th:text="#{login.password}"

    代码示例:
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言

  5. 最终效果

    简体中文
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    在浏览器设置中将美国英文移到最前面
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    效果:
    SpringBoot国际化处理示例(一)—— 浏览器环境下切换语言
    谢谢指正

    下一篇写如何自己通过页面下方的链接切换不同的语言

    SpringBoot国际化处理示例(二)—— 自定义LocaleResolver点击按钮切换语言

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-01
  • 2022-01-03
  • 2021-06-26
  • 2021-10-25
猜你喜欢
  • 2021-04-09
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2021-11-25
相关资源
相似解决方案