如何用 OmegaT 協作 LibreOffice 指引手冊翻譯


目前 LibreOffice 指引手冊的翻譯放在 GitHub 上面,以 git 版本控制系統管理。因此想要協助翻譯,第一件事就是到 GitHub 上面申請個帳號囉!然後利用 git 的版本控制流程來達成眾人翻譯。

既然是眾人翻譯,必定存在工作協調上的問題,否則無事先協調,極度容易導致重複勞力的情況,也就是今天你心血來潮打算翻第二章,沒有明講就默默動手了。剛好今天來了一位小王,他突然間有個靈感就是告訴他應該幫忙翻譯第二章,於是你們兩個人都展開翻譯第二章的奇幻旅程。假設小王今天時間比較多,於是他翻完了,提交到自己的倉儲中,接著對原本來源提請 Pull Request (拉入請求),也就是把自己的修改之處推回來源中;於是你就看到小王發的請求,然後對沒有事先協調工作懊悔不已。

所以我們需要一個溝通管道,目前我們採用 Google Groups 上的 libotw-general 群組來協調貢獻者的工作。溝通的概念很簡單,就是先發文說「嗨,大家好。我想要幫忙某某章的翻譯,先認領囉~ 我會把會翻的地方翻完然後盡快 Pull Request 的!:)」之類的。

認領的工作不見得要非常努力本全部都處理完到達非常精美的地步才能上傳。實務上,自由暨開源專案對於版本發行的精神是,「盡快發行、經常發行」(Release early, release often)。這個好處就是,你只要忙到告一段落就發表,如果這時剛好有誰想要接手都能成行,不會造成資源鎖死他人動不得,而且你實際上也沒什麼時間處理的問題。所以,只要沒時間弄,就盡快上傳自己的成果然後宣告給大家知道,說個「嗨,大家好又是我。XD 我弄了一小部份結果接到新工作後又沒間弄了,所以就先作到這邊囉!麻煩處理一下 PR (註:Pull Request 簡寫)。:P」之類告知一下即可。

這大致上就是目前自由暨開源專案的常見工作協調方式。以下簡介翻譯流程。

0. GitHub、Google Groups、和 IRC
1. GitHub 簡易概念
2. 安裝 OmegaT
3. OmegaT 操作方法
4. Pull Request

GitHub、Google Groups、和 IRC

首先就是先註冊個 GitHub 帳號,然後申請加入 Google 網上論壇的 libotw-general 群組

Google Groups 的好處之一,就是加入群組後可以利用寄信給「郵遞清單」來和大家溝通的功能。這個意思就是說,你加入群組後,你以後只要打開郵件網頁或是郵件程式,然後寄件者輸入 libotw-general@goolegroups.com 後寫信寄出,就能讓所有群組成員收到訊息了。

由於書簡往復滿花時間的,有時候我們希望能即時對談討論,這時候有個溝通管道叫做 IRC,這是目前各自由暨開源專案最常用的溝通方法,是最陽春的通訊方式。我們專案常用的 IRC 頻道是 irc.freenode.org 伺服器上的 l10n-tw 頻道,歡迎使用這個頻道來對談。

詳細 IRC 使用方式請參考網路上其他資源文件,若真有問題不會用,還可以寫信到 libotw-general@googlegroups.com 提出。

GitHub 簡易概念

有了 GitHub 帳號與 Google Groups 成員資格後,我們就正式上路!先來簡介一下版本控制的基本概念。

首先我們團隊在 GitHub 上有個 libreoffice-tw 組織,旗下有個 OmegaT 倉儲,存放我們用 OmegaT 翻譯的檔案。你只要點右上角的「Fork」(分支),就能在自己的帳號下再製個倉儲,也就是把 libreoffice-tw 的版本弄一份到你的帳號下。這樣一來,你就能自由修改自己倉儲內的檔案,修改完後上傳提交。提交後,你再去看 libreoffice-tw 組織下的 OmegaT 倉儲,就會發現一個「Pull Request」(請求拉入) 按鈕,按下去就能把你的修改回饋給 libreoffice-tw 組織了。

其他的 git 版本控制概念可以在網路上查詢,你也可以將之運用在你自己的版本控制中。

安裝 OmegaT

OmegaT 是我們要拿來翻譯 LibreOffice 指引手冊的工具。OmegaT 支援 GitHub,所以事情再簡單也不過,不用去煩惱 Git 版本控制什麼的,只要會用 OmegaT 就好。

在 Linux 作業系統下通常都已經有現成軟體包放在軟體庫中可以直接使用,例如 fedora 下只要 sudo yum install OmegaT 就完成了 (不過如果遇到開啟專案檔有問題時,大概就是太舊了,還是去抓官方版比較保險,再用 java -jar OmegaT.jar 就能執行);至於 Windows 作業系統的使用者,則請前往官方網站 http://www.omegat.org/zh_TW/downloads.html 下載並安裝。

OmegaT 操作方法

簡介

如果之前沒有用過 OmegaT,使用上可能要重新學習。好在 OmegaT 一打開,左手邊就會出現快速指南,指引你快速上手,請有耐心的看一看,稍微瞭解一下操作方式,這裡就不贅述了,不過我們還是稍微指點幾個重點。


左側的這一大片窗格,就是接下來我們翻譯專案的地方 [點按圖案可以放大檢視]。

你在翻譯指引手冊時,所看到的語法標籤如 <f0>、<i0>、<a0> 這類的東西就是 odt 文件檔的「格式標籤」,要知道這類文件通常都是根據 xml 設計的,因此標籤元素都要符合語法;通常除了少數標籤外,都要有頭有尾,有 <f0> 就有 </f0>,這是要注意的一點。

此外,數字就是區分標籤用的代號,例如同一句如果有 f0、f1、f2,就是有三種不同的格式 (format) 標籤,所以如果因為句子語法要更動內容前後位置,格式標籤也請跟著詞語移動,不需修改數字。例如:

Select <f0>Use LibreOffice dialogs</f0> in <f1>Open/Save dialogs</f1> and, in Linux and Mac OS X operating systems only, <f2>Print dialogs</f2> to display the LibreOffice dialogs on your computer display.

這一句,如果要翻得通順,有些詞語的位置就會變換,翻譯後像是這樣子:

選取 <f1>開啟和儲存的對話方塊</f1> 中的 <f0>使用 LibreOffice 對話方塊</f0>;而 Linux 與 Mac OS X 作業系統中還能以 LibreOffice 對話方塊來顯示 <f2>列印對話方塊</f2> 。

有發現我們只有改位置而已嗎?沒錯,數字是跟著移動而無須重新計數的。

再來,說明一下各個常見元素的意思, f 代表 format 格式,a 代表 a href 超連結,i 代表 index 索引條目。這樣翻譯時就比較有概念了,不會被這些標籤搞得暈頭轉向。

注意:標籤記得要打對,要不然只要遇到有哪個元素忘記關閉,或是打錯字就會導致最後生成的翻譯文件無法開啟喔。當然如果真的不小心打錯也是有方法找出哪裡錯誤的,就是記住翻譯文件開啟時的錯誤訊息,裡面會說明哪個檔案、第幾列有錯誤。再利用解壓縮軟體解開我們製作出來的翻譯後 odt 文件,編修裡面的 content.xml 檔來修正就可以了。

環境設置

再來我們正式來弄我們的翻譯專案吧!


開啟 OmegaT,選擇「方案」>「下載協作方案 (Team Project)」,會看到 Team Project 對話方塊。


  • Repository Type 請選「Git」。
  • Repository URL 請填入你自己 fork 分支的倉儲位置,在倉儲位置的右下角可以看到「HTTPS clone URL」,就填那個 URL 即可。
  • Local Folder 就按下「...」按鈕,自己找自己要放的資料夾吧!舉例來說可以自己創個 git 資料夾,然後在旗下再創個 OmegaT 資料夾,準備放在裡面。

按下「確定」,等候一段時間 (時間長短依網路頻寬與通暢程度而定) 讓 OmegaT Check Out 檢出檔案後,就大抵準備完成。這時 OmegaT 會試圖自動載入資料夾下的專案檔,不過因為我們各語言有分開資料夾放置,所以預期會開啟失敗。

我們只要自己手動開啟 zh-TW 資料夾即可,就能用 OmegaT 來翻譯,OmegaT 會定期/針對特定動作上傳翻譯回去倉儲中,這時只要輸入自己的 GitHub 帳號密碼就行了,OmegaT 會自動提交成果到你設定的倉儲中。

以後要處理翻譯,就打開 OmegaT,點「方案」>「開啟舊方案」或「最近的專案」即可繼續翻譯囉!開啟專案後,會跳出個「專案檔案」的處理視窗,這裡就是你選擇翻譯檔的入口處,可以一直擺著方便你切換,不大需要關閉它。

點按對應的檔案後即可開始翻譯該翻譯檔。

備註

可以點按「方案」>「建立翻譯文件」來製作翻譯後的手冊檔案,接著前往 target 子資料夾,就能看到剛生出來的翻譯文件了。

Pull Request

簡單就是等完成一段落,再去 l10n-tw 組織下的 OmegaT 倉儲請求 Pull Request,這時 GitHub 會自動比較兩倉儲之間的差異,然後提請目標倉儲 Pull 拉入你的變動。按下 Pull Request 後,你再發一封通知訊息到 libotw-general@googlegroups.com 即可!

這就是我們協作 LibreOffice 指引手冊翻譯的流程啦~ 歡迎一起幫忙翻譯吧!

留言