SpringBoot-国际化

SpringBoot-国际化1 国际化 1 1 国际化是什么 国际化 Internationa 简称 i18m 指软件开发应当具备支持多种语言和地区的功能 也就是说能够具备切换页面显示语言的功能 i18n 其中 I 和 n 分别为首末字符 18 则为中间的字符数 2 实现国际化

大家好,我是讯享网,很高兴认识大家。

1. 国际化

1.1 国际化是什么

国际化(Internationalization,简称i18m):指软件开发应当具备支持多种语言和地区的功能。也就是说能够具备切换页面显示语言的功能。

i18n,其中“I”和“n”分别为首末字符,18 则为中间的字符数

2. 实现国际化

在 Spring Boot 实现国际化的步骤如下:

  1. 编写国际化资源(配置)文件
  2. 利用thymeleaf修改页面
  3. 区域化信息配置

2.1 编写资源文件

资源文件格式:基本名_语言代码_国家或地区代码

我们需要的资源文件包括:

  • messages_zh_CN.properties 中文
  • messages_en_US.properties 英文

1️⃣ Step1:在 resources 目录下新建一个 i18n 目录;

image-20211022142846817
讯享网

2️⃣ Step2:在 i18n 目录下新建一个默认的资源文件,比如 massgaes.properties

image-20211022143214065

3️⃣ Step3:在 i18n 目录下新建一个中文资源文件:massages_zh_CN.properties

image-20211022143501171

⚠️ 注意:当我们建完这个我呢见我们发现,IDEA自动为我们将配置文件放在 Resource Bundle 目录中,且名为 massages。

4️⃣ Step4:在 Resource Bundle 目录上右键点击 Add Property Files…

image-20211022143907644

5️⃣ Step5:添加 en_US

1022addlocales

6️⃣ Step6:编写配置的语句,一共写三版:默认显示、中文显示、英文显示,这里就默认显示中文。

image-20211022145501130

🌈 有的版本的IDAE在窗口的左下角会有 TextResource Bundle ,选择 Resource Bundle 进行配置也是一项,我的IDEA版本的2021.2,没找到这个点。

2.2 修改页面

利用 thymeleaf 将每条语句绑定在一起。

1️⃣ Step1:在html中加入thymeleaf;

<html lang="en" xmlns:th="http://www.thymeleaf.org">

讯享网

2️⃣ Step2:在标签中添加thymeleaf语句

  • 如果文本在标签里面用:th:text="#{massages.xxx}"
  • 如果文本在标签外面用:[[#{massages.xxx}]]

2.3 中英文

利用 a 标签实现中英文的切换。利用thymeleaf指定要调转的页面以及传递的参数。

讯享网<a th:href="@{SignUp.html(language='zh_CN')}">中文</a> <a th:href="@{SignUp.html(language='en_US')}">English</a> 

2.4 区域化信息配置

区域化信息配置时实现 LocaleResolver 接口。

LocaleResolver:该组件提供国际化支持,是本地化解析器。

1️⃣ Step1:在项目的Java目录下的 xxxApplication 的同级目录下新建 Config 目录;

2️⃣ Step2:在 Config 目录下新建 MassagesLocalResolver 类,并实现 LocalResolver 接口;

Locale resolveLocale(HttpServletRequest request); void setLocale(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable Locale locale); 

3️⃣ Step3:实现 resolveLocale 方法;

讯享网 @Override public Locale resolveLocale(HttpServletRequest request) { 
    // 获取请求中的语言参数来链接 String language = request.getParameter("language"); Locale locale = Locale.getDefault(); if (!StringUtils.isEmpty(language)) { 
    String[] strings = language.split("_"); locale = new Locale(strings[0], strings[1]); } return locale; } 

4️⃣ Step4:在Config目录下新建一个配置类:Boot_Config,实现 WebMvcConfigurer 接口,并实现 localeResolver 方法。

@Configuration public class Boot_Config implements WebMvcConfigurer { 
    @Bean public LocaleResolver localeResolver(){ 
    return new MassagesLocalResolver(); } 

2.4 运行测试

1025inte

3. 写在最后

实现的接口包括:LocalResolver 、WebMvcConfigurer

  • LocalResolver :默认的解析器,用于设置当前会话的默认国际化语言。
  • WebMvcConfigurer:拦截器,用来对请求的语言参数进行获取,采用默认的LocaleChangeInterceptor 作为拦截器来指定切换国际化语言的参数名。

 


❤️ END ❤️
小讯
上一篇 2025-01-09 23:55
下一篇 2025-03-28 19:20

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17343.html