首页 > 数据库 > Oracle > EBS-数据多语言转换开发
|
Oracle EBS 11.5.10.2
本文介绍Form中数据多语言转换的基础
Oracle EBS系统是一个多语言的系统,能够实现不同语言环境登录显示不同的语言信息,系统中多语言涉及到两个主要的方面:
多语言是什么东西呢?简单的说就是一个东西用多种语言来描述。
本系列文章主要描述怎么样客户化一个表单来支持数据的多语言,界面的多语言不在讨论范围
一、功能一憋
下面以应用开发员职责中定义Form的界面作为实例,让我们来看看数据多语言转换是什么样的?
当以英文环境登录系统时,可以查询出如上图的数据,我们注意看 User Form Name 和 Description 两个列。可以看到其中的数据都是英文定义的,如第一行叫FNDADDSQ的Form,User Form Name 为:Register Sequence 当以中文环境登录系统时,可以查询出如上图的数据,我们注意看 用户表单名和 说明 两个列。可以看到其中的数据都是中文定义的,如第一行叫FNDADDSQ的表单,用户表单名为:注册序列
二、数据分类
要弄清楚数据多语言转换,需要先将数据进行分类,由于要实现多语言转换的对象是:数据。这就意味着可能多语言的量会比较大,就拿上面我们定义表单的例子来说,里面包括了字段:表单、应用、用户表单名和说明总共4个字段,那我们首先要清楚,哪些字段需要实现多语言转换,即哪些数据需要不同的环境下看到不同语言的表现? 因此数据会分为3类:
三、实现步骤
如何去开发一个具备多语言转换定义的界面我们后面在描述,我们先来看看如何使用一个多语言转换定义的界面。
当录入一条数据的时候,通过工具栏中的一个小地球仪的图标来定义多语言信息,当表单中实现了数据多语言功能后,光标进入相应的数据块,小地球仪就会亮起,否则失效
点击小地球仪,会弹出数据多语言转换窗口,如下图,注意看转换窗口的行和列: 行(Row):Oracle EBS系统安装了多少个语言,这个转换窗口就会显示出多少行,如我的环境安装了中文和英文,所以有两行 列(Column):这个例子中有两列,分别是用户表单名和说明,这个说明开发表单时候设置的有哪些列是可以进行多语言转换的,因此理论上面可以有无限个列
如定义FNDADDSQ表单的时候,点击小地球仪之后显示如下的多语言转换界面: 第一行是英文对应的用户表单名和说明 第二行是中文对应的用户表单名和说明 所以上面中文和英文两个环境下,FNDADDSQ表单的用户表单名和说明显示是不同的
对于FNDADDSQ表单的用户表单名和说明,每种语言有一行对应的数据。
后续将针对多语言后台表结构的设计来解析数据多语言转换的功能。
一、多语言转换表关系
Oracle EBS中如果需要实现数据多语言的转换功能,对应的后台表结构的设计有一定的规则 ,包括的数据库对象:
表关系图:
所以根据上面数据库对象的命名 规则,只要在Oracle EBS的数据库系统中看到_TL, _VL对象出现的时候,它肯定是实现了多语言数据转换功能。 多语言视图同时连接基本信息表和多语言表,并限制多语言表中的语言字段等于环境变量中取得的语言代码,从而达到多语言视图取出的数据是当前语言环境下的信息。
二、多语言转换表示例
继续使用 数据多语言转换开发(1) 中的例子,查看其中的表结构
1) 表单基本信息表
SQL> desc fnd_form;
2) 表单多语言转换表,包括多语言的两列:user_form_name, description
SQL> desc fnd_form_tl;
3) 表单多语言视图
SQL> desc fnd_form_vl;
4) 表单多语言视图声明定义
SELECT b.ROWID row_id,
后面介绍如何开发一个多语言转换的Form。
本文介绍数据多语言转换表单的实现。
本文只介绍和多语言转换有关的Form开发步骤,关于常规Form开发的步骤请查看 Oracle Applications 开发手册
一、Form触发器
1)在需要使用多语言项所在的BLOCK内增加触发器:PRE-BLOCK
触发器中添加如下的代码启用Translation按钮: app_special.enable(‘TRANSLATE’);
2)在需要进行多语言转换的所在的BLOCK内增加触发器:TRANSLATION 加入如下PROCEDURE进行多语言字段的初始
FND_MULTILINGUAL.EDIT(‘FND_FORM’, 参数描述: FND_FORM:多语言数据块的名称 FORM_ID,APPLICATION_ID:多语言表的主键列,多个列用逗号(,)隔开 USER_FORM_NAME,DESCRIPTION:需要进行多语言转换的列 *FND:ML_USER_FORM_NAME, *FND:ML_DESCRIPTION: 多语言转换窗口中每列对应的标题(如下图),为了实现它也多语言,因此这里是消息字典,*FND是消息字典对应的应用,ML_USER_FORM_NAME是消息的名称
3)而外增加如下触发器及代码 Form Level POST-FORMS-COMMIT fnd_multilingual.save; Block Level POST-INSERT fnd_multilingual.key; WHEN-CLEAR-BLOCK fnd_multilingual.free_block; WHEN-REMOVE-RECORD fnd_multilingual.free_record;
二、Table Handler
当定义一条多语言的数据时,同时会往基本信息表和多语言表插入数据。往基本信息插入一条数据,多语言表插入多条数据,系统安装了多少种语言环境,就会插入多少条,因此对于多语言转换的插入语句的写法有一点特别的地方,为了处理的方便,一般都将增删改的操作写到数据库的存储过程中。
1) 插入(Insert) 在Form块的on-insert触发器中,要同时往基本信息表和多语言表(_TL)插入数据,因此insert的存储过程中需要根据Oracle EBS系统安装的语言来决定往多语言表中插入多少条记录。通过FND_LANGUAGES表来判断。 伪代码: INSERT INTO FND_FORM ;
INSERT INTO FND_FORM_TL 2) 更新(Update) 更新的时候需要同时更新基本信息表和多语言表;在on-lock触发器中,需要同时对基本信息表和多语言表锁定。 伪代码: UPDATE FND_FORM
UPDATE FND_FORM_TL 3) 删除(Delete) 删除的时候也需要同时删除基本信息和多语言信息。 伪代码: DELETE FND_FORM DELETE FND_FORM_TL 代码请查看数据库包fnd_form_pkg |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16551397/viewspace-1386758/ ,如需转载,请注明出处,否则将追究法律责任。