struts是一个MVC框架像Java和其他Java框架一样struts可以轻松实现国际化于是根据网上的资料做了一个尝试因为第一次做多语言程序还是拐了很多弯路但所幸经过不断的尝试终于成功的实现多语言版本的简单页面 因为程序非常简单所以在整个尝试过程中全部使用手工编码没有使用任何辅助工具
建立服务器
我使用Tomcat作为测试环境建立过程(略);
下载struts
可以到下载下载后解压把其中的war文件拷贝到Tomcat的webapps目录下启动Tomcat如//localhost:/strutsexample/ 运行没有问题说明环境建立成功这些war文件在Tomcat启动后会自动展开成文件里面有源代码可以作为源码研究
建立工程
在webapps目录下建立一个international文件夹再在international目录下建立WEBINF文件夹和WEBINF/classes文件夹这些都是一个JSP工程必须的
加了struts的类
在WEBINF目录下建立一个lib子目录把strutsexample\WEBINF\lib目录下将所有jar文件拷贝到该目录下这些文件是struts的控制类库和标签类库等
commonsbeanutilsjar
commonscollectionsjar
commonsdigesterjar
commonsfileuploadjar
commonslangjar
commonsloggingjar
commonsvalidatorjar
jakartaorojar
strutsjar
加入struts标签定义文件
从strutsexample\WEBINF目录下把TLD文件拷贝到international的WEBINF目录下这些文件标签库的定义文件
strutsbeantld
strutshtmltld
strutslogictld
strutsnestedtld
strutstemplatetld
strutstilestld
建立struts的config文件
建立struts的config文件的strutsconfigxml内容如下
<?xml version= encoding=ISO ?>
<!DOCTYPE strutsconfig PUBLIC
//Apache Software Foundation//DTD Struts Configuration //EN config__dtd;>
<strutsconfig>
<messageresources parameter=resourcesapplication/>
</strutsconfig>
messageresources标签是指message资源的文件就是我们存放我们的多种语言的提示信息的文件resourcesapplication表是classes目录下的resources目录用来存放资源文件默认语言文件名为applicationproperties中文为application_zh_CNproperties其他语言类似
建立webxml文件
<?xml version= encoding=ISO?>
<!DOCTYPE webapp
PUBLIC //Sun Microsystems Inc//DTD Web Application //EN
app__dtd;>
<webapp>
<displayname>test international</displayname>
<servlet>
<servletname>action</servletname>
<servletclass>orgapachestrutsactionActionServlet</servletclass>
<initparam>
<paramname>config</paramname>
<paramvalue>/WEBINF/strutsconfigxml</paramvalue>
</initparam>
<initparam>
<paramname>debug</paramname>
<paramvalue></paramvalue>
</initparam>
<initparam>
<paramname>detail</paramname>
<paramvalue></paramvalue>
</initparam>
<loadonstartup></loadonstartup>
</servlet>
<servletmapping>
<servletname>action</servletname>
<urlpattern>*do</urlpattern>
</servletmapping>
<welcomefilelist>
<welcomefile>indexjsp</welcomefile>
</welcomefilelist>
<taglib>
<tagliburi>/tags/strutsbean</tagliburi>
<tagliblocation>/WEBINF/strutsbeantld</tagliblocation>
</taglib>
<taglib>
<tagliburi>/tags/strutshtml</tagliburi>
<tagliblocation>/WEBINF/strutshtmltld</tagliblocation>
</taglib>
<taglib>
<tagliburi>/tags/strutslogic</tagliburi>
<tagliblocation>/WEBINF/strutslogictld</tagliblocation>
</taglib>
<taglib>
<tagliburi>/tags/strutsnested</tagliburi>
<tagliblocation>/WEBINF/strutsnestedtld</tagliblocation>
</taglib>
<taglib>
<tagliburi>/tags/strutstiles</tagliburi>
<tagliblocation>/WEBINF/strutstilestld</tagliblocation>
</taglib>
</webapp>
上面的webxml定义了struts的控制类config文件和标签因为比较简单所以不做解释
建立资源文件
在classes目录下建立一个resources目录用来存放资源文件 先建立默认的资源文件applicationproperties和英文(美国)的资源文件application_en_USproperties内容为
# international test
testtitle=international application test
testbody=This is a international application test
先建立这两个文件中文的等下一步建立
建立jsp文件
在international目录下建立indexjsp文件内容为
<%@ page contentType=text/html;charset=UTF %>
<%@ taglib uri=/tags/strutsbean prefix=bean %>
<%@ taglib uri=/tags/strutshtml prefix=html %>
<%@ taglib uri=/tags/strutslogic prefix=logic %>
<html:html locale=true>
<head>
<title><bean:message key=testtitle/></title>
<html:base/>
</head>
<body bgcolor=white>
<p><bean:message key=testbody/></p>
</body>
</html:html>
在这里<html:html locale=true>表示使用浏览器默认的地区和语言<bean:message key=testtitle/>的意思是取对应资源文件里的testtitle项目的内容 启动Tomcat在浏览器里输//localhost:/international/查看效果如果浏览器标题显示international application test页面里显示This is a international application test则说明你的程序成功了下面只要增加资源文件你就可以在多种语言的系统里看了
建立简体中文的资源文件
在resources目录下建立一个application_cnproperties输入内容
# international test
testtitle=国际化程序测试
testbody=这是一个国际化程序测试例子
因为java的国际化是通过unicode码来实现所以要把代码转为unicode码在Dos下转到resources目录执行
nativeascii application_cnproperties application_zh_CNproperties
转换后的application_zh_CNproperties文件内容为
# international test
testtitle=\ufd\u\u\uab\uef\udb\ubd
testbody=\ufd\uf\ue\uea\ufd\u\u\uab\uef\udb\ubd\ufb\ub
这就是上面的中文的unicode码 重新启动Tomcat 在浏览器里输//localhost:/international/你看标题和内容是不是变成中文了
建立繁体中文的资源文件
在resources目录下建立一个application_twproperties输入内容
# international test
testtitle=???H化程式?y??
testbody=?@是一?????H化程式?y??例子
因为java的国际化是通过unicode码来实现所以要把代码转为unicode码在Dos下转到resources目录执行
nativeascii application_twproperties application_zh_TWproperties
转换后的application_zh_TWproperties文件内容为
# international test
testtitle=\ub\ub\u\uab\uff\uec\ua
testbody=\u\uf\ue\ub\ub\ub\u\uab\uff\uec\ua\ufb\ub
这就是上面的繁体中文的unicode码
测试多语言
打开IE的工具>Internet选项菜单常规选项卡点击其中的语言按钮添加英语(美国)[enus]语