SpringBoot学习---页面国际化

一.项目需求

  • 选择英文:网页文字显示为英文模式
  • 选择中文:网页文字显示为中文模式

在这里插入图片描述
项目结构如下:
在这里插入图片描述
index.html(呈现登入界面的html):
在这里插入图片描述
MyMvcConfig.java文件(当在地址栏输入 "/""/index.html" 的时候跳转到index.html界面):
在这里插入图片描述
如输入http://localhost:8089/:
在这里插入图片描述
如输入http://localhost:8089/index.html
在这里插入图片描述

二.实现需求步骤

1.设置properties的编码为utf-8

在这里插入图片描述

在这里插入图片描述

2.在resources目录下创建i18n文件

在这里插入图片描述

3.创建三个Resource Bundle文件(文件名为 login,login_en_US和login_zh_CN)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.通过#{…}消息表达式(国际表达式)来代替idnex.html中的中文

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

5.在login,login_en_US和login_zh_CN中对index.html的国际表达式赋值

login是默认情况下,采用的格式,这里默认采用中文:
在这里插入图片描述
login_zh_CN:采用中文模式
在这里插入图片描述
login_en_US:采用英文模式
在这里插入图片描述
赋完值后,index.html就不会报错了:
在这里插入图片描述

6.在config文件中创建一个MyLocalResolver类,该类实现LocaleResolver接口,来实现国际化操作

index.html中有一个中文和英文的按钮,当点击的时候,将参数传递到后端,交给MyLocalResolver类进行处理,实现国际化
在这里插入图片描述
MyLocalResolver类代码如下:
在这里插入图片描述

7.在MyMvcConfig类中使用自己自定义的国际化组件

在这里插入图片描述

8.在application.properties中指定自定义的目录

在这里插入图片描述

9.运行效果

点击English
在这里插入图片描述
点击中文
在这里插入图片描述

三.项目完善

上面的操作虽然完成了需求但是存在一个问题,当我们访问其他页面时就无效了,这是因为我们是通过地址后面的参数(l=‘en_US’)来设置中英文,如何解决这个问题呢,我们可以在设置语言的时候将该信息写入到session中去,这样下次访问的时候,如果地址后面没有参数(l=‘en_US’),我们就可以直接从session中获取。

在MyLocalResolver类中:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42753193/article/details/123562525