Office VBA翻译小程序的应用
2020-02-03李海亭张静
李海亭 张静
(陕西科技大学 陕西省西安市 710021)
1 引言
在当代人工智能背景下,人与机器分工合作完成各种工作已经司空见惯。在这种人机分工合作工作模式中,许多以前通过手动或者人工借助机器而完成的工作都可以通过编写代码而由机器自动完成。这种人机分工合作的工作模式也同样体在现代翻译工作之中。当前各种翻译技术已经在翻译领域中得到应用(王华树、李智,2019:67-72),并且在一定程度上改变了现代翻译生态环境(徐彬、杨珍,2019:123-130),其中很多工作都通过编程开发的各种软件和程序完成。其实,翻译工作人员也完全可以通过学习一些基本的编程知识,掌握一些编程技能而将自己日常工作中遇到的各种翻译操作通过编写程序而自动完成,从而将大量时间精力用于翻译中一些创造性的劳动。
翻译中的许多操作可以通过编程而实现自动完成,但是因为任务小或者使用不广泛不大而缺乏商业开发价值。但这一类编程对于译者个人或者翻译公司来说却仍然有一定的价值。文章介绍了用Office VBA 所编写的翻译小程序在翻译中的具体应用,旨在说明VBA 编程在翻译自动化操作中有着非常广阔的应用前景。
2 Office VBA编程在翻译中的应用
翻译实践中要处理的绝大多数文件都以办公软件,特别是微软Word 文件的格式呈现。译前和译后编辑的许多过程也都可以在Office 软件中完成。利用微软Office 软件附带的VBA 编程语言,可以实现许多办公操作的自动化(Mansfield,2010:viii)。在翻译中,许多译前和译后编辑操作也都可以通过VBA 编程而自动化,因此Office VBA 编程应该在翻译中,特别是译前和译后以及术语管理等其它方面有重要的作用,应该引起翻译技术界的重视和研究。然而,作者同时以“VBA”和“翻译”为关键词在知网上搜索(搜索时间为2020 年1 月28 日),只得到了5 篇期刊文献,而且都发表计算机或者其它工科类杂志上。说明VBA 编程在翻译方面的应用还没有引起翻译界足够的重视,特别是翻译学术界还没有专门的论文探讨这个话题。当然,这并不能说明VBA 编程与在翻译技术中可有可无,实际上无论在翻译技术发展中还是从翻译技术文献中都能看到VBA 编程的重要作用。具体表现在以下两个方面。
2.1 有些CAT软件基于文字处理软件的编程功能
计算机辅助翻译(CAT)是现代翻译技术中非常重要的组成部分。计算机辅助翻译软件可以分为两类:与文字处理软件相结合的寄生系统和具有独立界面的系统,而有些寄生系统就是利用了文字编辑软件中的宏程序(徐彬、郭红梅、国晓立,2007: 79-86)。由此可见,VBA 编程(宏程序是VBA 编程的大众化名称)实际上早就是翻译技术的一个重要部分,不过因为翻译界只关注翻译技术的应用而并不关心翻译技术的本质和技术实现手段,所以才不理解VBA 编程在翻译中的重要作用。
2.2 录制宏在翻译中的应用
虽然在知网上几乎查不到翻译界探讨VBA 编程在翻译中重要作用的文献,但阅读国内近些年探讨翻译技术的论文,可以发现已经有学者探讨过VBA 编程在翻译中的应用,不过他们所使用的术语都叫宏或者录制宏。其实宏只不过是VBA 程序的常用叫法,而录制宏也是VBA 编程最基础和最初级的部分,其专业名称就是VBA 编程(英文称为VBA Programming)。录制宏可以让没有学过编程的用户将用户反复使用的操作过程转换为VBA 代码,从而实现相同操作的自动化。通过录制宏而产生的VBA 代码都要通过编辑而删除冗余代码。例如,翻译技术界有人多次提到了录制宏在处理译文标点符号(徐彬、郭红梅、国晓立,2007: 79-86),术语收集整理(徐彬,2010: 45-49; 徐彬、郭红梅,2017: 96-101),隐藏奇数段落以获得原文与译文逐段对照的格式中的作用(徐彬、郭红梅,2017: 96-101),以及在翻译中其他方面的应用(徐彬,2014: 107-111)。王华树也在自己主编的翻译技术教材中将“宏编程基础与文本处理”作为翻译技术课程体系构建中计算机基础部分的一个内容(王华树,2017:23-28)。从这些文献可以看出VBA 编程应该成为翻译技术的一个重要部分。翻译界应该重视这一方面的研究和应用,使译者在掌握VBA 编程的基础上根据自己的需要而将许多翻译操作自动化,从而节省时间精力,提高工作效率。
以下就对一些VBA 小程序的具体应用进行介绍。
3 VBA翻译小程序的应用
根据运行方法的不同,以下介绍的翻译小程序可以分为两类:加载为Word 命令按钮的小程序和启用宏的Word 文档小程序 。这两种小程序从本质上没有任何区别,只是代码长短不同,完成的操作任务不同和应用场景不同。以下从两类不同程序的特点,各自所包含的程序以及所完成的操作任务进行详细说明。
3.1 加载为Word命令按钮的小程序
3.1.1 此类小程序的特点
这类小程序比第二类使用更为频繁,每次只能完成某一个操作,如删除英文中的多余空格。一般来说,这一类小程序代码比第二类小程序代码更短,有些只有两个语句。这类小程序更适合对已打开的文档进行多次操作。而且操作失误时可以及时用常用工具栏中的撤销按钮撤销操作。因为使用频繁,为了使用方便,可以将这些小程序添加到Word 命令栏中,每个小程序成为命令栏中的一个按钮,并且给每个命令按钮设置一个图标和文字,可以像点击Word 工具栏中的命令按钮一样使用。由于操作简单,而且添加到了工具栏中,基本上直接看名称就知道小程序所完成的操作任务,所以不必要有详细的操作说明和帮助文件。
图1:添加为Word 命令按钮的VBA 翻译小程序
图2:术语校对界面
此类小程序不便之处在于对于对Office VBA 编程不熟悉的使用者来说,不知道如何将相应的文件添加到Word 模板中,然后再讲小程序添加到工具栏中成为命令按钮,并且为每个命令按钮添加图标和名称。添加到工具栏的小程序效果如图 1 所示。图中最右侧的11 个图标就是添加了图标和名称的小程序命令按钮。
3.1.2 小程序使用说明
此类小程序共有11 个。具体名称如下:1.显示隐藏字体;2.不显示隐藏字体;3.隐藏字体转非隐藏字体;4.删除隐藏字体;5.序号转文本;6.域转为静态文本;7.删除所有书签;8.删除可选连字符;9.删除空白段落;10.手动换行符转段落标记;11.不间断空格转空格。
以上小程序中,第1 到第4 之间有非常密切的联系,所以一并进行说明。这四个小程序都涉及到隐藏字体操作,而且都与译后编辑校对相关。此外,这四个小程序第二类中的第3 个小程序有非常密切的关联。
在翻译实践中,经常有客户要求最终提交的译文为原文和译文段落对照的格式。对于后者,可以将原文按照段落进行复制,并且将奇数段落设置为隐藏文字。这样在导入CAT 辅助软件翻译完成后导出来的译文自然就是原文和译文段落对照的格式(徐彬 & 郭红梅, 2017)。其实在对译文进行校对时也可以采用这种原文和译文段落对照,并且原文段落设置为隐藏文字的格式。如果需要参看原文,就运行第1 个小程序,将原文显示出来,以便于对照原文看译文内容是否与原文内容意义相一致。如果原文和译文内容意思一致,而需要对译文进行润色,就可以运行第2 个小程序。此时不显示原文,只显示译文,审校者就可以专注于对译文流畅性和可读性的修改。在保证译文内容没有任何问题的情况下,如果客户要提交原文和译文段落对照的格式,可以运行第3 个小程序,将隐藏字体自动转换文非隐藏字体。这样就会避免因客户Word 设置时,没有勾选“显示隐藏字体”而出现隐藏字体不显示的问题。如果译文没有问题而客户不要求提供原文和译文段落对照的格式,可以运行第4 个小程序,自动将隐藏字体删除(其实就是删除原文段落),这样就可以直接提交译文。随着机器翻译质量的提高,机器翻译+译后编辑已经成为现代翻译的主要模式(崔启亮,2014:68-73;冯全功、崔启亮,2016: 67-74+89+94;徐彬、郭红梅,2015:71-76)。这四个小程序和第二类中的第3 个小程序可以为译者在Word 中进行译后编辑以及翻译校对带来极大方便。
各种计算机辅助翻译软件已经成为现代翻译行业中的常用工具,使用CAT 工具翻译时,为了在翻译过程中减少各种格式标签,最好采用静态文本的格式,而在译后编辑过程中,再按照客户不同要求重新进行排版。这种方式在以出版为目的的翻译中特别重要。因此在译前可以将原文中或者从PDF 转换来的Word 文件中的序号转成静态文本的数字,也可以将各种域转换成为静态文本。小程序中的5 用于将Word 文档中的各种自动序号转换为静态文本,而小程序6 用于将各种不同域自动转换为静态文本。
为了使用现代CAT 工具或者机器翻译,经常需要将纸质扫描成PDF 文档或者图片,再通过ABBYY FineReader 等OCR 软件转换为Word 文档,最后导入CAT 工具进行翻译(徐彬、郭红梅、国晓立,2007:79-86)。在利用FineReader 将PDF 文档转换为Word 的过程中,作者发现最终的Word 文档中会出现许多多余的书签。这种书签并不能通过FineReader 的转换设置自动清除。它们不仅没有任何信息而且还会在导入CAT 软件后产生大量标签,给翻译工作带来干扰。此外,这种书签并不能通过Word 中的查找替换功能一次全部删除,只能通过替换中的定位功能一个一个删除。这样会给译前编辑工作造成了很大不便。因此,作者编写了第7 个小程序,可以一次性删除转换成Word 文档后的所有书签,从为译者译前编辑节省大量时间和精力。
在利用FineReader 将PDF 文档转换为Word 文档中,同样会出现大量的可选连字符。一般情况下可选连字符在文档中出现在行尾,但是从PDF 转换成Word 文档中的可选连字符因为转换前后每行字数不同而并不出现在行尾。这种可选连字符不仅在格式上不符合排版要求,而且在使用CAT 术语库时也会因为可选连字符破坏了词汇的整体性而给使用术语带来不良影响,所以应该全部删除。熟悉Word 通配符功能的译者可以使用Word 的查找和替换功能一次性删除所有的可选连字符。然而,由于绝大多数Word 用户并不熟悉通配符功能,所以并不知道如何一次性删除所有的可选连字符。即使熟悉这种功能的用户,也通过点击加载到工具栏中相应的命令按钮,运行使用小程序8,达到一键删除所有的可选连字符。这种小程序不仅使用方面而且为译者节省了大量的时间,让译者有更多的时间用于提高译文质量。
小程序9 用于自动删除当前文档中的空白段落。这个小程序既可以用于译前编辑,也可以用于译后编辑,也可以用于翻译以外的其它操作。在译前编辑中主要可以删除通过OCR 软件转换来的Word 文档中的空白段落。在译后编辑中也可以用于删除没有用的各种空白段落,包括只包含非打印字符的空白段落。
小程序10 和11 主要用于处理网页上复制或者下载的文档。众所周知,网页上的文字排版格式和日常所见到的文本格式并不相同。一般文档中的段落末尾用的是段落标记而网页上用的是手动换行符;一般文档中英文单词之间用的是空格,而网页上的用的是不间断空格。这给译者利用现代网络上的各种翻译资源带来了一定的不便。现代互联网上有不少可以免费的资源可以在加工后供翻译使用。例如,可以从网上下载免费的原文和译文段落对照的文档,然后利用各种对齐工具将这些文档制作成为记忆库,供翻译时参考,或者制作成双语平行语料库用于翻译研究。但从网络上复制或者下载的文档,通常会保留网络上的段落格式和空格格式,因此需要将这些格式转换为一般文档格式,通过这两个小程序可以前面的其他程序一样实现一键完成操作任务,从而为翻译人员带来方便。
3.2 加载宏的Word文档
3.2.1 此类小程序特点
与第一类小程序不同,这类小程序保存为启用宏的Word 文档(后缀名为docm)或者为启用宏的Excel 工作簿(后缀名为xlsm),也就是说小程序本身就是一个Word 文档或者Excel 工作簿,不过与一般文档或工作簿不同的是,这些文档和工作簿中包含有一个或者多个小程序。为了方便程序运行,在文档或者工作簿中加载了命令按钮,用户可以直接点击命令按钮运行小程序。同时,在Word 文档或者Excel 工作簿中添加了小程序的使用说明。这样就将运行命令按钮和说明文件整合在了一起。为了防止使用者操作时失误,利用Office 文档的限制编辑功能对文件设置了限制编辑。也就是说使用者只能查看使用说明,并且运行程序而不能对文件做任何改动。
与第一类小程序不同,这类小程序在使用前不需要进行任何前期处理,所以运行起来更加方便。只要计算机上的Office 软件中安装了相应的VBA 组件并且设置好了宏安全性,完全可以像一个小软件使用。这种小程序也更容易分享给其他人使用,因此传播也更加容易。
此外,这一类小程序处理的任务也比第一类要更复杂一些,程序代码也更长一些。每次运行后都需要根据目的打开所要处理的工作簿或者文档。由于这种小程序处理文档时不需要先打开所要处理文档,因此文档处理结果不能点击通过Word 工具栏中的撤销按钮一键恢复操作。不过大多数处理过的文档都另存为其它文档,原来的文档并不会被破坏。因此,如果操作失误,只需删除处理后产生的新文档,而不会破坏原来的文档。
3.2.2 小程序使用说明
这类小程序共有7 个,分别是:1.术语校对工具;2.术语自动插入原文工具;3.复制原文及隐藏奇数段落;4.原文译文排版为段落对照;5.原译文段落对照格式提取为原文和译文;6.统计同一文件夹下文档字数;7.Cat 导出对照格式转为双语平行语料文本。
以上7 个小程序中,第1 个用Excel VBA 编写,第2 个在Excel VBA 中引用Word VBA 编写,第6 个在Word VBA 中引用Excel VBA 编写,其余全部用Word VBA 编写。前两个小程序都与翻译术语有关,相关的编程技术问题已经做过介绍和探讨(李海亭,2019:230-232)。
第1 小程序是一个术语校对工具。编写这个术语校对工具是为了改变现在绝大多数术语校对工具中存在的问题。现代各种术语校对工具中最大的问题就是术语校对工具界面都是表格形式。这种表格形式如果长时间校对,会令人眼花缭乱,而且容易错行。此外,如果术语表中包含术语较多,一次无法完成校对任务,下次接着校对或者另外一人继续校对时会忘记,或者不知道应该从哪条术语继续校对。因此,本程序主要是解决术语校对中的界面问题和两次校对时的遗忘问题。本程序在存储翻译术语的Excel 表格中添加一个运行命令按钮和一个退出程序命令按钮,点击运行按钮后存储翻译术语的表格和Excel 程序自动隐藏,只显示一个术语校对界面。如图2 所示,界面上有两个文本框,“上一个”、“下一个”和“退出”三个命令按钮。两个文本框分别显示原文术语和对应的译文术语。如果术语存在问题可以在文本框中直接修改,修改结果自动保存到术语表中原来的位置。点击“上一个”或者“下一个”,分别回到上一条术语和下一条术语。点击“退出”后,界面退出,保存对术语表所做的修改,同时记住本次校对所到达的位置,然后返回到术语表界面。点击术语表中的“退出程序”命令按钮,直接退出Excel 程序。三个命令按钮按照Windows 常规命令按钮进行设计,也就是按键盘上的Tab 键可以跳转到下一个命令按钮,按Enter 键直接保存每一条术语校对结果并显示下一条术语。因此,用户可以直接用键盘操作而不必每次都点击界面上的命令按钮。下次校对或者另外一位校对者下次运行程序时会自动接着上次校对的术语条目继续校对,因此不用担心上次校对到了哪一条术语。
图3:插入术语后的Word 文档
图4:统计同一文件夹下所有Word 文档的结果列表
第2 个小程序是一个术语自动插入原文文档的工具。这个工具用于将存储在Excel 表格中的术语自动插入到Word 格式的原文文档中。虽然CAT 工具在翻译界已经成为主流工具,但目前仍有不少译者只用办公软件,特别是Word 格式进行翻译。这款翻译术语工具可以让这些译者使用利用现代翻译术语加快术语的处理,同时保持术语翻译的一致性。这个程序在保存着翻译术语的Excel 表格中加载一个命令按钮。用户将自己的翻译术语复制到表格相应的列中,然后点击按钮,程序开始运行,然后出现一个打开文档对话框,提醒用户打开需要翻译的文档,用户选择好需要处理的文档后,点击对话框的下面的“打开”,程序就会自动将术语译文添加到对应的原文后面,并且用红色显示。添加术语后的文档如图3 所示。这样,译者在翻译时就不必再担心术语前后翻译不一致,如果多人协作翻译时也不必担心不同译者之间术语翻译不一致的问题。同时也省去了译者查询和输入术语译文的麻烦。
第3 个小程序是为了利用CAT 软件在翻译过程中保留隐藏文字(隐藏文字保留不变)这一特征而设计的。利用CAT 软件的这个特征,在将原文加载到CAT 软件翻译之前,可以先将原文文档的每一个段落进行复制,并且将奇数段落隐藏。翻译完成后从CAT软件中导出时,自然就成了原文和译文段落对照的格式。这一过程可以通过Word文字转表格和表格转文字的功能实现(徐彬、郭红梅,2017:96-101)。本程序的就是将这个过程用程序来自动完成,而不必手动操作完成。运行程序后,出现一个打开文件对话框,选中要处理的原文后,程序自动将原文加工成所需要的格式,并且另存为另一个文件,文件名为“原文文件名+段落对照”的格式,存储路径与原文存储路径完全相同,而原文文件保持不变。
第4 个小程序与上一个在功能上有但一定的相似之处,结果都是生成原文译文段落对照的文档。不同之处在于,上一个是将原文导入CAT 软件前,对原文进行加工,然后在CAT 软件中进行翻译,最终导出原文和译文段落对照的格式。而这个小程序并不一定需要在CAT 软件中进行翻译,而是直接将已经存在的原文和译文两个独立文档加工成原文和译文段落对照的格式。原文可以直接在Word 文档中翻译,最后将原文和译文用这个小程序自动加工成段落对照的格式。也可以直接将原文加载到CAT软件中直接进行翻译,翻译完成后再用这个小程序加工成段落对照的格式。两个小程序之间虽然有相似之处,但是使用的环境并不相同。点击“开始运行”之后,先后出现一个打开原文和打开译文的文件打开对话框。选择好原文和译文后,程序会删除自动原文和译文中的空白段落,并检测原文和译文段落数是否相同,如果相同,就在原文存储路径下自动生成原文和译文段落对照的Word 文档,而源文档保留不变。如果不同,小程序会自动将原文和译文排列成两列,并在相应的文件中自动生成一个新的名为“继续运行”命令按钮。用户根据情况对原文和译文进行编辑,等两列完全对应之后,点击“继续运行”命令按钮,就会将原文和译文转换为原文和译文段落对照的格式。
第5 个小程序与第4 个小程序在功能上完全相反,是将原文和译文段落对照的格式,提取为原文和译文两个独立的文档。这个程序主要用于将从各种渠道获得的双语对照文件,提取为两个不同文档,然后用于进行对齐,制作翻译记忆库和语料库。现在的双语平行语料对齐软件,无论是CAT附带的对齐组件还是专用的对齐软件,绝大多数都要求原文和译文是两个独立的文件。现在互联网上有不少免费使用的原语和译语对照文件。如果要利用这些文件提高翻译效率,或者制作成双语平行语料库用于翻译研究,必须先将它们对齐,制作成双语语料料库。这个小程序可以将网上下载的双语段落对照文件,提取为两个独立的文件,以便于使用对齐软件将原语和译语两个文件制作成翻译记忆库或者双语平行语料库。本小程序的运行方法与以上两个基本相同,此处不再赘述。
在翻译实践中经常会涉及文件字数统计的问题。例如,客户需要知道自己要求翻译的文件总共有多少字。译者需要知道自己在规定时间内要完成多少字的翻译任务量。翻译项目管理人员需要知道一个项目总共有多少字,给译员分配任务时每位译员要翻译多少字等等。对于熟悉CAT 软件的客户、译员或者项目管理人员来说,这些并没有什么问题,因为现代CAT 软件会详细统计项目和项目中每个文件的字数。然而对于不使用CAT 软件的人员,在项目文件较多时,一个一个统计所有翻译文件的字数,就会非常麻烦。第6 个小程序就是为解决这个问题而编写。用户可以将同一项目中的所有Word 文档放在同一个文件夹中然后点击文件中的命令按钮,启动程序,出现一个输入框,要求输入文件夹的路径。输入正确的文件夹路径之后,程序自动运行,统计所有文件的中文字数和西文字符数,统计完成后,在同一文件夹下会出现一个文件名为“文档字数统计表”的Excel 工作簿,工作簿中有一个名为“统计文档字数列表”的工作表。如图4 所示,工作表中的分别列出了每一个文件的文件名、总字符数、汉字字符和英文字符数。最终统计结果用Excel 表格是因为Excel 表格更容易对数据进行汇总计算。
最后一个小程序用于将从Trados、MemoQ 和Déjà Vu 等CAT导出的双语对照文件自动转换为双语平行语料库,供翻译研究使用。转换后的文档格式为TXT 格式,可以用双语平行语料库检索软件CUC_ParaConc 进行检索。现代的CAT 软件都可以导出双语原文译文双语表格对照格式的文件,其中MemoQ 和Déjà vu 导出的是双语对照的RTF 格式文件,而Trados 导出的是Word 格式的双语对照文件。这些文件本来用于对译文进行外部审校。由于这种双语对照文件是句子层次的双语对照格式,所以非常适合转化成双语平行语料库,用于翻译研究。在整个翻译流程完成,译文质量有保证之后,就可以到处双语对照的文件,然后使用本小程序自动转换为双语平行语料库文本。本小程序运行简单,用户点击“开始运行”的命令按钮之后,出现一个对话框,要求用户选择转换哪一个CAT 软件导出的双语对照文件。用户选择对应的数字之后,点击“确定”,出现打开文件对话框,要求用户选择所要转换的文件,选择好后,程序自动将文件转换为双语对照的TXT 格式,新文件名与原文件名相同,而后缀不同。新转换的文档保存在与原文档同样的存储路径中,原文件保留不变。
4 结论
文章介绍了两种类型的Office VBA 翻译小程序的使用方法。从中可以看出,Office VBA 小程序可以在译前和译后编辑,翻译文档格式转换,术语管理和双语平行语料库建设等方面有非常重要的作用。目前VBA 编程在翻译中的应用在翻译界和翻译技术界还是一个新的课题。希望今后有更多的翻译实践和翻译研究工作者关注这一话题,共同促进翻译技术的发展。