【IT168 技术文档】
1 基本信息
摘要:跨语言的应用程序中,都会涉及到国际化的问题,本文详细介绍国际化的一般解决方案,并提供实例供参考。
作者:陈春
2 Java EE的国际化解决方案
当某个企业应用需要面对不同国家或地区的用户时,就必须考虑国际化问题。最终效果就是让不同国家的用户在界面上看到的文字内容是自己的语言,并且可以选择其他语言来显示。对于Java EE应用程序开发者来说,其主要工作包括提示信息国际化、编码国际化两个方面。详解如下:
2.1 提示信息国际化
这部分工作主要就是把程序中字符串常量提取到统一的资源信息文件中。针对不同的程序代码,又有不同的处理方式。
2.1.1 java code的处理
首先需提供一个公共国际化资源接口类,server启动时会根据具体环境加载不同的资源。假设国际化资源类为Message,接口为getString(String key),那么java code的形式变化如下: 新代码: 资源文件(message_zh_CN.properties)内容:
原代码:
BIZ_NAME=业务逻辑
1、 jsp代码的处理
1) html部分
页面中表单的提示信息和表格标题等内容,一般都是直接写在html代码中。根据jsp规范,此时做国际化有两种途径。第一种是直接利用<%=%>调java表达式来输出国际化信息,第二种是通过自定义标签来输出。例如:
原代码:
第一种实现:
<table> <tr> <td><%=WebPageMessage.getString(“CUST_NAME”)%> </td> <td><input type=”text” name=”cust_name”> </td> </tr> </table>
第二种实现:
<table> <tr> <td><i18n:message key=”CUST_NAME”/> </td> <td><input type=”text” name=”cust_name”> </td> </tr> </table>
资源文件(message_zh_CN.properties)内容:
CUST_NAME=客户姓名
2) 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=未知