收藏 分销(赏)

用java语言开发企业级应用中多国语言解决方案.doc

上传人:仙人****88 文档编号:9410407 上传时间:2025-03-25 格式:DOC 页数:10 大小:532.50KB
下载 相关 举报
用java语言开发企业级应用中多国语言解决方案.doc_第1页
第1页 / 共10页
用java语言开发企业级应用中多国语言解决方案.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
用java语言开发企业级应用中的多国语言解决方案 宋兆辉 国之网(青岛)软件有限公司经理 摘要:本文主要论述了在Web环境下如何用Java语言编程解决程序的多国语言问题。 关键字:java 多国语言 解决方案 随着经济全球化的发展,产生了众多的跨国公司,而Java语言的出现以及网络通讯技术的飞速发展,使企业仅购买一套基于web的企业级应用软件(比如说:OA系统,ERP系统、CRM等),通过网络就能满足整个集团共同使用该软件成为可能。既减少了软件费用,又缩短了信息延迟,提高了企业运作效率。但因为应用系统是面向多个国家,多种语言的,所以在设计软件时就不得不解决国际化(internationalization)问题,国际化的程序应支持多国语言,不同格式的日期、时间、货币和其它值,还有操作界面的风格、界面个性化定制等问题.,本文着重论述多国语言的解决方案: Java语言是一种面向对象的语言,所以可以生成一个国际化的软件包,使由系统自动根据区域及语言设置的属性进行判断成为可能。 解决方案主要有两种: 一是利用Java本身提供用于解决国际化问题的软件包当中的ResourceBundle及其子类,处理在Java类中或是property文件中定义的参数;二是自定义一个类进行存取,把相应参数放在数据库或是属性文件中。 一、 利用Java类包: 1、根据系统默认的语言设置读取参数值的类Resource: package i18n.article; import java.io.*; import java.util.Enumeration; import java.util.Hashtable; import java.util.Locale; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; /** * <p>Title:多国语言的后台实现类 </p> * <p>Description: 根据属性文件及区域与语言设置,得到对应的语言</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: Timer Corporation</p> * @author:宋兆辉 * @version 1.0 */ public class Resource { private static final String HEAD_FILE = "ATTR"; //属性文件名的前缀 private static final String LAST_FILE=".properties"; //属性文件名的后缀 private static final String FILE_PATH="c://"; //定义属性文件存放的目录 public Resource() { } /*以下是根据传入的属性文件中的"键",而得到与区域与语言设置相对应的"值"*/ public synchronized String srcStr(String disStr) { String ret = ""; try { Locale locale = Locale.getDefault(); //获取系统的区域与语言默认设置 System.out.println(""); String baseName = new StringBuffer() .append(HEAD_FILE).append("_").append(locale.toString()) .append(LAST_FILE).toString(); //根据local属性,前缀以及后缀生成文件名 String fileName = new StringBuffer(FILE_PATH).append(baseName) .toString(); //获取文件的完整路径 InputStream is = new FileInputStream(fileName); //生成文件输入流 PropertyResourceBundle pr = new PropertyResourceBundle(is); //根据输入流构造PropertyResourceBundle的实例 ret = pr.getString(disStr); if(locale.equals(Locale.CHINA)){ ret = new String(ret.getBytes("ISO-8859-1"),"GB2312"); } //如果是要显示中文,则要进行内码的转换 is.close(); return ret; } catch (Exception e) { e.printStackTrace(); return disStr; } } } 2、对应的properties文件:ATTR.properties和ATTR_zh_CN.properties (1)ATTR_en_US.properties: LoginName=login name Password=password Login=login LoginTime=loginTime LogOff=logout ChineseVersion=English Version MainPage=home SoftWare=softWare Hardware=Hardware YourLocationMainPage=YourLocationMainPage MyCalendar=MyCalendar MyMails=MyMails R&D=R&D Forum=Forum DeveloperProcess=DeveloperProcess TechnologyCommunion=TechnologyCommunion (2)ATTR_zh_CN.properties: LoginName=用户 Password=密码 Login=登陆 LoginTime=登陆时间 LogOff=注销登陆 ChineseVersion=中文版 MainPage=首页 SoftWare=软件 Hardware=硬件 YourLocationMainPage=当前位置:首页 MyCalendar=我的日程 MyMails=我的邮件 R&D=研发区 Forum=讨论区 DeveloperProcess=开发进程 TechnologyCommunion=技术交流 3、对应的jsp文件: 本例中有3个jsp页面: (1)login.jsp:(登陆页面) 图1-登陆页面_中文 图2—登陆页面_英文 <%@ page contentType="text/html; charset=GB2312" %> <HTML> <HEAD> <TITLE></TITLE> <link href="css/style.css" rel="stylesheet" type="text/css"> <script language = javascript> function focusIt() { window.document.login.loginName.focus(); } </script> </HEAD> <jsp:useBean id="resource" scope="application" class="i18n.article.Resource"/> <BODY onload="javascript:focusIt();" bgcolor="#ffffff"> <form name="login" method="post" action="main.jsp"> <table border=0 cellpadding=0 cellspacing=0 align=center> <tr> <td height="150"></td></tr> <tr> <td width=262><img alt="" border=0 src="images/cover_r1_c1.jpg"></td> <td>&nbsp;</td> <td> <table border=0 cellpadding=1 cellspacing=1> <tr> <td> <p align=right><%=resource.srcStr("LoginName")%></p></td> <td><input type=text name="loginName" ID=Text1></td></tr> <tr> <td> <p align=right><%=resource.srcStr("Password")%></p></td> <td><input type=password name="password" ID=Password1></td></tr> <tr> <td>&nbsp;</td> <td align=center> <input class="button" type=submit value=" <%=resource.srcStr("Login")%> " ID=Submit1></td></tr> </table> </td></tr> <tr> <td colspan=3><img alt="" border=0 src="images/cover_r2_c1.jpg"></td></tr> <tr> <td colspan=3><img alt="" border=0 src="images/cover_r3_c1.jpg"></td></tr> <tr> <td colspan=3 height=20>&nbsp;</td> </tr> <tr> <td colspan=3 align=center><font color="#c0c0c0">Best Viewed In IE5.0 Or Up ,1024x768</font></td> </tr> <tr> <td colspan=3><hr size=1 width="100%" color="#c0c0c0"></td> </tr> <tr> <td colspan=3 align=center>&copy; 2003 Corporation. All rights reserved.</td> </tr> </table> </form> </BODY> </HTML> 图3-主页面_中文 图3主页面_英文 (2)main.jsp:(主页面左边及上边部分) %@ page contentType="text/html; charset=GB2312" %> <jsp:useBean id="resource" scope="application" class="i18n.article.Resource"/> <HTML> <HEAD> <TITLE></TITLE> <META NAME="GENERATOR" Content="Microsoft Visual Studio"> <META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8"> <LINK rel="stylesheet" href="css/style.css" type="text/css"> </HEAD> <BODY topMargin=2 leftMargin=2 bgcolor="#ffffff"> <TABLE WIDTH="100%" HEIGHT="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0"> <tr> <td height=80> <% String loginName = request.getParameter("loginName"); %> <table width=100% height=100% cellpadding=0 cellspacing=0 border=0> <tr> <td width=163 rowspan=3><img src="images/system_logo.jpg" border=0></td> <td width=30 rowspan=3><img src="images/logo_linked_corner.gif" border=0></td> <td width=140><img src="images/logo_extended_bar.jpg" border=0></td> <td height=25 bgcolor="#95ADD3" align=right class="P1"> <%=resource.srcStr("LoginTime")%><%=new java.util.Date().toLocaleString()%> &nbsp;&nbsp; <%=resource.srcStr("LoginName")%><%=loginName%> &nbsp;&nbsp; <img src="images/logout.gif" align="absMiddle" border=0> <a href="login.jsp"><%=resource.srcStr("LogOff")%></a> <img src="images/row_ender.jpg" align="absMiddle" border=0></td> </tr> <tr><td height=30 colspan=2><p>&nbsp; <a href="#"><%=resource.srcStr("MainPage")%></a> | &nbsp; <a href="#"><%=resource.srcStr("SoftWare")%></a> | &nbsp; <a href="#"><%=resource.srcStr("Hardware")%></a> | </p></td></tr> <tr><td height=25 colspan=2<%=resource.srcStr("YourLocationMainPage")%>></td></tr> </table> </td> </tr> <tr> <td> <table width=100% height=100% cellpadding=0 cellspacing=0 border=0> <tr> <td width=165 valign=top> <table width=100% cellpadding=0 cellspacing=0 border=0> <tr><td colspan=2><img src="images/left_menu_top.jpg" border=0></td></tr> <tr><td width=35 align=left><img src="images/left_menu_colbar.jpg" border=0></td> <td width=130 align=left valign=top> <table width=100% cellpadding=0 cellspacing=0 border=0> <tr><td style="cursor:hand;"><p><%=resource.srcStr("MyCalendar")%></p></td></tr> <tr><td><hr size=1 width=100% color="#C6FF00"></td></tr> <tr><td style="cursor:hand;"><p><%=resource.srcStr("MyMails")%></p></td></tr> <tr><td><hr size=1 width=100% color="#C6FF00"></td></tr> <tr><td style="cursor:hand;"><p><%=resource.srcStr("DeveloperProcess")%></p></td></tr> <tr><td><hr size=1 width=100% color="#C6FF00"></td></tr> <tr><td style="cursor:hand;"><p><%=resource.srcStr("TechnologyCommunion")%></p></td></tr> <tr><td><hr size=1 width=100% color="#C6FF00"></td></tr> <tr><td style="cursor:hand;"><p><%=resource.srcStr("Forum")%></p></td></tr> <tr><td><hr size=1 width=100% color="#C6FF00"></td></tr> <tr><td style="cursor:hand;"><p><%=resource.srcStr("R&D")%></p></td></tr> <tr><td><hr size=1 width=100% color="#C6FF00"></td></tr> </table> </td> </tr> </table> </td> <td><IFRAME frameBorder=0 id=main name=main scrolling=auto src="version.jsp" style="HEIGHT: 100%; VISIBILITY: inherit; WIDTH: 100%; Z-INDEX: 1"></IFRAME></td> </tr> </table> </td> </tr> <tr> <td height=50 valign=top> <table width=100% cellpadding=0 cellspacing=0 border=0> <tr><td align=center><hr size=1 width=80% color="#95ADD3"></td></tr> <tr><td align=center>©2003 Corporation. All rights reserved.</td></tr> </table> </td> </tr> </TABLE> </BODY> </HTML> (3)version.jsp:(主页面的中间部分) <%@ page contentType="text/html; charset=GBK" %> <jsp:useBean id="resource" scope="application" class="i18n.article.Resource"/> <HTML> <HEAD> <TITLE></TITLE> <META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8"> </HEAD> <BODY leftMargin="0" topMargin="0"> <table width="100%" height="100%" cellpadding=0 cellspacing=0 border=0> <tr> <td align=center valign=middle colspan=2> <table align="center" border="0" cellspacing="3" cellpadding="5" style="filter:dropshadow(color=gray,offx=5,offy=5,positive=1);"> <tr> <td width=400 height=100 bgcolor="#CBD3EA" align="center" style="border: 1px #0A246A solid;"> <p><font color="#5c6bac" style="font-size:30px;"><b><%=resource.srcStr("ChineseVersion")%></b></font></p> </td> </tr> </table> </td> </tr> <tr> <td width=50% valign=top align=center>&nbsp;</td> <td width=50% height=155 align=center><img src="images/internationalization.jpg"></td> </tr> </table> </BODY> </HTML> 二、 利用自定义类: 利用自定义的类,可以存取放在属性文件或是数据库中的对应的语言文字,实现方式大致与上述方法相同,不过是添加一些对属性文件流或是数据库存取的方法,对应的jsp页面可以不做改动。在这里不再赘述. 注:以上程序在windows2000英文版及中文版,resin2.1.6上调式通过. 参考文献: 1.《Thinking In Java》 作者: Bruce Eckel 出版社: 机械工业出版社 2. 高级 Java 2 大学教程 Harvey M.Deitel,Paul J.Deitel,Sean E.Santry 出版社: 电子工业出版社 3. Java编程语言(影印版)作者: Ken Arnold 出版社: 中国电力出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服