李娟 王欽文 曾丹
(新疆師范大學 新疆維吾爾自治區(qū)烏魯木齊市 830054)
21 世紀,是國與國、文化與文化之間交匯融合的世紀。在這樣的大背景下,翻譯便成為了一項重要且常見的文字工作需求[1]。隨著翻譯理論的發(fā)展,翻譯的需求標準也在不斷提高。通過使用翻譯軟件或者在線翻譯平臺,譯員可以省去許多重復的勞動,將更多的精力分配到精準翻譯上[2]。目前,軟件市場上主流的文字處理軟件都偏向重量級、泛用性。而專門用于計算機輔助人工翻譯的輕量級,專業(yè)性軟件則較少。例如,國外開發(fā)的計算機輔助翻譯軟件包括Trados、Wordfast 與memoQ,三者各有利弊:Trados 可以自動調用記憶庫中的成句,而對術語查找的支持不足[3];Wordfast 的可以自動調用術語,但需要譯者自己查找記憶庫內(nèi)容[4];memoQ 的術語查找功能雖然較為完備,但對Visual C++庫有較強的依賴,在不同的環(huán)境下顯得穩(wěn)健性不足,且無法支持MacOS 操作系統(tǒng)。雖然在軟件定位上較傳統(tǒng)的文本處理軟件有所細化,二者本質上仍然都是較為重型的計算機輔助翻譯軟件。國內(nèi)由優(yōu)譯信息(UEDRIVE)開發(fā)的Transmate 也屬于Trados 的同類產(chǎn)品。
本文中實現(xiàn)的計算機輔助翻譯軟件是以筆者在翻譯工作中的實際需求為切入點,利用多種應用技術,初步構建一套可擴充術語庫,帶有協(xié)助人工翻譯功能(如術語提示,譯文復用、帶有嵌入式辭典)的功能,針對XML(.lang)詞條文件格式本地化過程,輕量級,穩(wěn)健性強的網(wǎng)頁端計算機輔助本地化系統(tǒng)。當然,要讓計算機輔助翻譯(Computer aided translation,CAT)完全替代人工翻譯恐怕永遠是不可能的,但是,計算機輔助翻譯在某些特定任務下可以替代人工翻譯,減輕譯者的負擔、提高工作效率[5]。
計算機輔助翻譯軟件主要由記憶庫、術語庫與文字處理界面組成,前二者以數(shù)據(jù)庫匹配原文的方式,達到復用已有譯文的效果,而文字處理界面則承擔編輯功能。計算機的普及和Internet 的普遍應用,讓計算機輔助翻譯迎來了一個新的發(fā)展機遇[6]。
本系統(tǒng)以瀑布模型為原型進行分步實現(xiàn),步驟包括:針對本項目所研究的問題開展可行性分析;進行軟件的總體設計、并進一步對各個模塊進行詳細設計;進行實際的開發(fā)流程,包括編碼、測試與改進。在設計上,由于本系統(tǒng)是從筆者自身需求出發(fā),所以在模塊設計上會引入敏捷開發(fā)所倡導的“可工作的軟件勝過面面俱到的文檔”等思想[7],力求圍繞實際進行功能開發(fā),對需求變化的響應富有彈性而可變,減少冗余模塊。
為達到快部署、快使用、快成效、快更新,故無論在架構層面還是代碼層面,本系統(tǒng)都應遵循簡潔性的原則,對添加功能持謹慎態(tài)度,排除冗余功能的桎梏。系統(tǒng)在架構層面上的數(shù)據(jù)交換、功能分層等應當有較少的層級,以滿足網(wǎng)頁端輕量級應用的簡潔性要求,并提升穩(wěn)健性。本系統(tǒng)的流程圖如圖1 所示。
根據(jù)系統(tǒng)流程圖,可以分化設計出四個主要模塊:
(2)項目管理模塊,該模塊負責實現(xiàn)從.lang 文件對項目進行處理導入,并為用戶提供項目信息,以及核心功能詞條編輯;
(3)術語管理模塊負責實現(xiàn)術語庫及其相關操作,包括術語添加、術語編輯和術語檢測提示;
(4)最后是成品項目發(fā)布模塊,該模塊將編輯好的項目導出為成品.lang 文件。
本系統(tǒng)的功能模塊關系如圖2 所示。
.lang 本地化文件本質上是XML 文件,每一行為一個詞條,以換行符進行分隔,詞條格式一般為{[string:鍵值]:"[string:對應字符串]"}。在多語言文件中,需要翻譯的是對應字符串,翻譯后即可被軟件調用到需要該鍵值的字符串處。術語管理是CAT 應用的主要功能之一,由于每篇文章都包含無數(shù)個單詞,因此編輯校對時要重點核對單詞的前后一致性,CAT 應用故而應當擁有一個術語管理模塊用于規(guī)范專業(yè)術語[8]。
本系統(tǒng)的關鍵問題有3 個:
(1)對.lang 條目式本地化語言文件的解析;
“課后練習”版塊,可包括知識練習題、英語語言知識、技能練習題和綜合練習題。微信公眾平臺可對學生的這些練習進行追蹤,教師可根據(jù)微信公眾平臺的提供的數(shù)據(jù)對學生的作答進行歸納,了解學生的不足,以加強課堂教學。
(2)依據(jù)文件進行自動的詞條提取,并完成項目的創(chuàng)建與詞條編輯;
(3)成品.lang 文件按原格式輸出。
以下將詳述系統(tǒng)的3 個核心功能的實現(xiàn),分別為文件上傳模塊、項目管理模塊與術語管理模塊。
文件上傳模塊是翻譯者上傳.lang 文件并將其轉換為翻譯項目的模塊。ImportFile.aspx 包含了此模塊對應頁面所需并的相應元素。該頁面對應的后臺類是ImportFile.aspx.cs。該類實現(xiàn)了從一個.lang文件讀入數(shù)據(jù),提取其中詞條,并存儲到數(shù)據(jù)庫的過程,另實現(xiàn)了各種錯誤處理。insertStr()方法實現(xiàn)了文件的詞條提取。首先使用系統(tǒng)提供的IO 庫中的StreamReader 類,傳入文件路徑,并使用GB2312 編碼讀取文件。使用StreamReader.ReadLine()方法讀取一行,將其傳入一個臨時存儲字符串中,然后開始處理詞條提取過程。將一行數(shù)據(jù)以標志鍵值與對應字符串的":”"用string.Split()方法分割,并用string.Add()方法將處理完畢的詞條各屬性(鍵值、原文、文件名、編輯者用戶名)添加到SQL 語句的對應insert 語句中,并將此語句存入一個List 容器類中。完成整個文件的提取之后,使用DBHelper 庫提供的ExecuteSqlsWithTranscation()方法執(zhí)行List 容器中的SQL 語句。如此便完成了詞條的處理。
部分關鍵實現(xiàn)代碼如下:

圖2:系統(tǒng)模塊設計


圖3:導入后的項目在項目列表中的視圖

圖4:翻譯界面

圖5:導出項目界面

圖6:導入文件與輸出文件對比


翻譯管理模塊是系統(tǒng)的關鍵組成部分。其由兩個子界面/子頁面組成,分別為項目列表界面與翻譯工作界面。
項目列表界面對應FileList.aspx,含有一個Repeater 控件。Repeater 控件可以從一個指定的數(shù)據(jù)源取得數(shù)據(jù),遍歷數(shù)據(jù)后重復顯示選項。這里的Repeater 控件將從數(shù)據(jù)庫中獲取導入的文件列表,并在點擊相應選項時跳轉到該文件的翻譯工作界面。與其對應的FileList.aspx.cs 類實現(xiàn)了從數(shù)據(jù)庫獲取項目文件并顯示項目與其翻譯進度的功能。其有GetFile()方法。這一方法創(chuàng)建一DataTable 虛擬表類實例,并使用此類自帶的DataTable.Columns.Add()為其添加了三個列:name,description 與width。之后,找到對應目錄下的文件,將兩個查詢語句通過DBHelper.DBContext.Default.GetDataTable()方法在數(shù)據(jù)庫端執(zhí)行,分別查詢該文件對應數(shù)據(jù)表下的總詞條數(shù)與有對應翻譯(已翻譯)的詞條數(shù)。然后計算出已翻譯的百分比,小數(shù)點后保留兩位。此后使用NewRow()方法為該虛擬表添加數(shù)據(jù),以使用MenuRepeter.DataBind()方法供對應的Repeater 調用從數(shù)據(jù)庫獲取的數(shù)據(jù)。
翻譯工作界面對應FyTj.aspx。其包含一個Repeater 控件用于顯示文件中待翻譯的詞條,每個Repeater 選項都具有其對應的修改者用戶名、提交時間、對應英文、(若已有翻譯)中文、鍵值等數(shù)據(jù)項,在點擊時顯示在右側的工作區(qū)中。FyTj.aspx.cs 類實現(xiàn)了從網(wǎng)頁表單中獲得譯文,并存儲到數(shù)據(jù)庫的過程。其中的btnhidsave_Click()方法定義了點擊翻譯工作界面的按鈕時的事件。首先執(zhí)行一個update 語句,更新其詞條譯文,提交時間與提交者ID 列。如果保存成功,則執(zhí)行GetList()方法更新頁面,然后提示保存成功。保存失敗(如斷開了與數(shù)據(jù)庫的鏈接、session 過期等原因)則只彈出提示。
部分關鍵實現(xiàn)代碼如下:


術語管理模塊用于添加與編輯術語。GetList()方法在頁面加載時執(zhí)行,首先創(chuàng)建一DataTable 虛擬表,然后使用DBHelper 類的相應方法在數(shù)據(jù)庫中查詢已有的術語,并傳遞給虛擬表,然后讓Repeater 以該虛擬表為數(shù)據(jù)源顯示數(shù)據(jù)。btnhidadd_Click()方法實現(xiàn)了按下添加按鈕后的頁面行為。該方法首先在數(shù)據(jù)庫內(nèi)查找該術語是否已經(jīng)存在,若不存在,則執(zhí)行一SQL 語句將新術語及其定義寫入數(shù)據(jù)庫。btnhidsave_Click()方法實現(xiàn)了按下保存按鈕后的頁面行為,其具體實現(xiàn)過程類似btnhidadd_Click()方法,不再贅述。
部分關鍵實現(xiàn)代碼如下:

本系統(tǒng)實現(xiàn)采用的是NET 框架4.6.1,在數(shù)據(jù)庫選用SQL Server 2008。在ASP.NET 框架中,每個頁面都使用xhtml 進行頁面設計,并使用JavaScript 編寫腳本。而具體業(yè)務實現(xiàn)則調用各個界面的后臺類(*.aspx.cs)來實現(xiàn),每一個頁面都分別對應一個后臺類。即,一個系統(tǒng)模塊至少包含一個aspx(xhtml)頁面與一個C#后臺類,以及少量的JS 腳本[9]。
假定用戶需要導入名為test1.lang 的文件,并通過本系統(tǒng)進行計算機輔助翻譯,最終導出成品文件。其步驟如下:
第一步:上傳文件并導入為項目
首先登錄系統(tǒng),然后進入文件上傳頁面,在資源管理器窗口中選擇test1.lang,并點擊導入按鈕。系統(tǒng)將自動解析.lang 文件,并將其導入為系統(tǒng)內(nèi)的項目。導入后的結果如圖3 所示。
第二步:進入項目進行翻譯
翻譯界面如圖4 所示,圖中,標注(1)處為詞條列表,也就是待翻譯的內(nèi)容;標注(2)處為原文;(3)為輸入框,譯員在此輸入譯文后保存;(4)為術語提示,從原文中提取術語并匹配術語庫,若有匹配到的術語,則在此處顯示,為譯員提供參考。為展示相關術語,圖中選擇了另一個翻譯項目進行展示。
第三步:導出項目
導出項目界面如圖5 所示。點擊“導出到lang 文件”按鈕,即可下載該項目的成品文件。原文文件與成品文件的輸出對比如圖6 所示。
該系統(tǒng)以實務中的需求出發(fā),初步實現(xiàn)了一套基于網(wǎng)頁端的輕量級CAT 系統(tǒng),以科技助力翻譯,解放翻譯中繁雜的查詢時間,以達到方便條目式本地化過程的目的。軟件工程是一門應用學科,在選題時從自身實踐當中的需求出發(fā)來確定選題是一個較為實際的方向。該計算機輔助翻譯系統(tǒng)的實現(xiàn)因此有可觀的現(xiàn)實意義。本次開發(fā)很好地適應了架構的特性,但是JavaScript 部分在jQuery 類庫方面依賴性過高,顯得略有重量[10];如果能夠進一步熟悉原生JS,可以選擇拋棄各種版本的jQuery 類庫,或使用更小,更有針對性的類庫,對解決方案進行更輕量化,更不依賴環(huán)境的JS 腳本植入。