引用:http://www.chong2.com
PB源码翻译工具集:TransTlk
玛瑞 1999
1 软件的国际化与本地化
“软件的国际化”(Internationalization,即i18n)是设计或转换已有程序以使其能在不同“地方”(Locale)使用的过程;“软件的本地化”(Localization,即l10n)是针对一个特定“地方”对程序资源进行定制的过程。
软件的地方特性包含:语言文字、日期/时间格式、界面表现风格、软件使用方式和多媒体应用形式等。
语言文字是主要的地方特性。语言文字有多种划分:单字节编码的和双字节编码的;罗马字符集的和非罗马字符集的;阿拉伯顺序的和非阿拉伯顺序的,等。
软件国际化的过程是:
1)确定“特性”集合(S_set,即Speciality Set)和“地方”集合(L_set,即Locale set)
2)建立不同的“ 地方特性”集合(LS_set,即Locale Speciality Set),组成软件的“国际化特性集合”(I_set,即Internationalization Set):
I_set = { LS_set | LS_set = { SL | SL = f ( S , L ) , S属于S_set,L属于L_set } }
3)用以下一种或多种方式设计/实现/发布软件产品:
(1)“编码时替换”,即:在设计/实现软件时对国际化方面不做过多考虑,当软件完成时,再将最终产品中的地方特性分别替换成不同地方版本的源码,分别编译/生成/发布不同地方版本的执行代码。
(2)“构造时联结”,即:软件引用封装地方特性的对象,它们可由操作系统、开发平台或开发者提供不同地方的实现版本,当编译/生成最终产品时,分别连接这些对象不同地方版本的实现以分别生成不同地方版本的执行代码,分别发布。
(3)“运行时选择”,即:软件元素的多种地方版本被同时实现/发布在同一可运行代码中,由用户或软件来选择该元素的不同地方版本。
易扩展性(即:使软件支持一个新地方的难易程度)是衡量软件在国际化方面设计和实现的重要质量因素。基于UNICODE(统一字符编码)的软件可以避免支持双字节编码语言时遇上的麻烦。
在特定环境下,一些未经国际化的软件亦可部分实现本地化,如:在线翻译工具对“语言敏感”代码的自动映射、操作系统对日期/时间格式的自动替换、标准系统调用提供的本地化窗口等。
对于开发工具/环境,地方化包括两个方面:
1)对应用开发者,工具/环境本身是否能表现某一地方特性
2)对应用使用者,开发者是否能利用工具/环境开发出表现某一地方特性的应用
2 TransTlk的简介
利用 TransTlk(Translation Toolkit),可以很容易地以“编码时替换”的方式在语言文字方面实现PB应用的国际化。在TransTlk中,语言文字特性被称为“短语”(phrase),其定义为:在应用程序运行时刻用户可以看到的字词或文本。
打开TransTlk界面,用户可以启动:短语提取工具(Phrase Extractor)、短语翻译工具(Phrase Translator)、项目翻译工具(Project Translator)、翻译数据库管理工具(Database Adminstration)、文本尺寸分析工具(Text Analyzer)。前三个是翻译工具,后两个是维护工具,这些工具不能同时被启动。参见图2-1。
用户利用短语提取工具标识出PB源码中的短语,利用短语翻译工具建立短语与“目标短语”(短语在目标语言中的表示)的映射,最后利用项目翻译工具将PB源码中的短语替换成目标短语。
短语、目标短语以及它们之间的映射都被保存在翻译数据库文件“Translat.db”中,用户可以在PB环境下或利用SYBASE Central直接维护这些数据,也可利用翻译数据库管理工具来导入外部数据。图2-2/A和图2-2/B显示了其中的表结构。
文本尺寸分析工具被用来检查和处理目标短语“溢出”(翻译后文本的尺寸超出了文本区域)的情况。
3 运用TransTlk实现PB应用的国际化
PB源码的翻译工作是分阶段实现的:
1)提取/准备阶段,利用短语提取工具(Phrase Extractor):
(1)在“Project Wizard”的引导下建立翻译项目(Translation Project)
(2)选择或添加目标语言,一个翻译项目可以包含对多种语言的翻译数据
(3)在源码库中选择翻译的对象(application,menu,window,... ...)
(4)通过定制“短语提取参数”的对话框,确定提取内容的类型,如:
A. 数据窗口中,计算表达式、保存的数据、数据验证的错误消息、标记(Tag)值、编码表(Code Table)的显示值、初始值、图形表达式
B. 菜单中,菜单项的文本、标记值、微帮助文本、工具条项的文本
C. 其它对象中,标记值、标题条、所有类型列表框的项、编辑控件的文本、图形表达式
D. 在脚本中,引号中的字串
E. 单字母;不在字母表中的符号
(5)执行自动提取功能,方式可以选择为:“提取所选内容”、“提取不同的/新的内容”或“重新提取”
(6)标识(Mark)需要翻译的短语。有一些被自动提取出的短语并不是翻译的内容,如:引号中的PB对象名、特定的函数参数、内部引用值等。
(7)将被标识后的短语数据存入翻译数据库、外部文件或短语报告中。
2)短语翻译阶段,利用短语翻译工具(Translator):
(1)选择翻译项目(由短语提取工具建立)
(2)选择要翻译的目标语言
(3)打开翻译数据库文件或导入外部文件,逐个翻译短语(可同时重新定义热键)
(4)将翻译后的数据存入原文件
3)项目翻译阶段,利用项目翻译工具(Project Translator):
(1)选择翻译项目
(2)选择要翻译的目标语言
(3)在源码库中选择翻译的对象(application,menu,window,... ...)
(4)定制“翻译参数”的对话框:
A. 选择文本尺寸溢出时是否报告错误
B. 定义宽度溢出因子和高度溢出因子
C. 选择翻译后是否完全重构PB应用
(5)执行项目的自动翻译。翻译是在原PB库的一份拷贝上进行的,其存放于以目标语言为名的子目录下。
图2-3给出一个短语提取的画面,图2-4给出一个短语翻译的画面。
运用TransTlk进行自动翻译的好处在于:
1)在窗口、菜单、控件、事件、函数中手工搜寻短语的过程是繁杂而易漏的,工具减少了用户的工作量,同时保证短语被完整地提取出。
2)用户在数据表中翻译短语,既可看到单个短语的完整应用语境,亦可对比多个短语的应用和翻译情况。
3)用户可以选择对象、选择属性地执行各个阶段,使工作更有灵活性和目的性。
4)每个阶段相对独立,可随时反复,这样,翻译工作可以是增量式地进行,即翻译工作可与编码工作同步进行。
5)独立保存翻译数据使得:软件功能代码的变动/更新/装卸不会耗损翻译的成果,同时翻译数据可以被更好地共享和管理。
如果直接利用PB来开发应用,则可以在源码中直接表现某一地方特性,再利用TransTlk生成支持其它语言的版本。
4 运用TransTlk翻译PB的类库和工具
如果运用PB类库或PB工具来开发应用,此时应用是由PB提供的共享代码(在面向对象的开发环境中代码共享的方式不是直接引用或复制而是继承)和开发者的自编代码两部分构成,则须对两部分代码都进行翻译才能使应用真正支持新语言。
PB的基本类库(PFC)是一套功能丰富的PB共享对象,开发者可利用PFC以极少的编码量快速开发出高质量的PB应用;PFC可以由专门的“PFC对象管理者”(即“环境定制者”)进行修改和扩充。若要使PFC应用支持一种新语言,则应:首先由PFC对象管理者生成支持新语言的PFC、扩展PFC和PFE的共享库文件,然后由“应用实现者”翻译应用中的自编代码。例如:在PB6.5软件包中不包含汉语的PFC字典,若要使PFC应用实现汉化,则首先由PFC对象管理者提供汉化的PFC、扩展PFC和PFE,然后由应用实现者汉化自编的代码。
利用InfoMaker,用户可以直接维护/浏览数据,还可以不编一行代码地快速开发出高质量的数据库管理应用软件;InfoMaker的应用模板可以由专门的“InfoMaker模板管理者”(即“环境定制者”)来修改和扩充。若要使InfoMaker应用支持一种新语言,就应:首先由InfoMaker模板管理者生成支持新语言的InfoMaker模板,然后由“应用实现者”翻译数据表示中的文字。例如:若要生成汉化的InfoMaker应用,则首先由InfoMaker模板管理者提供汉化的InfoMaker模板,然后由应用实现者汉化数据表示中的文字。
对PB类库或PB工具中的共享代码进行翻译,使之支持新语言的过程,是定制PB开发环境的重要内容。