首页 > 代码库 > Struts2之国际化
Struts2之国际化
时间:2017-1-11 11:12
——国际化
Struts2已经对国际化进行了封装,我们只需要根据其提供的API进行访问即可。
要使用国际化的Action必须继承ActionSupport。
1、什么是国际化
同一款软件可以为不同用户提供不同语言界面。
2、国际化原理
需要一个语言资源包,包含很多properties文件,每个properties文件针对一个国家或一种语言,通过Java程序根据来访者国家语言,自动读取不同的properties文件。
3、读取properties文件
ResourceBundle根据不同Locale(地域信息),读取不同国家的properties文件。
ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.US);
4、在Struts2中国际化properties文件如何定义
命名规范:基本名称_语言(小写)_国家(大写).properties
例如:
messages_zh_CN.properties
messages_en_US.properties
1)全局
文件可以放在项目的任何位置。
需要通过一个常量来声明。
在default.properties文件中有一行定义常量:(默认是被注释的)
# struts.custom.i18n.resources=testmessages,testmessages2
在struts.xml文件中声明:
<!-- 声明一个全局的国际化文件 -->
以上路径表示properties文件在src目录下,如果在包中,需要写包名:
value="http://www.mamicode.com/com.wyc.i18n.message"
2)局部
* 针对Action类:
> 与Action类在同一包下
> 名称:ActionClassName.properties
> 这个配置文件只对当前Action有效
* 针对package下所有Action
> 当多个Action需要使用同一个国际化信息,可以使用该方法,该方法对包中所有Action有效。
> 命名:package.properties
> 位置:在指定的包中
* jsp页面临时使用某一个properties文件
> 声明一个properties文件
> 在JSP页面中导入Struts2标签库
> 使用标签:<s:i18n name="包名.资源文件名"></s:i18n>
5、Struts2中国际化可以在哪些位置可以使用
1)在Action类中使用
2)在配置文件中使用
validation.xml文件
3)在JSP页面中使用
6、怎样在Struts2中操作国际化
1)在Action类中使用
* 继承ActionSupport
* 通过getText(String key)方法就可以获取配置文件中对应名称的属性值。
示例代码:
public class I18nDemo1Action extends ActionSupport {
输出:hello world
2)在validation.xml文件中
* 在同包下创建一个package.properties文件(必须是package开头)
* 在<message key="属性名"/>标签中使用key来获取值。
示例代码:
3)在JSP页面中使用
可以使用<s:i18n name="包名.资源名"><s:text name="key"/></s:i18n>来指定从某一个资源文件中获取属性值。
如果没有使用<s:i18n>指定资源文件名,而是直接使用<s:text>来获取,会从全局配置文件中获取。
示例代码:
<s:i18n name="com.wyc.action.package">
7、在Struts2的国际化配置文件中使用动态文本
1)Action中怎样使用
* 在properties文件中配置
> msg=hello world {1} {0} // 0 1 表示数组下标
* 在Action类中使用
> System.out.println(this.getText("msg", new String[]{"zhangsan", "lisi"}));
2)JSP页面中怎样使用
* 在properties文件中配置
> msg=hello world {1} {0} // 0 1 表示数组下标
* 在JSP页面中使用
<s:i18n name="com.wyc.action.I18nDemo1Action">
页面中会输出:hello world 张三 王五
——总结
1、如何定义配置文件
* 局部
* 全局
2、在哪里使用
* Action
* JSP
* 校验配置文件
3、怎么使用
* Action类继承ActionSupport
> 使用getText()方法获取。
* 使用struts2标签
> <s:i18n>
* 在配置文件中:
> <message key="">
4、怎样处理动态文本
Struts2之国际化