Struts2-I18n国际化

本文介绍了如何在Struts2框架中实现Java的国际化功能I18N,包括创建资源文件、设置不同层级的使用以及在界面上、Action-validation.xml和Action中获取和设定参数的方法。

 

关于Struts2-I18n国际化
一、什么是I18N?

:人们常把I18N作为“国际化”的简称,其来源是英文单词 internationalization的首末字符i和n。18为中间的字符数。 

二、为什么要是用国际化?

:互联网是一个多元文化的集结地,它让信息变的全球化。但是每一个国家的语言却是不同的,那么如何使得在某个国家使用某种语言的版面了?那就是使用I18N.

三、Java中对I18N的支持。

:我们知道Java在底层就提供了国家化的操作,在JDK帮助文档中我们可以找到有关于使用I18N的几个重要的类

 1.Locale 获取使用场地等信息

 2.ResourceBundle 获取资源文件包

3.MessageFormat  进行参数的设定

 

public class TestI18n {
	/*
	 * JDK 自带的I18N功能的实现
	 * */
	public static void main(String[] args) {
		Locale.setDefault(Locale.US);
	/*
         Locale []   locales= Locale.getAvailableLocales(); 
          //获取已经安装的语言文件信息				
	for (Locale locale : locales) {System.out.println(locale.getDisplayCountry()+" : 
        "+locale.getCountry());
	 //获取国家 和 国家名的缩写 如:   中国:CN  美国:US
		}
	System.out.println("--------------------------------------------------------");
					
	for (Locale locale : locales) {
	System.out.println(locale.getDisplayLanguage()+" : "+locale.getLanguage());
	//获取语言 和 语言缩写   如:中文:zn  英文:en
	}
         */
					
     ResourceBundle bundle = ResourceBundle.getBundle("message", Locale.CHINA);
//资源文件对象 getBundle方法的参数为 资源文件basename 和  指定的语言表示(也就是使用什么语言)
//message 为配置文件的前缀 这里有两种语言文件:message_zh_CN.properties, message_en_US.properties
	String value=bundle.getString("hello");
//hello为配置文件中的key
		  /*
		hello=hello={0}\u4E2D\u56FD\u4F60\u597D\u5440!
		*/
					
	String format = MessageFormat.format(value, new String[]{"北京"});
	//使用MessageFormat的format方法进行参数的设定value为需要设定的
        //数据new String[]{"北京"} 则是设定的参数

	String values="我是{0},来自{1},很高兴认识你{2}";				
	String strs=MessageFormat.format(values, new String []{"天蓝","地球","外星人"});
		System.out.println(strs);
		System.out.println(format);
	}
}
 

 

     四、Struts2中的国际化。

:首先我们要知道的是,Struts2的国际化功能是基于Java中的上述操作.我们主要需要了解的是如何在不同的阶层设

置I18N的使用。

1.关于I18N的资源文件的创建

a):I18N的资源文件的名称规范为:BaseName + (_language) +(_country)+(.properties)

BaseName:可以随便起

language:对应设定的语言

country: 对应语言的国家  如:

message_zh_CN.properties (中文资源包) 

message_en_US.properties(英文资源包)

 

b):资源文件的创建有四种方式。

1.全局的资源文件

:创建在Src的根目录下 资源文件的basename 由struts.xml文件中的<Constant

name="struts.custom.i18n.resources" value="message"> value值指定

如:

message_zh_CN.properties (中文资源包) 

message_en_US.properties(英文资源包)

2.包级别的资源文件

:创建该包目录下资源文件的basename 为固定写法

如:

package_zh_CN.properties (中文资源包) 

package_en_US.properties(英文资源包)

3.类级别的资源文件

:创建在包目录下资源文件的basename为类的名称

如:

RigesterAction_zh_CN.properties(中文资源包)

RigesterAction_en_US.properties(英文资源包)

4.临时的资源文件

:创建在Src的根目录下basename 主要是给<s:i18n>标签提供数据信息的

如:

temp_zh_CN.properties(中文资源包)

temp_en_US.properties(英文资源包)

c):关于资源文件的优先级

文件的优先级是有小及大的:程序为先访问 类级别的资源包 -> 包级别的资源包 -> 全局的资源文件包

d):关于取出资源文件中的信息

1.界面上的取值和设定参数的方法

:使用struts2的标签库

第一种:<S:text name="指定资源文件中的key"/>

第二中:<s:i18n name="指定资源文件的basename名称">

<s:text name="指定资源文件中的key">

<s:param>对应资源文件的{0}</s:param>

<s:param>对应资源文件的{1}</s:param>//依次类推

</s:text>

</s:i18n>

2.Action-validation.xml中的取值的方法:

<message key="指定资源文件中的key"></message>

3.Action中的取值和传入参数的方法

调用ActionSupport的getTest()方法获取信息

this.getTest("指定资源文件中的key","对应参数的集合或数组");

如:

资源文件的信息为:hello=wellcome to ,{1}

this.getTest("hello",new String []{"天蓝"});

结果为:wellcome to 天蓝

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值