Struts辅助开发工具RBManager

2008-02-23 09:49:15来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Struts console就不多说了一用即感觉到方便

下面是一篇摘自IBM中国的关于RBManager使用的文章

Jared Jackson
研究助理, IBM
2000 年 12 月

如今国际高科技市场形成了对全球应用和 Web 提交的内容的需求。随着越来越多的公司试图满足客户需要和国际化其产品和服务,出现了管理技术和资源的难题。本文中,Jared Jackson 讨论了国际化所有基于 Java 的技术的过程,并介绍了 Resource Bundle Manager,这是一种有助于管理开发和维护国际化技术的复杂性的工具。无论是查找代码以开始国际化项目的开发者,还是查找工具以使其小组能够更有效工作的项目经理,都可以在本文中找到他们想查找的东西。
国际化的重要性和困难
据称在五年之内,过半数的因特网用户将不会阅读英语,尽管当前在万维网上大多数信息和营销还没有其它语言版本。日益递增的国际化内容产生了非常显著的作用,为程序员提供了必需的工具和 API 以吸引全球的用户。由于意识到国际化开发进程实际上意味着创建本地化的集成框架,IBM 和 Sun 公司合作开发了国际化组件,它首先集成到 Java API 1.1 版中。

Java 平台上的国际化
Java 1.1 API 包括了 java.text 包和 java.util 包中包含的 ResourceBundle 类,它们与 Locale 类一起组成了 Java 平台上本地化的主干部分。资源束使用级联机制来提供最佳的译文支持,并使开发者的工作量和计算机的资源降到最低。在此方案中,开发者创建了为译文定义查找表的文件,并将编码添加到这些文件的名称中以指定文件的 locale。例如,如果开发者选择使用特性文件来表示查找表,则它们显示如下:

样本特性文件

# The Base Class File
# File Name:
sample.properties
theater = Theater
opera = Opera
orchestra = Orchestra

# English File
# File Name:
sample_en.properties

# British English File
# File Name:
sample_en_UK.properties
theater = Theatre


每个文件都根据 基类 '_' 编码 '.properties' 的约定来命名。本例中,将 基类命名成 sample 。第一个文件表示缺省译文,因此没有给出任何编码信息。该文件中的译文没有限定成任何 locale。附加到其它所有文件名的 编码由表示语言名称、国家和文件所属的 locale 变量的缩写组成。语言和国家缩写基于 ISO 标准,但只有少数 locale 变量有实际标准。为了更好地理解该过程,假设开发者尝试为一个将在美国和英国使用的程序创建资源文件。开发者必须创建一个基类文件 sample.properties ,和一个表示普通英语译文的文件 sample_en.properties 。假设基类文件包含美式英语的译文,那么开发者必须创建包含英式英语译文的文件 sample_en_UK.properties ,或创建一个包含使用欧元符号的英式英语译文的文件 sample_en_UK_EURO.properties 。

在这些资源文件中,以 # 或 ! 字符开头的行都是注释,将被忽略。其它所有行表示名称/值对,等号 (=) 左边是查找表名称,右边是相应的译文值。可在随后的代码示例中看到,Java 程序员可以指定 locale 并在资源束中检索该 locale 的适当译文。如果在文件中找不到与程序员指定的 locale 对应的查找表值,则资源束将不断向下展开编码链,直至找到译文。为了说明这点,假设开发者编写访问上述样本资源文件的代码,并且该代码在 en_UK locale 的上下文中查询 "orchestra" 的译文。API 的内部工作将检查 en_UK 文件,但不会查找资源。接着将检查并查找 en 文件,同样也将忽略资源。最后,将检查基类文件,并返回结果 "Orchestra"。如果程序要寻找 "theater" 的译文,那么将检查 en_UK 资源文件,并立即返回结果 "Theatre"。

该过程中,资源文件可以是空的,也可以是完全饱和的。基类文件必须包含所有查找表键。其它文件也可以与其祖辈大不相同,以利于完整地包括资源。其它 locale 编码可以与其祖辈稍有不同,并且它们的文件只需要全部资源的一小部分就可以正常运行。

资源文件和资源的指数级增长
管理少量文件,且每个资源文件只包含少量资源,这并不是件难事,而且可以通过任何基本文本编辑器来处理。然而,随着项目的增长,复杂程度也急剧上升。当一两个资源文件迅速增加到几个资源文件,并且每个资源文件都有自己的主管翻译时,这时应该怎么做。为了将资源添加到文件,开发者必须访问每个资源文件,确保还没有使用查找表名称,将键插入每个文件,然后以某种方式通知主管翻译:已做了更改,需要更新文件。这是个易出错且费时的过程。

IBM 的 Almaden 研究中心开发了 Resource Bundle Manager,又称作 RBManager,以解决这些问题,并节省开发的时间和费用。该应用程序管理创建和维护资源束的过程,并简化了本地化过程。RBManager 提供了一个直观的 GUI 应用程序,该应用程序可以跨平台工作,以消除国际化开发过程中经常发生的重复任务和错误。

本文的其余部分介绍开发国际化项目的过程,并特别演示了如何使用 RBManager 来增加可靠性和提高国际化开发的效率。首先,描述和显示了一般情况下必需使用资源束的代码。接着,描述了一些与开发者和翻译相关的 RBManager 特性。想要进一步了解 RBManager 功能的开发者可以免费从 IBM 的 alphaWorks 网站下载它。下载中包括了一份详细说明如何使用该工具的文档。

利用 Java 语言的 locale 友好的 API
Java 开发者将高兴地发现对基于 Java 的项目进行本地化是件很容易的事。方法是正确使用 Java 语言中内置的功能。也许本地化 Java 代码最简单的方法是创建一个公共静态类,该类使用 java.util 中的 ResourceBundle 和 Locale 类。请参阅 Translator 类样本代码,它是执行此操作的代码样本。

Translator 类样本代码显示了可以跨多个 locale 工作的 Translator 类必需的最简单的代码。我们不打算实例化这个类;因此对它的所有调用都是静态的。为检索译文,开发者可以对任何键调用 Translator.getTranslation() 方法。可以通过 set 方法更改当前 locale,而且可以扩展代码以提供 get 方法类确定当前定义了哪种 locale。缺省情况下,程序将在所使用的 Java 虚拟机的本机 locale 中运行。以下的示例显示了如何从应用程序中使用代码。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:浅谈java程序员面试

下一篇:Tomcat环境下配置oracle数据源的方法