移至主內容

LibreOffice 翻譯 - 離線翻譯 - 進階

Submitted by LibreOffice 正體中文社群 on
LibreOffice 翻譯採用的 Pootle 系統是基於網路的,此外一次只能處理一個條目,每次要翻譯時都要等候遠端回應回傳網頁過來,所以例如每次的 LibreOffice 新版一旦開放翻譯,由於翻譯量較大,總翻譯時數有好一段時間都花在等候伺服器回應上,所以這時離線翻譯就能解決這個困境,讓我們快速翻譯如風。

Poedit

離線翻譯需要翻譯工具,而 LibreOffice 採用一種副檔名為 po 的翻譯檔儲存它內部使用的翻譯,網路上有個處理 po 檔的好用工具,叫做 Poedit。我們就先來下載 Poedit 吧!

先用網頁瀏覽器前往 http://poedit.net/ ,看到下方綠色的「Free Download」按鈕按下後,下載安裝程式回來,依據一般安裝方式來安裝到電腦中。

註:Linux 使用者依據各散布版不同,可能有打包最新 1.7 版,也可能沒有,有的話可以直接透過軟體管理系統安裝。以下內容描述皆為 1.7 以上版本適用,若你使用的 Linux 散布版尚未提供 1.7 以上版本,請自行編譯使用。

第一次啟動時可能會問你是否要自動更新 Poedit,請依個人喜好選擇。

建議按下「檔案 > 偏好設定」,在「一般」分頁下設定譯者資訊,也就是你的個人資訊,包括姓名與聯絡用電子郵件。這裡的譯者資訊是供程式開發者聯絡之用,請根據個人想法填寫。

裝好 Poedit 後,我們就來繼續解說怎樣利用 Poedit 作離線翻譯吧!

從 Pootle 下載翻譯檔

我們首先進入 The Document Foundation 為 LibreOffice 設定的 Pootle 翻譯平臺,帳號登入後進入「漢語(臺灣)」語言內,可以看到我們能翻譯的各個專案。(點圖案可放大觀看)


我們下方以離線翻譯「LibreOffice 4.4 - Help」專案為範例來說明,先點進去專案中。


畫面右側有很大字的「動作」標題,下方有個「離線翻譯」,請點按它後方的「下載 (.zip)」,將之下載回電腦中後解壓縮到獨立的資料夾下,資料夾名稱建議直接用 zip 檔的名稱即可,像是 libo_help-zh_TW。

解壓縮後我們還沒要馬上處理,因為我們還需要傳喚得力助手來幫忙才行,那就是 Poedit 的翻譯記憶功能。

建立 Poedit 翻譯記憶

由於 LibreOffice 4.4 - Help 屬於新版全都尚未處理,除了出現新的條目外,也有許多以前已經翻譯過的地方經過些微而需要翻譯,因此翻譯過的內容比 LibreOffice 4.3 - Help 還不完整,所以這裡我們就拿舊版的 LibreOffice 4.3 -Help 作為記憶訓練用。

現在我們將 Pootle 的網頁切回上一頁,點按「LibreOffice 4.3 - Help」後,去下載離線翻譯用的 zip 檔,然後一樣解壓縮到獨立的資料夾下,資料夾名稱建議直接用 zip 檔的名稱即可,像是 libo43_help-zh_TW。

打開 Poedit,我們來讓 Poedit 從過去的翻譯中學習吧!從選單列中點選「檔案 > 偏好設定」,選擇「翻譯記憶」分頁標籤,再點按「從檔案中學習...」來選擇要學習的 po 檔。

注意:記得要學習的是舊版的  libo43_help-zh_TW 而非新版的 libo44_help-zh_TW,雖然選錯也沒關係,只是可從新版檔案學習到的翻譯數量沒像舊版那麼多罷了。

由於 Poedit 尚未支持遞迴學習整個資料夾下的所有 po 檔,因此目前只能一次選一層目錄下的全部 po 檔來學習,再逐次將各個目錄的 po 檔都學習起來,你會看到儲存的翻譯會越來越多。還好開始的翻譯記憶是一次性的,只要設定完,往後就無須再煩惱,因為 Poedit 會在儲存 po 檔時自動記憶翻譯,也會順便將舊的記憶更新。所以花一點時間後,我們就將整個 LibreOffice 4.3 版的說明文件翻譯都記憶起來了。

使用 Poedit 作離線翻譯

接下來我們進到「libo_help-zh_TW」資料夾中來翻譯 LibreOffice 4.4 版的說明文件,並且將 Pootle 網頁回到上一頁,重新進入「LibreOffice 4.4 -Help」的專案中,查看目前的翻譯進度,來判斷我們需要翻譯的檔案有哪些。


例如,我看到 swriter.po 目前需要翻譯的原文字數為 16 個字,所以我就打開電腦中的 swriter.po 檔案來翻譯。


Poedit 的介面看起來就是這樣,最下方那個橫列會寫出目前的翻譯進度,例如這裡是「已譯:248/251 (98%) .剩餘:3」。這裡列出的數字與 Pootle 不同,是指需要翻譯的條目數而非原文的字數,已譯 248/251 (98%) 就是指這個檔案全部有 251 個條目要翻,目前已經翻了 248 個,進度約 98%,還剩下三個條目。那我們就來處理這三條還未完成的項目吧!

我們就來看看先前訓練的翻譯記憶是否能派上用場好了,從選單列中點選「編目檔 > 從翻譯記憶填入缺少的翻譯」,會彈出個對話方塊問你一些問題。


這裡是否要「僅只填入完全相符項目」依個人喜好作選擇即可。因為 Poedit 預設情況下只要比對到相似的,不管相似程度多高都會填入,但有可能翻譯記憶中只有一個詞語與現在的翻譯相符,所有差距十萬八千里,反而要刪改一堆,甚至整句刪掉直接重新翻譯還更快的。

若翻譯多年經驗較多者,通常都能快速處理全新翻譯,所以比起花時間刪修翻譯記憶,更可能偏好勾選此項目以加速翻譯。

至於第二個「不要將完全符合的項目標記為模糊」,則盡可能不要選。那麼何謂「模糊」呢?即尚未明瞭原文切確意思,暫時先模糊翻譯起來,還未正式確定下來的翻譯。

選擇好後按下 「填入」,等 Poedit 填完就會看到如下的提示。


但究竟這三條未完成項目在檔案的哪裡呢?該不會要自己在那邊拉旁邊的捲動條去找吧?別擔心,Poedit 提供貼心的功能讓你直接前往尚未翻譯的條目。從選單列選取「前往 > 下一條未完成」,或是按快捷鍵 Ctrl + Shift + 下鍵,就會跑到第一個未完成項目去。



可以看到 Poedit 已經幫我為這條「Image Bar」的條目填好「影像」二字作為模糊翻譯了。右側的「譯文建議」,有的是來自 Poedit 從網路上取得的公用翻譯記憶庫,有的是來自 Google 或 Microsoft 等公司的機器翻譯,有的則是自己電腦訓練出來的翻譯記憶。你也可以直接滑鼠點選,或按上面所寫的快捷鍵來使用或甚至刪改。

這裡將「Image Bar」翻譯為「影像列」後,Poedit 因為翻譯有所更動,會自動取消模糊成為確定翻譯。這時可以再前往下一個未定翻譯,一樣可以點選「前往 > 下一條未完成」,或者是點選「前往 > 完成並移至下一條」;當然也可以用快捷鍵 Ctrl + Shift + 下鍵,或者是 Ctrl + Enter。

直接注意的是「完成並移至下一條」/「Ctrl + Enter」會將模糊標記取消,成為確定翻譯,因此若只是想要單純前後瀏覽未完成項目的話,請使用「下一條未完成」/ Ctrl +Shift + 下鍵 或「上一條未完成」/ Ctrl + Shift + 上鍵 的功能。請只在「翻譯完」未完成條目之後,才使用「完成並移至下一條」/ Ctrl + Enter。

只要善用翻譯記憶與快捷鍵,你的翻譯速度會大幅提昇,遠勝過操作回應緩慢的 Pootle 網頁,你將感受到前所未有且無與倫比的通暢。

接下來翻譯處理告一段落後,想要儲存檔案,可以直接點按工具列中的「存檔圖示」,或是按下快捷鍵 Ctrl + S。此時 Poedit 會自動檢查翻譯是否有格式上的錯誤,例如變數格式是否與原文一致、是否結尾缺少 \n 開新列字符等等,如果有錯誤會彈出警告提示,請你修正。

結果看到以下訊息。


看到錯誤也別太慌張,因為有時是我們真的犯錯,但有時不是,需要用專業去判斷。這裡 Poedit 說「譯文中發現 1 個問題。」而且如果翻譯的條目有格式上的問題會幫我們標記成「紅色」,這樣就能讓我們快速瀏覽找到。


好,我們懂了按下「確定」,又跳出個訊息了。


喔喔!原來是檔案的標頭中,有個「Language-Team」欄位還沒改過,一直都還是初始的預設值啊!這是因為 Pootle 翻譯平臺在輸出 Po 檔時並沒有幫我們填入這項資訊,為什麼呢?因為 Pootle 翻譯平臺並不需要用到這項資訊,所以除了 Pootle 系統中沒請各語言團隊設定相關資訊外,輸出 Po 檔時也不會填。

你當然可以做出對應修改使這份 Po 檔具有完整的 Language-Team 欄位,不過既然你改了 Pootle 也不會用,那我們還是省點麻煩忽略它吧!當然如果想要改也是無所謂的。你可以從選單列中點選「編目檔 > 屬性」來填寫這兩個欄位,分別是「團隊」與「團隊的電子郵件」,只要不是預設的「LANGUAGE」團隊與「LL@li.org」電子郵件,就不會再提示這項錯誤了。

要注意的是,這裡的「1 個問題」就是這個問題,所以我們可以忽略不管。但如果有「2 個問題」的時候,請真的去看條目清單中是否有標紅的地方,確實訂正再重新儲存一次。

儲存時 Poedit 會自動生成 mo 檔,mo 檔是將 po 檔編譯給機器看的檔案。我們待會上傳檔案時要傳的則是原始的 po 檔。

上傳翻譯

我們將畫面切換回 Pootle 網站,將這份翻譯告一段落的翻譯檔上傳吧!上傳有兩種方式,一種就是單一檔案上傳,另一種就是將翻譯好的 po 檔資料結構重新包成 zip 檔整個上傳。通常我們一次都只翻譯一個檔案,所以翻好就直接將該檔案上傳即可。

若每次翻完一個檔案後都要重新包成 zip 檔會非常麻煩;若全部檔案翻完再包成 zip 檔上傳,又會讓下載到完成這之間的處理時間過太久,在這段處理期間,可能早就有人多翻譯了哪些,或是上傳了新的檔案。因此以 zip 檔上傳較不切實際,僅在單人翻譯的專案較為實用。以下只介紹單一檔案上傳的方法。

我們剛剛是看到 swriter.po 需要翻譯後才決定翻譯它的,因此我們要將網頁切換到與之相同的資料夾下,也就是說看得到 swriter.po 的資料夾下。


確定有看到 swriter.po 之後, 將畫面往上拉動,看到右上角的「動作」標題下,也就是之前下載翻譯檔的地方,有個「上傳」,就點按這裡上傳。



可以看到畫面出現上傳的對話方塊,請按「瀏覽…」選取你所翻譯的 po 檔,這裡範例為「swriter.po」,記得小些別選到編譯過後的 mo 檔喔!下方的單選項目,則依情況所需選擇,我們稍微解釋一下。

首先,預設選擇的「與原有檔案合併,並將歧義轉為建議」,意思是如果說你修改的翻譯中,若有部份是以前已經確定過的翻譯,也就是新 po 檔與舊 po 的確定譯文有出入的時候,不會將新譯內容直接蓋掉舊譯內容,而是維持舊有的翻譯不動,將新譯內容列到該條目的翻譯「建議」中,供後續審閱。如果只是一般新增原先空白的翻譯的話,都建議採用這個選項。注意:這個功能只有開放給對於 LibreOffice 翻譯較為熟練的少數譯者,所以不見得所有人都可以使用這個功能。

至於「若已存在則覆寫原有檔案」,則是指用新檔案整個覆蓋掉舊檔案,不管之間有無出入皆是如此。這對於大量修改舊有翻譯,或是訂正不良翻譯時很有用,也應只在此種時刻使用,以免不小心蓋掉就前不久某人的新翻譯。注意:這個功能只有開放給對於 LibreOffice 翻譯較為熟練的少數譯者,所以不見得所有人都可以使用這個功能。

「加入所有新的翻譯做為建議」,是將所有你的翻譯都列為翻譯建議,如果你是剛接觸自由軟體翻譯還不熟練,或是對於自己的翻譯還不具有信心,請選擇此項目。

最後的「上傳到」部份,可以選可以不選。點選下方的「--------」 會彈出這個資料夾下的所有檔案清單,讓你選取對應的檔案;不選的話,系統會直接上傳檔案,如果剛好有相同檔案,就會依剛剛選擇的處理方式來處理檔案,如果沒有相同的檔案,會幫你新建你上傳的檔到資料夾中。

等等!幫你新建資料夾中沒有的檔案?!那是不是代表你進錯資料夾了!所有才沒找到相同的檔案!沒錯,偶爾會發生這種事情,尤其是瀏覽器開了多個分頁就容易點錯而碰到,所有上傳檔案時請別恍神囉~ 那真的多上傳了檔案又該怎麼辦呢?來把多的刪掉吧!

刪除誤傳的檔案

假設我剛剛不小心點到了「swriter」資料夾,在裡面上傳了剛剛最上層資料夾內的「swriter.po」檔案。


哎呀,怎麼一不小心就把 swriter.po 傳到「swriter」資料夾內!?雖然說看起來很合理,但實際上好像不是這樣才對。XD

這時候點一下「swriter.po」進入連結,記得是要點檔名才能管理檔案喔!不是後方的數字,點了數字會跑去翻譯介面展開不必要的翻譯旅程喲!


進來 swriter.po 的檔案管理介面後,右方「動作」標題下有個「管理」,管理後方有個「刪除此檔案…」,點下去。


Pootle 系統會問你是否真的知道自己在幹什麼?一旦確定就會刪掉無法復原喔。按下「確定」就能刪掉了。注意:這個功能只開放給少數熟稔 LibreOffice 的翻譯者,如果需要刪除檔案,可以寫信到 libotw-general@googlegroups.com 告知管理員處理。

當然並不是每次傳錯資料夾都自己知道的,通常都是因為開太多分頁不小心點錯資料夾的居多。那要怎麼檢查?

檢查檔案是否有傳錯資料夾

請開個新分頁給 LibreOffice 的 Pootle 翻譯平臺首頁,看到右方的「專案」標題下,點按對應的專案,例如我正在處理「LibreOffice 4.4 - Help」,就點按同名專案。

點開後會看到各語言的列表,看各個語言的「合計」欄位數目是多少,再看我們漢語(臺灣)的數目是多少。由於各個語言都有可能跟我們一樣不專心而讓檔案傳錯位置,使原文字數有所差異,因此我們要看的是「最多人一樣的合計數目」。

我們可以點「合計」 兩次來依據合計數目排序,由高排到低 (點一下就是由低排到高)。就不難發現最多人一樣的合計數目是「443576」。


接下來,我們就隨便找個原文字數為「443576」的語言去看各個資料夾與檔案的字數是多少,與漢語(臺灣)相比對看看,只要肯用心,肯花時間去比較「合計」欄位,就能找到究竟是不小心傳到哪個資料夾下了。

建議在大量翻譯檔案又上傳回 Pootle 平臺後,只要告一段落就檢查一下有沒有傳錯位置,以維持資料結構的正確性。

以上這些就是離線翻譯時所需學會的技巧。

深入瞭解