网页端轻量级计算机辅助翻译系统的设计与实现
2021-06-16李娟王钦文曾丹
李娟 王钦文 曾丹
(新疆师范大学 新疆维吾尔自治区乌鲁木齐市 830054)
1 计算机辅助翻译软件现状
21 世纪,是国与国、文化与文化之间交汇融合的世纪。在这样的大背景下,翻译便成为了一项重要且常见的文字工作需求[1]。随着翻译理论的发展,翻译的需求标准也在不断提高。通过使用翻译软件或者在线翻译平台,译员可以省去许多重复的劳动,将更多的精力分配到精准翻译上[2]。目前,软件市场上主流的文字处理软件都偏向重量级、泛用性。而专门用于计算机辅助人工翻译的轻量级,专业性软件则较少。例如,国外开发的计算机辅助翻译软件包括Trados、Wordfast 与memoQ,三者各有利弊:Trados 可以自动调用记忆库中的成句,而对术语查找的支持不足[3];Wordfast 的可以自动调用术语,但需要译者自己查找记忆库内容[4];memoQ 的术语查找功能虽然较为完备,但对Visual C++库有较强的依赖,在不同的环境下显得稳健性不足,且无法支持MacOS 操作系统。虽然在软件定位上较传统的文本处理软件有所细化,二者本质上仍然都是较为重型的计算机辅助翻译软件。国内由优译信息(UEDRIVE)开发的Transmate 也属于Trados 的同类产品。
本文中实现的计算机辅助翻译软件是以笔者在翻译工作中的实际需求为切入点,利用多种应用技术,初步构建一套可扩充术语库,带有协助人工翻译功能(如术语提示,译文复用、带有嵌入式辞典)的功能,针对XML(.lang)词条文件格式本地化过程,轻量级,稳健性强的网页端计算机辅助本地化系统。当然,要让计算机辅助翻译(Computer aided translation,CAT)完全替代人工翻译恐怕永远是不可能的,但是,计算机辅助翻译在某些特定任务下可以替代人工翻译,减轻译者的负担、提高工作效率[5]。
计算机辅助翻译软件主要由记忆库、术语库与文字处理界面组成,前二者以数据库匹配原文的方式,达到复用已有译文的效果,而文字处理界面则承担编辑功能。计算机的普及和Internet 的普遍应用,让计算机辅助翻译迎来了一个新的发展机遇[6]。
2 计算机辅助翻译系统设计
2.1 模型选择
本系统以瀑布模型为原型进行分步实现,步骤包括:针对本项目所研究的问题开展可行性分析;进行软件的总体设计、并进一步对各个模块进行详细设计;进行实际的开发流程,包括编码、测试与改进。在设计上,由于本系统是从笔者自身需求出发,所以在模块设计上会引入敏捷开发所倡导的“可工作的软件胜过面面俱到的文档”等思想[7],力求围绕实际进行功能开发,对需求变化的响应富有弹性而可变,减少冗余模块。
2.2 流程设计
为达到快部署、快使用、快成效、快更新,故无论在架构层面还是代码层面,本系统都应遵循简洁性的原则,对添加功能持谨慎态度,排除冗余功能的桎梏。系统在架构层面上的数据交换、功能分层等应当有较少的层级,以满足网页端轻量级应用的简洁性要求,并提升稳健性。本系统的流程图如图1 所示。
2.3 模块设计
根据系统流程图,可以分化设计出四个主要模块:
(2)项目管理模块,该模块负责实现从.lang 文件对项目进行处理导入,并为用户提供项目信息,以及核心功能词条编辑;
(3)术语管理模块负责实现术语库及其相关操作,包括术语添加、术语编辑和术语检测提示;
(4)最后是成品项目发布模块,该模块将编辑好的项目导出为成品.lang 文件。
本系统的功能模块关系如图2 所示。
2.4 解决的关键问题
.lang 本地化文件本质上是XML 文件,每一行为一个词条,以换行符进行分隔,词条格式一般为{[string:键值]:"[string:对应字符串]"}。在多语言文件中,需要翻译的是对应字符串,翻译后即可被软件调用到需要该键值的字符串处。术语管理是CAT 应用的主要功能之一,由于每篇文章都包含无数个单词,因此编辑校对时要重点核对单词的前后一致性,CAT 应用故而应当拥有一个术语管理模块用于规范专业术语[8]。
本系统的关键问题有3 个:
(1)对.lang 条目式本地化语言文件的解析;
“课后练习”版块,可包括知识练习题、英语语言知识、技能练习题和综合练习题。微信公众平台可对学生的这些练习进行追踪,教师可根据微信公众平台的提供的数据对学生的作答进行归纳,了解学生的不足,以加强课堂教学。
(2)依据文件进行自动的词条提取,并完成项目的创建与词条编辑;
(3)成品.lang 文件按原格式输出。
3 计算机辅助翻译系统实现
以下将详述系统的3 个核心功能的实现,分别为文件上传模块、项目管理模块与术语管理模块。
3.1 文件上传模块
文件上传模块是翻译者上传.lang 文件并将其转换为翻译项目的模块。ImportFile.aspx 包含了此模块对应页面所需并的相应元素。该页面对应的后台类是ImportFile.aspx.cs。该类实现了从一个.lang文件读入数据,提取其中词条,并存储到数据库的过程,另实现了各种错误处理。insertStr()方法实现了文件的词条提取。首先使用系统提供的IO 库中的StreamReader 类,传入文件路径,并使用GB2312 编码读取文件。使用StreamReader.ReadLine()方法读取一行,将其传入一个临时存储字符串中,然后开始处理词条提取过程。将一行数据以标志键值与对应字符串的":”"用string.Split()方法分割,并用string.Add()方法将处理完毕的词条各属性(键值、原文、文件名、编辑者用户名)添加到SQL 语句的对应insert 语句中,并将此语句存入一个List 容器类中。完成整个文件的提取之后,使用DBHelper 库提供的ExecuteSqlsWithTranscation()方法执行List 容器中的SQL 语句。如此便完成了词条的处理。
部分关键实现代码如下:
图2:系统模块设计
图3:导入后的项目在项目列表中的视图
图4:翻译界面
图5:导出项目界面
图6:导入文件与输出文件对比
3.2 翻译管理模块
翻译管理模块是系统的关键组成部分。其由两个子界面/子页面组成,分别为项目列表界面与翻译工作界面。
项目列表界面对应FileList.aspx,含有一个Repeater 控件。Repeater 控件可以从一个指定的数据源取得数据,遍历数据后重复显示选项。这里的Repeater 控件将从数据库中获取导入的文件列表,并在点击相应选项时跳转到该文件的翻译工作界面。与其对应的FileList.aspx.cs 类实现了从数据库获取项目文件并显示项目与其翻译进度的功能。其有GetFile()方法。这一方法创建一DataTable 虚拟表类实例,并使用此类自带的DataTable.Columns.Add()为其添加了三个列:name,description 与width。之后,找到对应目录下的文件,将两个查询语句通过DBHelper.DBContext.Default.GetDataTable()方法在数据库端执行,分别查询该文件对应数据表下的总词条数与有对应翻译(已翻译)的词条数。然后计算出已翻译的百分比,小数点后保留两位。此后使用NewRow()方法为该虚拟表添加数据,以使用MenuRepeter.DataBind()方法供对应的Repeater 调用从数据库获取的数据。
翻译工作界面对应FyTj.aspx。其包含一个Repeater 控件用于显示文件中待翻译的词条,每个Repeater 选项都具有其对应的修改者用户名、提交时间、对应英文、(若已有翻译)中文、键值等数据项,在点击时显示在右侧的工作区中。FyTj.aspx.cs 类实现了从网页表单中获得译文,并存储到数据库的过程。其中的btnhidsave_Click()方法定义了点击翻译工作界面的按钮时的事件。首先执行一个update 语句,更新其词条译文,提交时间与提交者ID 列。如果保存成功,则执行GetList()方法更新页面,然后提示保存成功。保存失败(如断开了与数据库的链接、session 过期等原因)则只弹出提示。
部分关键实现代码如下:
3.3 术语管理模块
术语管理模块用于添加与编辑术语。GetList()方法在页面加载时执行,首先创建一DataTable 虚拟表,然后使用DBHelper 类的相应方法在数据库中查询已有的术语,并传递给虚拟表,然后让Repeater 以该虚拟表为数据源显示数据。btnhidadd_Click()方法实现了按下添加按钮后的页面行为。该方法首先在数据库内查找该术语是否已经存在,若不存在,则执行一SQL 语句将新术语及其定义写入数据库。btnhidsave_Click()方法实现了按下保存按钮后的页面行为,其具体实现过程类似btnhidadd_Click()方法,不再赘述。
部分关键实现代码如下:
4 系统实现与测试
4.1 实现环境与技术
本系统实现采用的是NET 框架4.6.1,在数据库选用SQL Server 2008。在ASP.NET 框架中,每个页面都使用xhtml 进行页面设计,并使用JavaScript 编写脚本。而具体业务实现则调用各个界面的后台类(*.aspx.cs)来实现,每一个页面都分别对应一个后台类。即,一个系统模块至少包含一个aspx(xhtml)页面与一个C#后台类,以及少量的JS 脚本[9]。
4.2 实现效果
假定用户需要导入名为test1.lang 的文件,并通过本系统进行计算机辅助翻译,最终导出成品文件。其步骤如下:
第一步:上传文件并导入为项目
首先登录系统,然后进入文件上传页面,在资源管理器窗口中选择test1.lang,并点击导入按钮。系统将自动解析.lang 文件,并将其导入为系统内的项目。导入后的结果如图3 所示。
第二步:进入项目进行翻译
翻译界面如图4 所示,图中,标注(1)处为词条列表,也就是待翻译的内容;标注(2)处为原文;(3)为输入框,译员在此输入译文后保存;(4)为术语提示,从原文中提取术语并匹配术语库,若有匹配到的术语,则在此处显示,为译员提供参考。为展示相关术语,图中选择了另一个翻译项目进行展示。
第三步:导出项目
导出项目界面如图5 所示。点击“导出到lang 文件”按钮,即可下载该项目的成品文件。原文文件与成品文件的输出对比如图6 所示。
5 结论
该系统以实务中的需求出发,初步实现了一套基于网页端的轻量级CAT 系统,以科技助力翻译,解放翻译中繁杂的查询时间,以达到方便条目式本地化过程的目的。软件工程是一门应用学科,在选题时从自身实践当中的需求出发来确定选题是一个较为实际的方向。该计算机辅助翻译系统的实现因此有可观的现实意义。本次开发很好地适应了架构的特性,但是JavaScript 部分在jQuery 类库方面依赖性过高,显得略有重量[10];如果能够进一步熟悉原生JS,可以选择抛弃各种版本的jQuery 类库,或使用更小,更有针对性的类库,对解决方案进行更轻量化,更不依赖环境的JS 脚本植入。