APP下载

Office VBA编程设计两款翻译术语工具

2019-06-11李海亭

电子技术与软件工程 2019年7期
关键词:术语表格文档

文/李海亭

1 引言

VBA(Visual Basic for Applications)是微软公司面向Off ice系列软件而开发的一种程序设计语言,利用VBA编程可以将常见的办公任务操作自动化(Mansf ield 2010, xxvii,3),从而提高工作效率。虽然翻译技术在翻译界已经得到了普遍认可,而且利用各种程序语言开发的翻译工具数不胜数,但是利用VBA编程来开发翻译工具仍然必不可少。因为现在翻译工具所要处理的文件基本上都是各种办公软件文档,特别是word文档。在各种计算机辅助翻译软件和机器翻译软件处理翻译文档之前都要对文档进行加工,从翻译工具导出之后还要对译文进行校对。这种译前处理和后期校对基本都可以在off ice文件中完成。作为Off ice一个重要组件,VBA在译前和译后文档的处理过程中有着举足轻重的作用。

虽然目前国内还没有文献专门讨论VBA编程在翻译中的应用,但已经有人在文献中提到了VBA编程在翻译中的作用(徐彬,郭红梅,2017:96-101;徐彬,郭红梅,国晓立2007:80;徐彬,2010:47;徐彬,曹军,2017:97;)。王 华 树(2013:23-28;2017:25)也将VBA编程看成是翻译技术能力的一部分。不过他们用的术语是宏录制或者宏命令,其实宏只不过是VBA编程的一般说法,实际上专业教材或者学术就叫VBA编程(英文VBA programming)。这里介绍两款翻译术语工具的VBA编程开发,对其中遇到的一些问题进行了阐述,以期对今后VBA编程在翻译中的应用有所启发。

2 VBA开发术语工具的必要性

翻译术语库在现代翻译技术中起着非常重要的作用,各种翻译术语工具已经成为翻译技术中不可分割的一部分。虽然现在已经有各种各样的术语管理工具,但是利用off ice VBA开发简单实用的术语管理工具仍然必不可少。其主要原因有以下两点:第一,对各种术语的处理仍然离不开各种off ice软件,而且这类软件也是管理术语数据的系统(王华树,冷冰冰,2017:79)。例如绝大多数CAT软件都可以将存储双语对照术语的Excel表格加载到术语库中供翻译时参考,也可以将术语库中的术语导出为Excel或者CSV(用Excel表格打开)文件,方便术语数据的存储和交换。虽然这些CAT软件也可以使用数据库或者TXT格式文档,但是因为TXT属于无格式文档,显示和可读性较差,并不利于大多数译者使用。而绝大多数译者也并不习惯和熟悉数据库的各种操作。第二,在翻译术语的搜集、编辑、校对和整理过程中,off ice文件仍然起着非常重要的作用。例如利用Word通配符的强大编辑功能,可以对双语术语文件进行整理,也可以在两种语言的术语之间插入一个制表符,从而快速将从各种渠道获得的双语词表编辑为双语对照的表格形式。这种格式可以直接复制到Excel表格中或者TXT文档中,然后加载到各种CAT软件的术语库中作为参考。作为off ice软件一个重要部分,VBA有非常强大的编程功能,可以将许多翻译术语的操作自动化,并且还可以开发一些实用的术语管理界面,从而提高术语管理的效率。

图1:术语校对程序界面

3 术语编辑校对工具

术语编辑校对是保证术语质量,进而保证翻译质量的关键步骤。无论是从翻译文件、记忆库和语料库中提取出来的术语,还是在翻译中添加进术语库中的术语,以及从网络资源或其他渠道获取的各种术语,都要对其进行认真编辑和校对以确保术语翻译的准确性,从而保证术语库的质量。然而目前的各种术语管理软件对于术语编辑校对的处理并不能令人满意。

3.1 当前术语管理工具存在的问题

(1)现在的各种术语编辑和校对工具都是以表格的形式呈现,长时间编辑校对容易错行。现在的翻译术语工具无论是在线工具还是单机工具;无论是独立工具还是集成工具,在翻译术语的编辑和校对上都是以表格的形式呈现。这种表格形式在处理较少的术语时还不会有什么问题,但是如果处理较多的术语时因为校对者长时间对着表格,容易产生错行(当然部分软件可以通过将所处理的行高亮的形式而避免错行)。即使将术语库中的术语导出为TXT和Excel表格形式,在编辑和校对过程中也会存在一定问题。因为TXT是无格式文档,无法对字体和段落格式进行设置,而且许多不可打印字符无法显示,导致大多数用户都不使用这种格式进行文字编辑处理。而Excel也是表格形式,从人体工程学来讲并不是编辑和校对术语的最佳格式。

(2)由于大多数术语管理工具对翻译术语都是多行同时呈现,长时间盯着,令人会眼花缭乱。由于现在大多数的术语管理工具都是以表格的形式呈现,用户在编辑校对的过程中同时盯着好多行术语,短时间还可以应付,时间长了后必然会眼花缭乱,从而影响校对的效率和质量。

(3)术语过多而需要多次编辑校对时,编辑者会有遗忘现象。术语库中包含的术语可多可少。编辑和校对少量的术语可以在短时间内完成,不存在编辑校对者产生遗忘现象,但是当术语校对者要处理成千上万条术语时,一次难以完成校对任务,必然需要多次校对。如果两次校对相隔时间较长,校对者可能会忘记上次校对停止的位置。如果有多位校对者相互合作时,也同样存在后面校对者不知道前面校对者停止校对的位置,从而不知应该从哪里继续校对的问题。

针对以上问题,笔者在提取和校对化工类术语库时,利用Excel VBA设计了一款术语校对工具,具体的设计和开发如图1所示。

面对建筑工程行业规模不断壮大的发展趋势,工程测量在建筑工程项目建设中占据的地位越来越突出。在这种情况下,必须加快测绘新技术的研发与应用,充分借助计算机等技术的优势,推动工程测量水平的不断提升。此外,立足于当前测绘新技术发展实情以及我国的科学技术水平,在未来测绘新技术必然会向智能化、自动化、管理可视化等方向发展。而作为企业必须立足于行业发展状况,积极引进先进的测绘技术,不断提高经济利润和综合效益。

图2:待翻译的Word文档

图3:插入术语译文后的文档

3.2 设计和开发

根据以上分析可以看出,这款术语校对工具的最主要功能就是突破其他各种术语编辑和校对工具在术语校对过程中的呈现方式,即表格形式。因此,这款术语校对工具最重要的部分就是术语呈现的界面设计。校对工具的具体界面设计如图1所示。在这个界面中,有两个文本框,两个标签和三个命令按钮。两个文本框分别呈现每一条术语的原文和译文;对应的标签说明两个文本框所呈现术语的不同语言。点击“上一个”命令按钮,可以返回刚刚编辑过的一条术语;点击“下一个”按钮会保存目前已经编辑校对过的术语并且自动切换到下一条需要编辑校对的术语。点击“退出”按钮,会自动保存已经编辑校对过的所有术语,记住目前已经编辑到的术语位置,并且直接退出程序,同时也退出Excel应用程序。下次打开程序时,可以自动跳到上一次编辑到的位置。如果校对完毕,程序会发出提示,询问是否再次校对。如果点击确认,校对位置从第一条术语重新开始。这样,在校对包含成千上万条术语的术语表时就不用担心忘掉上一次所校对到的术语条目;同时在多人连续校对时,后面的校对者不用担心不知道前面的校对者校对到了哪一条术语。

两个文本框不仅仅用来显示每一条术语的原文和译文,而且在校对者发现术语原文或者译文有错误时可以直接在文本框中修改,修改过的原文或者译文术语会直接保存到译文或者原文原来所对应的单元格。为了运行方便,在存储术语的工作表中添加了一个名为“开始运行”命令按钮。点击该命令按钮,程序会加载校对界面,同时将Excel程序最小化,这样就避免了界面后Excel表格的影响,使校对者每次仅仅关注界面上所显示的一条术语的原文和译文。

此外界面上的命令按钮和文本框按照Windows常用快捷键方法进行了设置。例如按Tab键会自动转到界面上下一个项目;按Enter键表示确认等,这样更方便用户使用快捷键进行操作。

4 术语插入文档工具

上面的术语校对工具使用Excel VBA编写。这里介绍如何利用Excel VBA调用word VBA的功能实现将Excel表格中所存储的术语译文插入到待翻译的word文档中,并以不同的颜色突出显示术语原文和译文(插入前后的效果分别如图2和图3所示)。这个术语译文自动插入工具不仅仅可以用于翻译,同时也可以辅助外语学习者阅读专业文献,因为一些专业术语已经插入译文,可以通过译文来帮助学习者对文献的理解。

4.1 设计需求

现在的翻译产业处于2.0时代,这个时代的最突出特征是翻译技术的广泛使用(阳琼,2018:26-29)。现在各种CAT工具已经在翻译界得到了认可和使用。然而,由于各种原因,仍然有一些译者在翻译中不愿或者不会使用CAT工具,因此他们很难享受到现代翻译术语库为翻译所带来的便利,也难以保证在与别人合作翻译中保持术语翻译的一致性。然而即使在仅仅使用Off ice软件进行翻译的条件下,也可以利用Off ice VBA的编程功能开发一定的工具,从而使这些译者能够享受到现代翻译术语库所带来的便利。这个术语自动插入工具正是基于这种需求而设计的。

4.2 核心问题及解决方法

4.2.1 长短短术语相互干扰

这款工具的主要功能是将保存在Excel表格中的翻译术语译文直接插入到word文档中并且突出显示术语原文和译文,因此在开发中并不需要设计特殊界面。开发中遇到的核心问题是如何保证在插入术语的过程中不会出现各种错误。而产生错误最主要的原因是长术语和短术语相互影响问题。以下先对这个问题进行描述,然后探讨如何解决。

在许多专业领域中,一些由多个词语组成的长术语中会有包含某些词语,而这些词语本身也是术语。例如在化学中二氧化碳(carbon dioxide)是一个术语,而其中的碳(carbon)这个词本身也是一个术语;而经济学中长期成本(long-run cost)是一个术语,而其中成本(cost)也是一个术语。这些长术语和短术语之间有一定的联系,但是由于它们所表达的概念内涵有较大的差异,并不能像一般造句那样,用短词语相互结合而组成长术语。例如虽然二氧化碳与碳有联系,但是二氧化碳和碳表示完全不同的两种物质,它们的组成和性质有很大的不同。因此短术语和长术语在翻译术语库中都有存在的必要,并不能用短术语的相互结合来代替作为整体的长术语。

这种情况给本程序工具的开发带来了一个难题。如果先在原文中插入短术语的译文,必然会破坏长术语的整体性。以carbon dioxide来说,因为先在carbon后面插入(碳),结果就变成了carbon(碳)dioxide,这样在查找carbon dioxide时就会无法查找出预期的结果。相反,如果先插入长术语的情况下,又会出现术语重复插入的问题。仍以carbon dioxide为例,假如先在它后面插入了对应的汉语译文,结果就会成为carbon dioxide(二氧化碳);这时候carbon仍然单独存在,所以在后面查找carbon时就会重复插入短术语,最终出现carbon(碳)dioxide(二氧化碳)这样错误的结果。这两个问题不能仅仅通过改变长术语和短术语插入的顺序来解决。要解决这个核心问题必然要从其他方面寻找路径。

4.2.2 核心问题解决方法

由于这款工具开发的基本思路是将Excel工作表单元格中的每一条术语原文作为同一个变量的不同取值,再将该取值作为查找项在Word文档中查找术语原文,查找到该术语原文后,用术语原文(术语译文)的格式替换术语原文。因此避免上面所提到的核心问题的基本思路就是:在查找到该术语并插入译文后避免再次查找到这条术语。这一点在Word查找中并不难达到,因为在Word查找过程中,如果文档中有隐藏文字,而且在显示设置中不勾选“隐藏文字”(对应的VBA语句为:Application.ActiveWindow.View.ShowHiddenText=False)和“显示所有格式标记”(对应的VBA语句为:Application.ActiveWindow.View.ShowAll=False)两个复选框,隐藏文字就不会被查找到。因此,如果查找到了某条术语并且插入译文后,将术语原文(术语译文)设置为隐藏文字,同时在命令中设置不显示隐藏文字和不显示所有格式。以后查找时就查找不到该术语和它的译文,也就不会再有术语重复查找和插入的问题。

然而,这样就产生了另一个问题:如果先查找的是短术语,而长术语中所内嵌的短术语也会被当成短术语而被查找出来,而这样又会破坏长术语的整体性。因此这时候就只能先查找长术语,等长术语作为整体被查找和插入译文并设置为隐藏文字后,自然不会再被查找出来。这样就不会影响后面短术语的插入。而要先插入长术语,后插入短术语就必须先按照术语原文的字符长度对术语进行逆序排列。

图4:插入术语程序设计流程图

基于以上的分析,为了解决上述问题需要先在Excel中对术语进行降序排序,并且在Word中设置字体的隐藏格式并设置显示为不显示隐藏文字和不显示所有格式。具体的思路为:先计算术语的字符长度并在Excel中对术语进行降序排列,也就是字符最长的术语在最前面而字符最短的术语在最后面。这样可以保证前面插入的长术语的整体性。提前将Word的视图格式设置为“不显示隐藏文字”和“不显示所有格式”。为了避免在后面的查找和插入短术语时长术语的整体性被破坏,采用每查找到一条术语并插入它的译文就将它们的字体格式设置为隐藏的格式,并且字体颜色设置为不同颜色(本程序设置成了红色)。经过这样的处理后,Word在查找后面的术语时,由于前面已经查找并插入过译语的术语原文不会被查找出来,就避免了后面的术语对前面术语的影响。这种设置充分利用了在Word查找替换的属性,最终实现了程序所要达到的目的。

以上面提到的两条化学术语为例。假如Word文档中既有carbon dioxide同时也有carbon这两条术语。先查找出所有的carbon dioxide并且在后面插入(二氧化碳),然后将carbon dioxide (二氧化碳)整体设置为隐藏字体。由于视图设置为“不显示隐藏字体”和“不显示所有格式”,所以这个整体就不再在Word文档中显示,后面查找单独的carbon时也就不会再次查找出carbon dioxide中的carbon而只能查找到单独的carbon并插入它的对应译文(碳)。

等到Excel表中所有的术语已经查找完成后,再将Word视图更改为“显示隐藏文字”(对应的VBA语句为:Application.ActiveWindow.View.ShowHiddenText=True)和“显 示 所有格式”对应的VBA语句为 Application.ActiveWindow.View.ShowAll=False),这时就可以重新显示隐藏字体,然后再将所有的隐藏字体更改为非隐藏字体。这样最终插入的效果就可以正常显示了。

整个程序设计的流程图如图4所示。

5 结语

以上说明了如何用off ice VBA语言编写两个不同的术语管理工具。由于现代翻译中主要处理的文件都以off ice软件的形式呈现,因此VBA编程在翻译中有非常大的开发潜力。希望更多的译者在能够学会和掌握这种语言编程,最终促进翻译效率的提高。

猜你喜欢

术语表格文档
《现代临床医学》来稿表格要求
浅谈Matlab与Word文档的应用接口
《现代临床医学》来稿表格要求
有人一声不吭向你扔了个文档
统计表格的要求
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
本刊表格的要求
有感于几个术语的定名与应用
从术语学基本模型的演变看术语学的发展趋势