知识大全 Java EE的国际化解决方案

Posted 语言

篇首语:业精于勤,荒于嬉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java EE的国际化解决方案相关的知识,希望对你有一定的参考价值。

Java EE的国际化解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  当某个企业应用需要面对不同国家或地区的用户时 就必须考虑国际化问题 最终效果就是让不同国家的用户在界面上看到的文字内容是自己的语言 并且可以选择其他语言来显示 对于Java EE应用程序开发者来说 其主要工作包括提示信息国际化 编码国际化两个方面

   提示信息国际化

  这部分工作主要就是把程序中字符串常量提取到统一的资源信息文件中 针对不同的程序代码 又有不同的处理方式

   java code的处理

  首先需提供一个公共国际化资源接口类 server启动时会根据具体环境加载不同的资源 假设国际化资源类为Message 接口为getString(String key) 那么java code的形式变化如下

  原代码

  String strLabel = 业务逻辑

  新代码

  String strLabel = Message getString( BIZ_NAME ) 资源文件(message_zh_CN properties)内容 BIZ_NAME=业务逻辑

  ( )jsp代码的处理

   )部分

  页面中表单的提示信息和表格标题等内容 一般都是直接写在代码中 根据jsp规范 此时做国际化有两种途径 第一种是直接利用<%=%>调java表达式来输出国际化信息 第二种是通过自定义标签来输出 例如

  原代码

  

  

  <table> <tr> <td>客户姓名 </td> <td><input type= text name= cust_name > </td> </tr> </table> 

  第一种实现

  

  

  <table> <tr> <td><%=WebPageMessage getString( CUST_NAME )%> </td> <td><input type= text name= cust_name > </td> </tr> </table>

  第二种实现

  

  <table> <tr> <td><i n:message key= CUST_NAME /> </td> <td><input type= text name= cust_name > </td> </tr> </table>

  资源文件(message_zh_CN properties)内容

  CUST_NAME=客户姓名

   )jsp tag部分

  有时候 jsp tag的属性值也是和具体语言相关的字符串 此时需要该属性支持java expression 如不支持 可修改<rtexprvalue>false</rtexprvalue>为<rtexprvalue>true</rtexprvalue> 例如

  原代码

  <dict select businessType= SEX nullLabel= 未知 />

  新代码

  <dict select businessType= SEX nullLabel= <%=WebPageMessage getString( NULL )%> />资源文件(message_zh_CN properties)内容 NULL=未知

  ( )js css image部分

  对于这三种元素 需要根据不同的语言环境加载不同的资源文件 我们可以在jsp对应的目录下建立一个resources目录 然后在下面按地区语言名建立文件夹本 分别保存前语言对应的js css image资源 为了实现此目的 可以把以前的引用方式 改成jsp tag来引用原资源文件 例如

  Html引用

  <SCRIPT SRC= /resources/scripts/message js LANGUAGE= javascript ></SCRIPT> <LINK HREF= /resources /css/style css REL= stylesheet TYPE= text/css /> <IMG SRC= /resources/images/title gif WIDTH= HEIGHT= BORDER= ALT= title >

  Jsp tag引用

  <i n javascript src= /resources/scripts/message js /> <i n css /> <i n image src= /resources/images/title gif width= height= border= alt= title />

  假如当前浏览器环境为zh_CN 那么上述tag生成的代码如下

  <script language= javascript > var Message= getString function() return eval( this + arguments[ ]) </script> <SCRIPT SRC= /resources/zh_CN/scripts/message js LANGUAGE= javascript ></SCRIPT> <LINK HREF= /resources/zh_CN/css/style css REL= stylesheet TYPE= text/css /> <IMG SRC= /resources/zh_CN/images/title gif WIDTH= HEIGHT= BORDER= ALT= title >

  值得注意的是 对于js资源引用需要插入一段javascript代码 对应的国际化资源内容如下

  Message calendar_JANUARY= 一月 Message calendar_FEBRUARY= 二月 Message calendar_MARCH= 三月 Message calendar_APRIL= 四月 Message calendar_MAY= 五月 Message calendar_JUNE= 六月 Message calendar_JULY= 七月 Message calendar_AUGUST= 八月 Message calendar_SEPTEMBER= 九月 Message calendar_OCTOBER= 十月 Message calendar_NOVEMBER= 十一月 Message calendar_DECEMBER= 十二月

  国际化时需作如下替换

  原代码

  var mon = 一月

  新代码

  var mon = Message getString( calendar_JANUARY )

   编码国际化

   服务器配置

  服务器端配置主要包括两方面 其一要指定环境语言 其二要指定字符集编码

   环境语言

  一般服务器的JVM缺省语言和操作系统平台一致 但也可以为JVM指定特定的缺省语言 具体配置 例如 Duser language=zh Duser region=CN

   字符集编码

  一般情况下 一种语言会对应一种或多种字符集编码 例如中文可以用GB 编码来显示 日文可以用Shift JIS编码来显示 一旦遇到客户端浏览器设置的是GB 编码 而页面上有日文或韩文的内容 就不能正确显示了 假如采用UTF 编码方式就不会出现这种情况了 因为UTF 编码几乎被所有的操作系统平台支持 并且包含了世界上绝大多数语言

  为统一编码 我们需要在JVM参数 浏览器请求 Web Server响应三个方面进行配置 具体如下

  a JVM参数

   Dfile encoding=UTF 针对EOS还需指定 Dxml encoding=UTF

  b 浏览器请求

  如果Web Serve支持jsp 规范 我们可以直接在WEB INF目录下的web xml中指定编码方式 如

  <jsp config> <jsp property group> <url pattern>* jsp</url pattern> <page encoding>UTF </page encoding> </jsp property group> </jsp config>

  设置完毕 还需检查jsp 页面中的字符显示设置是不是UTF 或者直接把页面显示字符设置删除 例如

  <%@ page language= java contentType= text/ charset=UTF pageEncoding= UTF %> <META equiv= Content Type content= text/ charset=UTF >

  c Web Server响应

  如果是jsp 则需指定<% request setCharacterEncoding( UTF ) %>

  如果是servlet 则需调用 HttpServletRequest setCharacterEncoding( UTF )

  这两条语句均要在放在getParameterValue() getParameterValues()语句之前

   文件编码

cha138/Article/program/Java/hx/201311/26277

相关参考

知识大全 XML在Java EE中的应用

XML在JavaEE中的应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要本文从JavaE

知识大全 Flex与Java EE深度结合(一)

Flex与JavaEE深度结合(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这篇文章的前

知识大全 将Flex集成到Java EE应用程序的最佳实践

将Flex集成到JavaEE应用程序的最佳实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  传

知识大全 Core Java Vs. J2EE- How big is the difference?

CoreJavaVs.J2EE-Howbigisthedifference?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 J2EE WEB-Tomcat5.5.9中文问题解决方案

J2EEWEB-Tomcat5.5.9中文问题解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 struts中文问题和国际化问题的终极解决方案

  Java本身就支持多国语言编码不需要写任何程序可以很简单的实现秘诀就是两点    所有HTML/JSP页面全部采用UTF编码    客户端浏览器完全支持UTF编码    步骤  首先把所有的HTM

知识大全 结合Struts和Hibernate 谈J2EE数据表示

Java进阶:结合Struts和Hibernate谈J2EE数据表示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 Java数据库字符国际化

Java数据库字符国际化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库字符国际化是大家提

知识大全 Java程序的国际化和本地化介绍

Java程序的国际化和本地化介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文尝试用一个简

知识大全 Java 国际化和本地化 Toolkit 2.0(下)

Java国际化和本地化Toolkit2.0(下)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!