[实验]国际化 | 学习笔记

简介: 快速学习[实验]国际化

开发者学堂课程【SpringBoot快速掌握 - 核心技术:[实验]国际化 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/612/detail/9247


[实验]国际化

内容介绍:

一、 Spring MVC 实现国际化

二、 步骤

 

一、Spring MVC 实现国际化

1、编写国际化配置文件;

通过浏览器的语言信息来完成对页面的语言效果。

配置要显示的内容

当点击中文时,页面会改为中文,点击 English 时,页面会修改为英文

2、使用 ResourceBundleMessageSource 管理国际化资源文件

3、如果用 jsp 页面,在页面使用 fmt:message 取出国际化内容

login. btn=登陆

login. password=密码

login. remember=记住我

login. tip=请登陆

login. username=用户名

 

二、步骤

1、编写国际化配置文件,抽取页面需要显示的国际化消息

创建文件夹:i18n 来存放国际化文件

创建登录的国际化 login.properties 和

中文的国际化登录 login_zh_CN.properties

英文的国际化登录 login_en_US.properties

随便点击一个文件,下方有 Resource Bundle 视图,点击进去,点击+号添加属性

其中右边三个框分别为默认,英文,中文

添加一个登录属性 login.tip ,图片如下:

再次添加一个 name 属性:login.username

添加密码属性:login.password

添加 login.remember 属性

添加按钮属性 login.remember 属性

切换 text 视图,都已经写好了

image.png

这样国际化配置文件就配置完毕、

2、SpringBoot 自动配置好了管理国际化资源文件的组件;

MessageSource 自动配置:

@Beanpublic MessageSource messageSource( ) {//new一个ResourceBundleMessageSource对象,ResourceBundleMessageSource messageSource=new ResourceBundleMessageSource();

//吧基础名和编码方式传了过来

if (StringUtils. hasText(this .basename)) {mes sageSource . setBasenames( StringUtils . commaDel imitedL istToStringArray(StringUtils. trimAllWhitespace (this . basename)));if (this . encoding != nu11) {messageSource . setDefaultEnc oding (this . encoding . name());messageSource.setFallbackToSystemLocale(this. fallbackToSystemLocale);messageSource.setCacheSeconds(this. cacheSeconds);messageSource.setAlwaysUseMessageFormat(this. alwaysUseMessageFormat);

//将 messageSource 返回了

return messageSource ;}

所以可以看见 spring boot 已经配置好了

资源文件组件:

@ConfigurationProperties(prefix . "spring.messages")public class MessageSourceAutoConfiguration {/**Comma-separated list of basenames (essentially a fully-qualified classpathlocation), each following the ResourceBundle convention with relaxed support forslash based locations. If it doesn't contain a package qualifier (such as"org.mypackage"), it will be resolved from the classpath root.*/

//设置基础名,可以直接访问了 i18n 中的文件了

private String basename = "messages";

//上面这段代码的意思是:我们的配置文件可以直接放在类路径下叫messages.properties;这样不用做任何配置就能使用国际化配置功能了

//使用 @Bean 为容器添加一个组件,MessageSource就是管理国际化资源文件的组件

@Beanpublic MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();if (StringUtils . hasText(this. basename)) {

// MessageSource 需要调用这个方法,设置国际化资源文件的基础名(去掉语言国家代码的)

messageSource . setBasenames(StringUtils. commaDelimitedlistToStringArray(StringUtils. trimAllwhitespace(this . basename)));}if (this.encoding !- null) {messageSource . setDef aultEncoding(this . encoding.name());}messageSource.setFallbackToSystemLocale(this. fallbackToSystemLocale);messageSource.setCacheSeconds(this . cacheSeconds);messageSource.setAlwaysUseMessageFormat(this . alwaysUseMessageFormat);return messageSource;}

指定国际化组件路径:在配置文件中

spring.messages.basename=i18n.login

修改 login.html 文件:

<1abel class="sr-on1y" th:text="#{login .username }">UsernamePassword<1abe1> [[#{login.remember}]]

Sign in

用此代码来实现获取国际化各个模块:#{login.remember}

访问页面查看效果

效果:根据浏览器语言设置的信息切换了国际化;

在默认设置搜索 file en 修改全局默认配置 utf-8

修改完成后对乱码的代码进行修改,最后在登录页面中浏览器设置切换中英文也能查看效果。

实现点击按钮切换中英文原理:

国际化 Locale (区域信息对象) ; LocaleResolver (获取区域信息对象) ;

自动化配置的国际化语言信息:

@Bean@ConditionalonMissingBean@ConditionalOnroperty(prefix . "spring.mvc", name . "1ocale")public LocaleResolver localeResolver() {if(this.mvcProperties.getLocaleResolver()=WebMvcProperties .LocaleResolver .FIXED) {return new FixedLocaleResolver(this. mvcProperties . getLocale());}AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();localeResolver . setDefaultLocale(this . mvcProperties. getLocale());return localeResolver;}

Spring boot 也配置了区域化解析信息

默认的就是根据请求头带来的区域信息获取 Locale 进行国际化

按 F12 可以发现每请求一个就会在请求头看见语言编码,这是浏览器中设置的,可以进行修改。

3、去页面获取国际化的值;

再 ider 中进行对编码的设置

4、点击链接切换国际化

在 login.html 中修改以下内容实现中英文切换自由

相关文章
|
4月前
|
JavaScript Java 关系型数据库
平面设计课程在线学习|基于SSM+vue的平面设计课程在线学习平台系统的设计与实现(源码+数据库+文档)
平面设计课程在线学习|基于SSM+vue的平面设计课程在线学习平台系统的设计与实现(源码+数据库+文档)
60 0
|
11月前
|
存储 算法 搜索推荐
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(下)
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(下)
56 0
|
11月前
|
存储 算法 C++
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(上)
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(上)
43 0
|
3月前
|
自然语言处理 图形学
【Unity实战】实现强大通用易扩展的对话系统(附项目源码)
【Unity实战】实现强大通用易扩展的对话系统(附项目源码)(2023/12/26补充更新)
33 0
|
3月前
|
XML Java 关系型数据库
SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)
SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)
22 0
|
Kubernetes Perl 容器
【k8s 系列】k8s 学习二十五,如何升级应用 ?
在之前的分享中,我们知道一个程序如何放到容器中,一个镜像如何生成 pod, pod 的创建,运行,管理,删除过程,挂载等等
102 0
|
消息中间件 存储 Dubbo
项目技术介绍|学习笔记
快速学习项目技术介绍
项目技术介绍|学习笔记
|
JavaScript 开发者 数据格式
组件案例-发表评论功能的实现|学习笔记
快速学习组件案例-发表评论功能的实现
144 0
组件案例-发表评论功能的实现|学习笔记
|
Java API
JavaWeb开发——软件国际化(动态元素国际化)
JavaWeb开发——软件国际化(动态元素国际化)
220 0
|
定位技术
网站风格及框架规划
做网站重要的一环是页面制作,而页面制作的第一步就是确定网站风格及框架规划。
1138 0