【Struts2】(9)国际化

10 篇文章 0 订阅

一. 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"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

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

</head>

<body>
	<form action="/web/test/login.action" method="post">
		<s:property value="getText('my.username')"/><input name="username" /><br />
		<s:property value="getText('my.password')"/><input name="password" type="password" /><br />
		<input type="submit" name="method:login"	value="登陆" />
	</form>
	<br />${param.id}
	
</body>
</html>
这里使用了两种方式调用国际化字符:
一个是<s:text name="my.title"/>另一个是<s:property value="getText('my.username')" />,两种方式都是可以的。
对了要使用国际化,需要在struts配置文件中加入一个常量:
	<constant name="struts.custom.i18n.resources" value="i18n"/>
告诉它我们要使用我们定义的i18n文件来国际化。
注意:
1. 配置文件位置
关于国际化的配置文件我们上面的是放在src的根目录的,所以需要在配置文件中添加constant常量,当我们放在包里面的时候就不需要配置这个常量了。
当我们放在action的包内时,需要修改国际化文件配置的名字为:package.properties或者Action的名字.properties。
2. 当我们不用继承ActionSupport的Action时,就只能使用<s:text name="my.title"/>来显示内容了。

三. 多语言切换

既然都写好了国际化的支持,那么我们怎么才能再语言之前切换呢?
修改jsp文件,这里写了两种切换页面语言的方式:
<body>
	第一种方法:
	<a href="/web/test/gotologin.action?request_locale=zh_CN">中文</a>	<a href="/web/test/gotologin.action?request_locale=en_US">English</a>
	第二种方法:
	<s:url namespace="/test" action="gotologin" var="lan_zh">
		<s:param name="request_locale">zh_CN</s:param>
	</s:url>
	<s:url namespace="/test" action="gotologin" var="lan_en">
		<s:param name="request_locale">en_US</s:param>
	</s:url>
	<a href='<s:property value="#lan_zh"/>'>中文</a>	<a href='<s:property value="#lan_en"/>'>English</a>
	<form action="/web/test/login.action" method="post">
		<s:property value="getText('my.username')"/><input name="username" /><br />
		<s:property value="getText('my.password')"/><input name="password" type="password" /><br />
		<input type="submit" name="method:login"	value="登陆" />
	</form>
	<br />${param.id}
	
</body>

点击切换就可以了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值