IBM® WebSphere® Portal 支持不同地区的 30 多种语言。多个国际组织通过多语种 Web 站点提供在不同国家或地区使用的门户。在这种情况下,门户以用户的首选语言同时向大量用户提供门户视图。WebSphere 门户支持以不同语言显示的 portlet。如果不支持所请求的语言,门户将尝试匹配用户的语言首选项。
本文解释如何使用 IBM® Rational® Application Developer for WebSphere Software v9 开发多语种 portlet(您可以遵循本文中的步骤,使用 v7.5 或更高版本)。本文中的下载部分提供了使用 ResourceBundle 合并多语种 portlet 的代码片段。
为了遵循本文中的步骤,您需要:
使用 ResourceBundle 开发多语种 portlet 很容易。 ListResourceBundle 是 ResourceBundle 的一个抽象子类,它在方便易用的列表中管理区域设置的资源。ListResourceBundle 是在 java.util 库 ( java.util.ListResourceBundle ) 中提供的。
第一步是在 Rational Application Developer 中创建一个新的 portlet 项目。
图 1. 创建新的 portlet 项目
点击查看大图
关闭 [x]
图 2. 在 "Select a wizard" 窗口中选择 portlet 项目
点击查看大图
关闭 [x]
Multilingual
,指定 portlet 的特定详情,比如 Portlet name、Target runtime 等,然后单击 Finish 。 图 3. 创建名为 Multilingual 的 Portlet 项目
点击查看大图
关闭 [x]
每一个特定的语言类都需要一个包。为了创建包,在 Rational Application Developer 中:
图 4. 创建新包
点击查看大图
关闭 [x]
New Java Package 窗口将打开。
图 5. 创建一个名为 com.teg.resources 的新包
点击查看大图
关闭 [x]
接下来,您将为默认语言创建一个类。在 Rational Application Developer 中创建此新类:右键单击 package name > New > Class ,如图 6 所示。
图 6. 在 com.teg.resources 包中创建一个新类
点击查看大图
关闭 [x]
Java Class窗口将打开。在 Name 文本字段中键入 MyProviderBundle,如图 7 所示,然后单击 Finish 。
图 7. 创建名为 MyProviderBundle 的新类
点击查看大图
关闭 [x]
现在,复制并粘贴 清单 1 中的代码段到 MyProviderBundle.java。
清单 1. MyProviderBundle.java
package com.teg.resources; import java.util.ListResourceBundle; public class MyProviderBundle extends ListResourceBundle { public static String WELCOME_MSG = "MyPortletHelloMessage"; public static String INFO_MSG = "MyPortletInfoMessage"; public Object[][] getContents() { return contents; } static private final Object[][] contents = { {WELCOME_MSG, "Hello"}, {INFO_MSG, "This is demo for Multilingual Portlet using WebSphere Portal"} }; }
注意:
MyProviderBundle类必须扩展 ListResourceBundle (java.util.ListResourceBundle) ,如清单 1 所示。
使用变量将语言特定的内容存储在 MyProviderBundle 类中。变量 WELCOME_MSG 及 INFO_MSG 存储要显示在门户上的内容,如图 8 所示。
图 8. 默认语言的资源包类
点击查看大图
关闭 [x]
为了创建语言特定的资源包,您需要创建一个类(就像前面所做的那样)。将该类命名为 MyProviderBundle_<lang> ,其中 <lang> 代表语言。
图 9 显示了为法语创建的语言特定的资源包 MyProviderBundle_fr 类。对应的法语内容被分配给变量 WELCOME_MSG 及 INFO_MSG 。
图 9. 语言特定的资源包类
点击查看大图
关闭 [x]
清单 2 中提供了 MyProviderBundle_fr.java 的代码。
清单 2. MyProviderBundle_fr.java
package com.teg.resources; import java.util.ListResourceBundle; public class MyProviderBundle_fr extends ListResourceBundle { public Object[][] getContents() { return contents; } static private final Object[][] contents = { {MyProviderBundle.WELCOME_MSG, "Bonjour"}, {MyProviderBundle.INFO_MSG, "C'estdémo pour portletmultilingueutilisant WebSphere Portal."} }; }
您也可以为 portlet 需要支持的所有区域设置创建 ResourceBundle 类。在 portlet.xml 中定义了 WebSphere Portal 支持的默认区域设置。
Rational Application Developer 中 portlet 项目的结构如图 10 所示。展开 com.teg.resources 包,查看已创建的资源包。
图 10. Rational Application Developer 中的 Portlet 包结构
在创建 ResourceBundle 之后 , 您将需要使用在类文件中声明的变量,在 JSP( MultilingualView.jsp )中显示语言特定的内容。如图 11 所示。
renderRequestobject获得 JSP 中的区域设置。区域设置基于下列内容(按顺序):
例如 :如果在配置时将西班牙语选择为语言,然后,即使浏览器发送法语作为语言,门户也将返回西班牙语的内容。这是因为用户首选项具有比浏览器(接受语言)更高的优先级。
图 11. 在 JSP 中使用资源包
点击查看大图
关闭 [x]
MultiLingualPortletView.jsp的源视图中的代码如图 3 所示。
清单 3. MultilingualPortletView.jsp
<%@page session="false" contentType="text/html" pageEncoding="ISO-8859-1" import="java.util.*,javax.portlet.*,com.teg.multilingual.*"%> <%@ tagliburi="http://java.sun.com/portlet_2_0" prefix="portlet"%> <portlet:defineObjects/> <DIV style="margin:6px"> <h1>MultiLingualPortlet</h1> <p> <% ResourceBundlerb = ResourceBundle.getBundle("com.teg.resources.MyProviderBundle", renderRequest.getLocale());%> <b><%= rb.getString(com.teg.resources.MyProviderBundle.WELCOME_MSG) %></b> <%= rb.getString(com.teg.resources.MyProviderBundle.INFO_MSG) %> </p> </DIV>
回页首
当 portlet 被部署在 WebSphere Portal 上并被添加到页面之后(对于不支持的语言和默认语言),内容以默认语言(在本例中为英语)出现在 portlet 上。
图 12. portlet 含默认语言的内容
在设置中,将浏览器或用户首选项的语言更改为法语,然后刷新页面。图 13 显示,portlet 显示了法语的内容。
图 13. 法语的门户内容
回页首
本文介绍了如何使用 IBM Rational Application Developer 来为 IBM WebSphere Portal 开发多语种 portlet。到目前为止,我已经发现, ResourceBundle 是构建多语种门户的最简单方法。
回页首
我想感谢 Tata Consultancy Services 的 IBM 社交商务品牌主管 Pankaj Bose 和高级开发人员 Sushree Puhan,他们在我编写这篇文章提供了指导和支持。
回页首
描述 | 名字 | 大小 |
---|---|---|
Archive file | MultiLingual.zip | 13KB |