struts是一个mvc框架,像java和其他java框架一样,struts可以轻松实现国际化;于是根据网上的资料,做了一个尝试,因为第一次做多语言程序,还是拐了很多弯路;但所幸,经过不断的尝试,终于成功的实现多语言版本的简单页面;
因为程序非常简单,所以在整个尝试过程中,全部使用手工编码,没有使用任何辅助工具;
1、 建立服务器
我使用tomcat4作为测试环境,建立过程(略);
2、 下载struts
可以到http://jakarta.apache.org/struts/index.html下载,下载后解压,把其中的.war文件拷贝到tomcat的webapps目录下,启动tomcat,如果http://localhost:8080/struts-example/ 运行没有问题,说明环境建立成功;这些.war文件在tomcat启动后会自动展开成文件,里面有源代码,可以作为源码研究;
3、 建立工程
在webapps目录下建立一个international文件夹,再在international目录下建立web-inf文件夹和web-inf/classes文件夹,这些都是一个jsp工程必须的;
4、 加了struts的类
在web-inf目录下建立一个lib子目录,把struts-example/web-inf/lib目录下将所有.jar文件拷贝到该目录下;这些文件是struts的控制类库和标签类库等;
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-fileupload.jar
commons-lang.jar
commons-logging.jar
commons-validator.jar
jakarta-oro.jar
struts.jar
5、 加入struts标签定义文件
从struts-example/web-inf目录下,把.tld文件拷贝到international的web-inf目录下,这些文件标签库的定义文件;
struts-bean.tld
struts-html.tld
struts-logic.tld
struts-nested.tld
struts-template.tld
struts-tiles.tld
6、 建立struts的config文件
建立struts的config文件的struts-config.xml,内容如下:
| <?xml version="1.0" encoding="iso-8859-1" ?> <!doctype struts-config public "-//apache software foundation//dtd struts configuration 1.1//en" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";> <struts-config> <message-resources parameter="resources.application"/> </struts-config> |
message-resources标签是指message资源的文件,就是我们存放我们的多种语言的提示信息的文件,resources.application表是classes目录下的resources目录用来存放资源文件,默认语言文件名为application.properties,中文为application_zh_cn.properties,其他语言类似;
| <?xml version="1.0" encoding="iso-8859-1"?> <!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.2//en" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";> <web-app> <display-name>test international</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.actionservlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/web-inf/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/web-inf/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/web-inf/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/web-inf/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/web-inf/struts-nested.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/web-inf/struts-tiles.tld</taglib-location> </taglib> </web-app> |
上面的web.xml定义了struts的控制类、config文件和标签,因为比较简单,所以不做解释;
8、 建立资源文件
在classes目录下,建立一个resources目录,用来存放资源文件;
先建立默认的资源文件application.properties和英文(美国)的资源文件application_en_us.properties,内容为:
# -- international test --
test.title=international application test
test.body=this is a international application test
先建立这两个文件,中文的等下一步建立
9、建立jsp文件
在international目录下,建立index.jsp文件,内容为:
| <%@ page contenttype="text/html;charset=utf-8" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <html:html locale="true"> <head> <title><bean:message key="test.title"/></title> <html:base/> </head> <body bgcolor="white"> <p><bean:message key="test.body"/></p> </body> </html:html> |
在这里<html:html locale="true">表示使用浏览器默认的地区和语言;<bean:message key="test.title"/>的意思是取对应资源文件里的test.title项目的内容; 启动tomcat,在浏览器里输入http://localhost:8080/international/,查看效果,如果浏览器标题显示international application test,页面里显示this is a international application test则说明你的程序成功了;下面只要增加资源文件,你就可以在多种语言的系统里看了;
10、 建立简体中文的资源文件
在resources目录下建立一个application_cn.properties,输入内容:
| # -- international test -- test.title=国际化程序测试 test.body=这是一个国际化程序测试例子 |
因为java的国际化是通过unicode码来实现,所以要把代码转为unicode码;在dos下,转到resources目录,执行:
| native2ascii application_cn.properties application_zh_cn.properties |
转换后的application_zh_cn.properties文件内容为:
# -- international test --
test.title=/u56fd/u9645/u5316/u7a0b/u5e8f/u6d4b/u8bd5
test.body=/u8fd9/u662f/u4e00/u4e2a/u56fd/u9645/u5316/u7a0b/u5e8f/u6d4b/u8bd5/u4f8b/u5b50
这就是上面的中文的unicode码;
重新启动tomcat, 在浏览器里输入http://localhost:8080/international/,你看,标题和内容是不是变成中文了;
11、建立繁体中文的资源文件
在resources目录下建立一个application_tw.properties,输入内容:
# -- international test --
test.title=???h化程式?y??
test.body=?@是一?????h化程式?y??例子
因为java的国际化是通过unicode码来实现,所以要把代码转为unicode码;在dos下,转到resources目录,执行:
native2ascii application_tw.properties application_zh_tw.properties
转换后的application_zh_tw.properties文件内容为:
# -- international test --
test.title=/u570b/u969b/u5316/u7a0b/u5f0f/u6e2c/u8a66
test.body=/u9019/u662f/u4e00/u500b/u570b/u969b/u5316/u7a0b/u5f0f/u6e2c/u8a66/u4f8b/u5b50
这就是上面的繁体中文的unicode码;
12、 测试多语言
打开ie的“工具”->“internet选项”菜单,“常规”选项卡,点击其中的“语言”按钮,添加“英语(美国)-[en-us]”语言,将其他的语言删除,重新启动ie后,输入http://localhost:8080/international/index.jsp,你会发现内容已经变成英文;
用同样的方法,可以测试简体中文和繁体中文;
闽公网安备 35060202000074号