struts2-国际化实现中英文切换
- struts2 国际化的原理
- struts2 的实现
- struts2 国际化的原理(1)
国际化资源文件:用不同国家的语言描述相同的信息,并放在各自对应的.properties属性文件中,
程序根据运行时环境决定加载哪个文件。
国际化主要通过以下类完成:
java.utilLocale:对应一个特定的国家/区域、语言环境。
java.util.ResourceBundle:用于加载一个资源包。
118nInterceptor:struts2所提供的国际化拦截器,负责处理LocaIe相关信息
国际化流程程序得到当前运行环境的国家/区域、语言环境并存放于LocaIe,ResourceBundIe根据LocaIe中信息自动搜索对应的国际化资源文件并加载。当某个Action被执行前,118n1nterceptor负责检测Locale相关信息来寻找对应的国际化资源
struts2默认的国际化资源文件:org.apache.Struts2.struts-messages.properties:主要包括token/tokensession拦截器使用时发生重复提交的提示信息、文件上传出错提示信息等。
com.opensmphony.xwork2.xwork-messages.properties:Action执行过程中夷生错误提示信息和类型转换出错信息等。
“struts2没有提供中文国际资源文件,需要自己添加全局国际化资源文件。聚另外i18n拦截器对“.action"之外的请求失效,因为struts2中拦截器只能拦截“.action’结尾的请求。
- struts2 的实现
- 编写及配置国际化的源文件
- 国际化源文件的命名规则
- 国际化的编写
- 国际化的配置
- 调用国际化
- 编写及配置国际化的源文件
-
- 国际化源文件的命名规则
为了实现国际化,必须先提供程序所需的资源文件(key-value),如: username=用户名
资源文件的命名可以有以下三种形式:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,用户可以自由定义。而
language和country都不是可以随便定义的,必须是Java所支持的语言和国家。
如:
创建中文和英语国际化,那么资源文件名称为:
globalMessages_zh_CN.properties
globalMessages_en_US.properties
其中globalMessages为基本名。
- 国际化源文件的命名规则
-
- 国际化的编写(key-val)
创建这俩个文件,需要放在WEB-INF/classse下或src下
- 国际化的编写(key-val)
(1)globalMessages_zh_CN.properties
uname=\u7528\u6237\u540D
upwd=\u5BC6\u7801
logbtn=\u767B\u5F55
(2)globalMessages_en_US.properties
uname=Logon
upwd=password
logbtn=Login On
-
- 国际化的配置
struts2国际化的配置有俩种方法
- 国际化的配置
- struts2.xml中直接设置
< constant name=“struts.custom.i18n.resources” value=“globalMessages”>< /constant>
PS:这里的value是之前globalMessages_en_US.properties的前面一节 - struts.properties中也能设置
struts.custom.i18n.resources=globalMessages
-
- 调用国际化
如:
<s:text name=“uname”></s:text>
<s:text name=“upwd”></s:text>
当然还有更多的方法,多的就不说了,直接甩个连接吧:点这么么哒
- 调用国际化
咳咳 最后还有一个疑点到底怎么转换对吧…我这说一下步骤
我们需要跳往后台去才会经过struts2的拦截器这样才会获得数据(可直接使用a标签进行跳转,跳往一个没有任何处理的action并且返回到当前页面,
例如:
< a href=“text_textRequestMethod.action?request_locale=zh_CN”>中文< /a>)跳往什么语言只要改后面的参数即可