【Struts2】(9)国际化
2015-12-17 14:06
441 查看
一. 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>
点击切换就可以了。
相关文章推荐
- Spring中如何配置Hibernate事务
- Eclipse Java注释模板设置详解
- Mybatis3源码分析(03)-加载Configuration-ResultMap说明
- Java获取当前路径
- Java并发编程:线程池的使用
- ubuntu下安装java和eclipse
- 菜鸟猿大战Java之集合框架系列(一)
- 【Java】Java中文分词器Ansj的使用
- Java并行编程(parallel programming)
- Java:对象的强、软、弱和虚引用
- 开源 Java 中文分词器 Ansj 作者孙健专访
- struts2常用标签之if/else
- 九、WorldWindJava2.0加载影像问题
- java连接数据库(properties配置文件)
- Java多线程中sleep,wait区别
- Java 枚举
- Spring的@Autowired实践感知
- Kettle变量和自定义java代码的实例应用
- Java编写Struts2案例--【用户登录】
- java中的数组