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

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

开发者学堂课程【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 中修改以下内容实现中英文切换自由

相关文章
|
7月前
|
XML 自然语言处理 数据格式
Qt国际化翻译解决方案
Qt国际化翻译解决方案
153 0
|
3月前
|
Java Linux Android开发
深入理解Android开发:从基础到高级
【9月更文挑战第17天】本文将深入探讨Android开发的各个方面,包括应用开发、操作系统等。我们将通过代码示例来展示如何创建一个简单的Android应用,并解释其背后的原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
3月前
|
Linux 开发工具 git
Linux内核开发流程指南 - 7. 高级主题【ChatGPT】
Linux内核开发流程指南 - 7. 高级主题【ChatGPT】
|
6月前
|
存储 安全 物联网
技术经验分享:FIDO标准简介
技术经验分享:FIDO标准简介
|
6月前
|
XML Java 关系型数据库
SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)
SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)
35 0
|
前端开发 JavaScript 测试技术
前端国际化辅助工具——自动替换中文并翻译
前端国际化辅助工具——自动替换中文并翻译
662 0
|
设计模式 算法 Java
【Java设计模式 学习目标及大纲】高质量代码的标准及实现路径
【Java设计模式 学习目标及大纲】高质量代码的标准及实现路径
108 0
|
前端开发 安全 Java
案例所用技术介绍|学习笔记
快速学习案例所用技术介绍
案例所用技术介绍|学习笔记
|
消息中间件 存储 Dubbo
项目技术介绍|学习笔记
快速学习项目技术介绍
项目技术介绍|学习笔记