Chinaunix首页 | 论坛 | 博客
  • 博客访问: 561530
  • 博文数量: 49
  • 博客积分: 8051
  • 博客等级: 中将
  • 技术积分: 1846
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-27 12:05
文章分类

全部博文(49)

文章存档

2011年(1)

2010年(4)

2009年(18)

2008年(26)

我的朋友

分类: Oracle

2008-05-13 14:37:32

Internationalization (i18n)是如何在OA Framework中实现的

1、        概要
国际化在大部分的应用软件中都需要考虑的问题,特别是多语言支持。国际化在Oracle EBS中已经进行了很好的实现,所以在实施Oracle EBS中,大多数情况并不会考虑国际化的问题。当然,一般情况下,国内客户大部分没有国际化的需求,所以大部分的客户化开发是基于本地语言的,都不会考虑这方面的问题。但对于国际化大公司来讲,国际化就显得非常重要,让一个美国人只能看到中文界面,那是绝对不能够被接受的。所以,面对国际化的企业,Oracle EBS的国际化需要进一步的解释。此文档主要解释如何在OA Framework中实现国际化,以及OA Framework中使用到的相关技术。其他技术如何实现国际化,比如Form、Report,请参阅the Oracle Applications Globalization Guide。

2、        名词解释
Internationalization (i18n)
国际化(Internationalization)是设计一个适用于多种语言和地区的应用程序的过程。适用于多种语言和地区的含义是当使用不同语言及处于不同的地区的用户在使用这个应用程序时,应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息。国际化简称为i18n,因为有18个字母在国际化的英文单词的字母i和n之间。一个国际化的程序通常是被存储在本地化的数据中,并且能被程序正确的动态的使用。支持新的语言时,不需要修改程序,不需要重新编译。 文化差异的数据,比如日期和货币,必须根据拥护的语言和习惯显示不同的格式。

Localization (l10n)
本地化(Localization)是指通过增加本地描述的构件(locale-specific components )和文字翻译工作来使应用程序适应于不同的语言和地区的过程。本地化被简称为l10n,应为有10个字母在本地化的英文单词的字母l和n之间。通常本地化最耗时的工作应该是文字翻译。本地化工作者们要根据地区的具体需求来为日期、数字和通货等数据建立新的格式。

National Language Support (NLS)
在Oracle应用程序中,多语言支持(NLS)是指在任何一种所支持的语言中均可以运用的应用实例的能力,包括指定的时区、数字和日期格式。为了支持某一种语言,只需要翻译应用软件的客户端组件就可以了(比如用户界面,快速编码表,在线文档等)。这些翻译可以通过多语言补丁完成。

Multiple Language Support (MLS)
在Oracle应用程序中,多语言支持(MLS)是指在一个应用实例中支持多种语言。MLS提供多语言支持的架构,NLS提供某一种语言的翻译。

NLS_LANG
很多用户产品都会乃至NLS_LANG这个环境变量来指定本地的功能。NLS_LANG 包括三个组件,以语言_地区.字符集的形式组合起来。例如:
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1.
设置NLS_LANG这个参数是需要和数据的字符集相对应。

Meta Data Service (MDS)
MDS提供了存储/展现页面定义的服务。元数据(Meta Data)是指存储在数据表中的符号的组件字典,例如文本域、按钮。当页面进行展现时,这些组件组合在一起,就变成了用户见到的网页。这些数据存储在以JDR开头的表中,例如JDR_ATTRIBUTES, JDR_ATTRIBUTES_TRANS, JDR_COMPONENTS & JDR_PATHS。所有的页面定义,包括pages/regions/components都页面结构为基础存储在这些表中。

Attribute Sets
属性集是在实现用户界面时用到的一个组件,它的好处在于可以使设置页面属性时(比如页面标题、文本提示等),一次定义,多次使用。此组件是OA Framework实现国际化的重要组件。可以参阅OA Framework Developer Guide -> Chapter 3 ->Creating Attribute Sets

3、        实现方法
Oracle Application Framework Development
步骤:
1)        首先在设置页面所有组件的文本信息为英文,包括window title, title, prompt等。例如:设置文本输入框TaskName的prompt为“Task Name”;
2)        当OAF的页面运用import工具导入到MDS中后,使用xliffextract工具将此页面的多语言支持导出为xlf文件,具体使用见示例。
3)        修改此xlf文件,将此行的属性target-language修改为target-language=" zh-CN"
4)        在… 中的内容为翻译区域,页面上所有的提示类的文本信息均在此。
5)        对于每一个trans-unit属性,都有Task Name Task Name属性,修改为Task Name 任务名称
6)        另存此文件为“原文件名_zh_CN.xlf”,使用xliffimport工具将此文件导入到MDS中。使用方法见示例。

以上步骤可以完成单一页面的国际化功能,但存在这样一个问题,如果有多个页面都用到TaskName这个组件,那样,我需要在这些页面中都进行翻译,这是一个大问题;这样做还会导致另外一个问题的出现,如果TaskName的翻译修改了,比如修改为“任务”,那么我需要在出现TaskName的文件中都进行修改,这显示不是好方法。解决以上问题的办法是使用Attribute Sets,将上述步骤修改为:
1)        为页面上的每一个组件定义Attribute Sets,例如属性集名称定义为TaskName.xml。创建Attribute Sets的方法见Developer Guide。
2)        首先在设置页面所有组件的文本信息时,设置组件的Attribute Sets属性。例如:设置文本输入框TaskName的Attribute Sets为"属性集名称.TaskName ";
3)        将TaskName.xml用import工具导入到MDS中后,使用xliffextract工具将此文件的多语言支持导出为xlf文件,具体使用见示例。
4)        修改此xlf文件,将此行的属性target-language修改为target-language=" zh-CN"
5)        在…中的内容为翻译区域,页面上所有的提示类的文本信息均在此。
6)        对于每一个trans-unit属性,都有Task Name Task Name属性,修改为Task Name 任务名称
7)        另存此文件为“原文件名_zh_CN.xlf”,使用xliffimport工具将此文件导入到MDS中。使用方法见示例。

Oracle Application Framework Personalization
参阅OA Framework Personalization Guide -> Chapter 4: Deploying Personalizations

4、        示例
xliffimport和xliffextract这二个工具类似于import工具,可以在JDEV_HOME/jdevbin/jdev/bin目录下找到这二个工具的帮助。

xliffimport示例
客户端部署方法:(服务器端部署方法需要修改文件路径)
xliffimport E:/jdev9i/jdevhome/jdev/myprojects/com/oracle/apps/fnd/Task/webui/TaskName_zh_CN.xlf -username apps -password apps -dbconnection "(description = (address_list = (address = (community = tcp.world)(protocol = tcp)(host = 192.168.10.230)(port = 1521)))(connect_data = (sid = VIS)))"

xliffextract示例
客户端部署方法:(服务器端部署方法需要修改文件路径)
xliffextract /com/oracle/apps/fnd/Task/webui/TaskName -mmd_dir "E:11i_OAFjdevhomejdevmyhtmlOA_HTMLjrad" -username apps -password apps -dbconnection "(description = (address_list = (address = (community = tcp.world)(protocol = tcp)(host = 192.168.10.230)(port = 1521)))(connect_data = (sid = VIS)))" -includeSubpackages -xliff_dir E:jdev9i/jdevhome/jdev/myprojects/mds/ -root E:jdev9i/jdevhome/jdev/myprojects/ -source db

阅读(1043) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~