Spring Boot国际化(i18n)

本文详细介绍了如何在Spring Boot中实现国际化(i18n),包括配置Thymeleaf,页面元素国际化,解释Spring Boot默认国际化原理,演示在Firefox和Chrome中修改区域语言以测试效果,以及如何修改messages配置前缀。此外,文章还讨论了多种区域解析器的使用,如AcceptHeaderLocaleResolver、SessionLocaleResolver、CookieLocaleResolver和FixedLocaleResolver,以及如何通过参数修改用户区域。
摘要由CSDN通过智能技术生成

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。


       那么当我们使用Spring Boot如何进行国际化呢?那么当你读完这篇文章你会学到如下知识:

(1) spring boot 加入thymeleaf;

(2) 页面元素国际化;

(3) spring boot默认国际化原理说明;

(4) firefox浏览器修改区域语言;

(5)chrome浏览器修改区域语言;

(6)修改默认messages配置前缀;

(7) 代码中如何获取国际化信息;

(8) 优化代码获取国际化信息;

(9) 区域解析器之AcceptHeaderLocaleResolver;

(10) 会话区域解析器之SessionLocaleResolver;

(11) Cookie区域解析器之CookieLocaleResolver;

(12)固定的区域解析器之FixedLocaleResolver ;

(13)使用参数修改用户的区域;


       接下里我们看看这些具体应该怎么操作。

(1) spring boot 加入thymeleaf;

       Spring boot集成thymeleaf在http://www.vxzsk.com/440.html

这篇文章有介绍过,所以这里就不过多进行介绍了。在这里我们为之后的讲解做点基本准备。

模板文件resources/templates/hello.html :

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
< html >
< head >
     < meta  charset = "UTF-8"  />
     < title >hello spring boot</ title >
</ head >
< body >
    
     < p >欢迎你登录到阿里巴巴网站</ p >
        
</ body >
</ html >

这里没有特殊的代码,访问就是显示一些文字,这里还没加入国际化的相关东西,之后添加。

编写访问地址:com.kfit.controller.HelloController:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package  com.kfit.controller;
  
import  org.springframework.stereotype.Controller;
import  org.springframework.web.bind.annotation.RequestMapping;
  
@Controller
public  class  HelloController {
    
     @RequestMapping ( "/hello" )
     public  String hello(){
        return   "/hello" ;
     }
    
}

这里就是访问http://127.0.0.1:8080/hello就跳转到hell.html进行访问。

到这里准备工作就好了。


(2) 页面元素国际化;

       我们观察hello.html里面的信息直接就是中文显示,所以我们现在的需求是当访问语言是zh的时候显示为中文,当语言为en的时候显示为英文,那么怎么操作呢?


首先我们先定义国际化资源文件,spring boot默认就支持国际化的,而且不需要你过多的做什么配置,只需要在resources/下定义国际化配置文件即可,注意名称必须以messages开发。

我们定义如下几个文件:

messages.properties (默认,当找不到语言的配置的时候,使用该文件进行展示)。

messages_zh_CN.properties(中文)

messages_en_US.properties(英文)

具体的代码如下:

messages.properties:

welcome = 欢迎你登录到 阿里巴巴 网站(default)

messages_zh_CN.properties:

1
welcome = \u6b22\u8fce\u4f60\u767b\u5f55\u5230 \u963f\u91cc\u5df4\u5df4 \u7f51\u7ad9\uff08\u4e2d\u6587\uff09

对应的信息是:

welcome = 欢迎你登录到 阿里巴巴 网站(中文)

messages_en_US.properties:

1
welcome = welcome to login to alibaba website(English)

配置信息就这么简单,那么在前端展示怎么修改呢,修改hello.html文件,使用#{key}的方式进行使用messages中的字段信息:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
< html >
< head >
     < meta  charset = "UTF-8"  />
     < title >hello spring boot</ title >
</ head >
< body >
     < p >< label  th:text = "#{welcome}" ></ label ></ p >
</ body >
</ html >

重新访问:http://127.0.0.1:8080/hello 应该显示:

欢迎你登录到 阿里巴巴 网站(中文)


(3) spring boot默认国际化原理说明

       在这里我们先打住下,简单说下原理:

第一个问题,为什么命名必须是messages开头,需要看一个源码文件:

org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration:

这里提取部分代码:

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot提供了简单易用的国际化i18n)支持。以下是使用Spring Boot进行国际化的步骤: 1. 在src/main/resources目录下创建一个新的文件夹,命名为"i18n"。在该文件夹下创建多个属性文件,分别对应不同的语言。例如,可以创建messages.properties(默认语言)和messages_zh.properties(中文)。 2. 在属性文件中添加键值对,以便将文本翻译成不同的语言。例如,在messages.properties中可以添加"welcome.message=Welcome!",在messages_zh.properties中可以添加"welcome.message=欢迎!"。 3. 在Spring Boot的配置文件(application.properties或application.yml)中添加以下配置: ``` spring.messages.basename=i18n/messages spring.messages.fallback-to-system-locale=false ``` 这样配置后,Spring Boot将会自动加载位于i18n文件夹下的属性文件。 4. 在需要进行国际化的地方使用`@Autowired`注解注入`org.springframework.context.MessageSource`对象,并使用`getMessage`方法获取对应的文本。例如: ```java @Autowired private MessageSource messageSource; public String getWelcomeMessage() { return messageSource.getMessage("welcome.message", null, LocaleContextHolder.getLocale()); } ``` `LocaleContextHolder.getLocale()`方法可用于获取当前请求的语言环境。 5. 运行应用程序并访问相应的接口或页面,Spring Boot将会根据请求的语言环境自动加载对应的属性文件,实现国际化效果。 这些是使用Spring Boot进行国际化的基本步骤,你可以根据需要进行进一步的定制和扩展。希望对你有所帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值