【Struts2】(9)国际化

一. I18N国际化

I18N国际化是这样子的:
public class I18N {

	public static void main(String[] args) {
		Locale locale = new Locale(args[0], args[1]);

		// 日期国际化
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL,
				locale);
		System.out.println(dateFormat.format(date));

		// 数字国际化
		int a = 1245512312;
		NumberFormat numberFormat = NumberFormat.getNumberInstance(locale);
		System.out.println(numberFormat.format(a));
		
		// 货币国际化
		NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(locale);
		System.out.println(currencyFormat.format(a));
		
		// 字符国际化
		ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale);
		System.out.println(bundle.getString("hello"));
	}
}
日期国际化、数字国际化和货币国际化都使用的是几个Format类来实现的,在实例化的时候传入locale本地对象。在做字符国际化的时候需要在src目录下建立几个文件,这里我创建了一个i18n_zh_CN.properties和i18n_en_US.properties文件:
hello=\u4F60\u597D
hello=GutenTag
都只有简单的一个键值对的配置,这样子在启动的时候传入zh CH或者en US就可以实现国际化了。
注意的是这里MyEclipse帮我们自动吧中文转换成了ASCII进行了保存,所以并没有显示成中文。

二. struts2的国际化

我们在i18n_zh_CN中配置好需要国际化的字串:
hello=\u4F60\u597D
my.title=\u767B\u9646\u9875\u9762
my.username=\u7528\u6237\u540D
my.password=\u5BC6\u7801
实际上就是登陆页面、用户名、密码等几个字符串,然后创建一个action继承ActionSupport:
public class GoToLoginAction extends ActionSupport {

	public String execute() {
		return "success";
	}
}
写一个方法跳转到jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>





<s:text name="my.title"/>




	



${param.id}
这里使用了两种方式调用国际化字符:
一个是另一个是,两种方式都是可以的。
对了要使用国际化,需要在struts配置文件中加入一个常量:
	
告诉它我们要使用我们定义的i18n文件来国际化。
注意:
1. 配置文件位置
关于国际化的配置文件我们上面的是放在src的根目录的,所以需要在配置文件中添加constant常量,当我们放在包里面的时候就不需要配置这个常量了。
当我们放在action的包内时,需要修改国际化文件配置的名字为:package.properties或者Action的名字.properties。
2. 当我们不用继承ActionSupport的Action时,就只能使用来显示内容了。

三. 多语言切换

既然都写好了国际化的支持,那么我们怎么才能再语言之前切换呢?
修改jsp文件,这里写了两种切换页面语言的方式:

	第一种方法:
	中文	English
	第二种方法:
	
		zh_CN
	
	
		en_US
	
	中文	English
	



${param.id}

点击切换就可以了。


你可能感兴趣的:(Java,Struts2,struts2.0,框架)