poedit 基本使用教學與 po 檔概念

(以下內文仍為開發中版本。本文秉持開源專案的 Release early, release often 原則先發行開發中版本,後續再以一邊移動一邊開火模式修改。)

許多自由軟體專案都使用 gettext 來生成 po 檔供各國語言翻譯,再將各語言 po 檔收集好輸出成 mo 檔給程式使用。在開始之前,我們必須瞭解一些基本術語。
  • po 檔:portable object,給翻譯者翻譯用的可攜式檔案。
  • mo 檔:machine object,是給機器讀取的檔案。
  • pot 檔:portable object template,即各語言 po 檔的樣板,任何語言的 po 檔生成、更新,都需要利用 pot 來處理。簡單來說,pot 檔是一份空白沒有任何特定語言資訊與翻譯的檔案。

簡介

poedit 是非常好用、易用的 po 檔編輯器,由 Václav Slavík (vslavik) 以 wxWidgets toolkit 開發,可以用於各大作業系統平臺,例如 Linux、Mac OS X、Windows 等。poedit 本身採 MIT 授權,所以任何人皆可以自由使用。

不過開發者基於生活上的經濟考量,從 1.5 版起 poedit 會跳出對話窗詢問說,如果您覺得好用是否可以考慮給予贊助。自 1.6 版起,開發者移去贊助對話窗,改提供需要進階功能者一個 pro 版的升級授權。pro 版根據開源版本加入一些額外功能開發而成,目前僅提供 Windows、Mac OS X 兩平臺的二進位執行檔。

1.6.3 版的 poedit Pro,提供的額外功能包括:個人使用支援、字數統計、Wordpress 主題與外掛翻譯等,未來也會持續加入其他功能,有興趣者可以考慮購買,購買者可以持續擁有 1.X 系列的 Pro 版升級權。

官方網站可以直接下載到 Windows 與 Mac OS X 的 pro 版執行檔,只不過若沒有購買 pro 版啟動金鑰的話,會以一般版本執行。

官方 Pro 版介紹網頁:http://www.poedit.net/pro/ 

特色

介面簡潔、支援翻譯記憶、支援註解編輯、生成 mo 檔等等。

下載

官方下載頁面:http://www.poedit.net/download.php

初次設定

由於 po 檔中的標頭位置會紀錄目前翻譯者資訊,因此建議提供個人姓名、電子郵件,除了當作貢獻記錄外,若有翻譯上的錯誤也方便使用者聯絡;或是當個人無法繼續維護翻譯時,若有其他人想接手也有聯絡管道可以請教。

翻譯檔設置

推薦設置

預設情況下,poedit 會將翻譯條目根據譯文翻譯狀態排序,先顯示未翻譯,再顯示模糊翻譯 (即未定翻譯),最後顯示已翻譯 (即確定翻譯)。

但以此方式翻譯時,會有無法前後參照的狀況。由於開發者撰寫軟體時,通常同個情境下的介面字串都會在附近,因此改以檔案本身順序排序,而且不優先顯示未譯條目較佳;此項設定對於大型軟體專案更是有用 (除非該專案匯出 po 檔時特意重新排序過字串順序則無用)。

至於優先顯示未翻譯條目,則對於那些翻譯者很有把握每條訊息所使用之術語時很有用,因為不必參考情境就能即刻處理未譯部份。

設置方式:
點選 [檢視] > [按照檔案順序排序]
取消勾選 [先顯示未翻譯的條目]

介面介紹

必用快捷鍵

Ctrl+Shift+上箭頭:前往上一個未完成條目
Ctrl+Shift+下箭頭:前往下一個未完成條目

Ctrl+上箭頭:前往上一個條目
Ctrl+下箭頭:前往下一個條目

Ctrl+Enter:完成並前往下一條目

Ctrl+F:尋找
Ctrl+H:尋找與取代

Ctrl+U:標記為模糊翻譯待校閱

翻譯記憶

許多進階翻譯工具都有翻譯記憶 (Translation Memory) 功能,可以將新見訊息與曾譯訊息比對,如果內容近似時則提供曾譯給翻譯者參考,這對於大型軟體專案非常有用,因為翻譯者總是人,會忘記之前翻譯的語氣、術語;加上若有大量未譯部份時,手動查找也是翻譯者的一大障礙,翻譯記憶無疑是翻譯者的最佳助手。

這裡所使用的 poedit、KDE 專案提供的 Lokalize、Qt 專案提供的 Linguist、網路翻譯服務平臺 Transifex 等皆支援翻譯記憶;有的甚至提供詞彙表 (glossaries),讓翻譯者定義特定術語或字眼該如何翻譯,每當該術語或字眼出現時,則從詞彙表中取用該定義以提醒翻譯者,可以大幅提昇翻譯前後的一致性。

那麼該如何讓 poedit 記憶先前的翻譯呢?
  1. [檔案] > [偏好設定] > [翻譯記憶] 分頁,點按「從檔案學習」按鈕,接著會跳出翻譯匯入視窗。
  2. 在視窗中點選所要加入的翻譯檔,可以按住 Ctrl 按鍵作為修飾鍵以點選多份 po 檔。
  3. 選擇完後,poedit 就會開始匯入翻譯,作為往後翻譯的翻譯記憶。
「從來源更新時查閱翻譯記憶」 選項,即是當你用 pot 檔更新 po 檔時,通常會有加入新字串、移除過時字串的動作。此時 poedit 可以自動對新字串查找翻譯記憶,並填入舊翻譯標記模糊供翻譯者後續修改。

翻譯檔更新

po 檔可以利用 pot 來更新內容,添加新增的字串、移去過時的字串等。

一般各自由軟體專案都會自動更新 po 檔,所以翻譯者只要從翻譯網站或源碼倉庫中抓下最新的 po 檔即可省去手動更新的麻煩。不過有時手動下載 po 檔後,許多字串還沒翻譯完,官方就更新了 pot 檔與各 po 檔,這時如果上傳的系統無法自動更新匯入的檔案,就會把官方的 po 檔覆蓋,或者是產生衝突需要解決。因此如果知道官方已經更新過 pot 檔,翻譯者的最佳實務就是自己手動更新好再上傳回去。

以 blender 的翻譯為例,其 pot 檔位置放在 svn 控管的源碼倉庫中,除了用 svn 指令列更新外,也提供瀏覽器直接下載。

網址:https://developer.blender.org/diffusion/BTS/browse/branches/blender.pot
按下右方「View Raw File」可以下載原始的 pot 檔。

用 poedit 開好要更新的舊 po 檔後,按下 [編目檔] > [從 pot 檔更新] 後,選擇這份 pot 檔。

開啟後 poedit 會彈出「更新摘要」,顯示新的條目有幾條,過時的條目有幾條。接著按下 [確認] 就能得到更新後的 po 檔,在此同時,poedit 會利用先前的翻譯記憶來自動為你翻譯還未確定的,或是完全空白的條目 (如果你有勾選「從來源更新時查閱翻譯記憶」的話),並且標記為「模糊」翻譯供你手動確認。


進階資訊

留言

這個網誌中的熱門文章

直行橫列,以及 line (列/行), column (欄), row (列)

正體中文、繁體中文?

Permission 權能/取用權; Permission denied 取用遭拒; Ask for permission 請求權能/取用權; Don't have the right permission to 沒有權能/無權