各位小伙伴
今天我们来分享的就是
项目的国际化
那么我们开始吧!
国际化的概念
在我们开发 javaWEB 项目的时候,项目可能涉及到在国外部署或者应用,也有可能会有国外的用户对项目进行访问 ,那么在这种项目中,为客户展现的页面或者操作的信息就需要使用不同的语言,这就是我们所说的项目国际化
( Internationalization 简称: i18n ).
国际化的原理
国际化的核心基础,就是我们在 http 请求的时候,在 request 里面存在一个locale 对象来标识用户浏览器的习惯语言,我们可以通过浏览器的语言设置来查看用户的浏览器习惯语言.
比如:
语言设置为简体中文 locale = zh_CN
语言设置为美式英文 locale = en_US
对于我们在控制台输出的信息 ,后台代码往前台页面输出的提示信息,页面显示信息,我们都可以用一个代号来标识,当我们需要根据不同语言显示的时候,我们将这个代号在不同语言中对应的值显示.
map_CN 对象 Map
map_US 对象 Map
springMVC 国际化的实现
制作国际化资源文件(properties)
需要显示多少种语言,就必须提前制作好每个语言对应的国际化资源文件
国际化资源文件的有个统一的命名规范:baseName+locale标识
比如:
i18n_zh_CN
代表中文资源文件
i18n_en_US
代表英文文资源文件
现在我们就把来做两个简单的资源文件
注意:
汉字在properties文件中是以Unicode编码的形式存在的
国际化资源文件制作好以后,在 springmvc 的配置文件中进行国际化配置
引入spring标签,将需要国际化的信息用标签显示
这是我们的在 java 后台获取对应 key 的 value 值,jsp 页面会通过 spring 提供国际化标签来转会 key 对应的 value
下面我们来测试一下效果(设置浏览器语言的过程就不演示了),浏览器语言这是中文(简体),就是显示汉语界面,设置英语(美式).就是出现英语.
当然在实际的项目中,我们看到一些网站上会有一些按钮,点击就可以切换网页的显示语言.下面我们来做一下.
切换网站语言
需求:
不需要更改浏览器的语言设置,在页面设置一个链接来更改展现的语言
根据上面的学习,我们知道国际化主要是根据 http 请求里面的 locale 对象来获取浏览器设置的语言,再通过页面来设置页面使用哪种语言,我们需要设置一个全局变量 (session) 来保存我们链接跳转需要的语言
每个 handler 都要获取 session 里面的语言设置 ---- 拦截器
SpringMVC 实现此种需求的原理
首先:
springmvc 默认了一个国际化解析器 (LocaleResolve) ,当我们从 http 请求的头文件中获取 locale 信息,就调用这个默认的解析起来解析国际化资源
对于此种需求,springmvc 支持装备一个拦截器,来动态的修改 locale 信息,然后在拦截器里面将 locale 信息存入 session
在页面添加两个链接附带 locale 信息.
回顾一下操作步骤:
配置sessionLocaleReslover
配置这个拦截器 ,拦截带有locale信息的参数
在 url 请求中添加 locale 信息,处理对应的国际化信息请求
其他不变,jsp 和 java 的显示内容步骤不变
看一下页面效果:
好了,我们的项目国际化就完成了,总体来说,国际化就是一个体力活,你想支持几种语言你就做几个 properties 文件,当然你要是针对几种语言开发几套项目,我只能说土豪,我们做朋友吧!
友情提示
难度不算太大
但是实现起来
需要很大的耐心
有时间就给自己的项目
做个国际化吧!
拜拜!