3. FreeBSD 文件的翻譯方法
原先的 FreeBSD 文件 (書籍與文章) 翻譯方法是直接打開英文版的 xml 檔案,把英文的文件內容直接翻
譯成中文,然後要注意中英文版本號的對應,並且要小心檔案中的 xml tag ,不要不小心修改或是翻譯
了這些 tag,作法如圖。這樣的作法會造成翻譯者的困擾,沒辦法專心在翻譯文件內容本身。
舊方法除了麻煩和容易出錯外,最大的問題是無法和英文版的進度同步,要檢查英文版是否已經再度修
訂過,是否中文翻譯要重新翻譯,要花很多心力比對。
還好 2015 年 8 月,在 FreeBSD 文件計劃工程團隊的努力下,改用 GNU gettext 翻譯系統,原文內容
會被摘取到一個 PO 檔,翻譯者只要用 PO 檔編輯器,打開 PO 檔,就可以專心翻譯了,不用直接處理
xml 檔。
現在的翻譯流程是:
1.找出您要翻譯的書或是文章,位於 doc/head/zh_TW.UTF-8/,books 子目錄是書籍,articles 子目錄
是文章。htdocs 是網站內容,不在本文討論範圍。翻譯前,請先問問看是否有其他人正在翻譯您想翻譯
的部份,以免重複打造輪子,讓您做了白工。
2. 建立新目錄,修改 Makefile:
看他有沒有 PO 檔,檔名會是 zh_TW.po。如果沒有 PO 檔,表示該文章目前還是使用舊翻譯方法,
那就需要先修改 Makefile,然後產生 PO 檔。
以翻譯 leap-second 文章為例,要在繁體中文的目錄建立 leap-second 子目錄,然後把英文版的
Makefile 複製過來。
% cd ~/doc/zh_TW.UTF-8/articles/
% svn mkdir leap-seconds
% svn cp ~/doc/en_US.ISO8859-1/articles/leap-seconds/Makefile ~/doc/zh_TW.UTF-8/articles/leap-
seconds/
因為 articles 的檔案結構比較單純,不需要修改 Makefile。如果是 books 類,就要修改 Makefile,將其
4. 中的 SRCS 修改成只產生一個 book.xml:
SRCS= book.xml。
3. make po :
如果已經有 PO 檔的話,您可以執行 make po 指令,讓 PO 檔更新與英文版同步,接著就用 PO
檔編輯器,打開 PO 檔,開始翻譯!
4. make tran:
翻譯完成後,執行 make tran,產生 article.xml。可以再執行 make FORMATS=html,產生
html 檔,用瀏覽器來檢視翻譯成果。
5. Submit:
• 將 Makefile、article.xml、zh_TW.po 加入版本控制系統:
% svn add Makefile article.xml zh_TW.po
A Makefile
A article.xml
A zh_TW.po
• 設定 svn:keywords property FreeBSD=%H,讓 $FreeBSD$ 可以被版本控制系統展開替換。
% svn propset svn:keywords FreeBSD=%H Makefile article.xml zh_TW.po
property 'svn:keywords' set on 'Makefile'
property 'svn:keywords' set on 'article.xml'
property 'svn:keywords' set on 'zh_TW.po'
• 設定 MIME type、UTF-8 character set 和 fbsd:notbinary,才不會讓版本控制系統將檔案誤認為二
進位檔。
% svn propset svn:mime-type 'text/x-gettext-translation; charset=UTF-8' zh_TW.po
property 'svn:mimetype' set on 'zh_TW.po'
% svn propset fbsd:notbinary yes zh_TW.po
property 'fbsd:notbinary' set on 'zh_TW.po'
% svn propset svn:mime-type 'text/xml; charset=UTF-8' article.xml
property 'svn:mimetype' set on 'article.xml'
% svn propset fbsd:notbinary yes article.xml
property 'fbsd:notbinary' set on 'article.xml'
• 建立 diff 檔
% cd ~/doc
% svn diff zh_TW.UTF-8/articles/leap-seconds > /tmp/leap-seconds.diff
提交您翻譯好的 PO 檔。目前官方尚未有一個翻譯伺服器可以讓貢獻者提交或是翻譯協作 PO 檔,doc 工
程團隊有這樣的想法和計劃,但是還在討論中。所以提交的管道目前有:
a. 官方的 Bugzilla bug report 系統。
b. https://reviews.freebsd.org/ 網站,請註冊一個帳號來提交,不過目前台灣沒有 active doc
committer ,所以 reviewer 只能 tag 台灣的 src/port committer。
c. Email 給我,我幫您提交也可以。
因為 FreeBSD 文件計劃才剛開始用 GNU gettext 系統,目前各語言的翻譯幾乎都尚未轉換成 PO 檔翻
5. 譯,書籍部份目前只有西班牙文的 FAQ 和繁體中文的 Porter 手冊已轉換使用 PO 檔翻譯,所以尚未使
用 PO 翻譯的文件,需要經過一個轉換的步驟。
PO 檔編輯軟體
1.Poedit
非常廣泛使用的 PO 檔編輯軟體,用 wxWidget 寫的,因此可以跨平台,橫跨所有 Windows 平
台,XP/vista/7/8/10 都可以用,好吧,不開玩笑了,Mac OS X,Linux 和 FreeBSD 也都可以用。
2.Lokalize
KDE 計劃旗下的 PO 檔編輯軟體,在 FreeBSD 和 Ubuntu 使用沒有問題,不過他是 Qt 的程式,
如果你是使用 gcin 或是 HIME 中文輸入,在 Ubuntu 16.10 以後,Qt 5 的程式完全無法用 gcin 做中文
輸入,短時間內也沒有解決跡象。如果你用別的輸入法框架,可能就不會有這個問題。可以自定義快捷
鍵
3.gTranslator
GNOME 計劃旗下的 PO 檔編輯軟體,在 FreeBSD 和 Ubuntu 使用沒有問題,但是他的將原訊
息複製到翻譯內容這個功能的快捷鍵是 Crtl-space,和 gcin 切換中英文輸入法的快捷鍵衝突,而且他無
法自訂快捷鍵,這是一大缺點。
4.gted
http://www.gted.org/
他是 Eclipse 的 plugin,如果有用 Eclipse 的人,可以試看看,沒用 Eclipse 的話,為了編輯 PO 檔而安
裝,就有點太龐大了。
5.Virtaal
也是一個跨平台的 PO 檔編輯軟體,python 寫的,Windows,Mac OS X 和 Linux 都可以執行。
6.Vi/Vim ( po.vim )
直接在 Vi/Vim 編輯 PO 檔也是可以的,如果你就是用 Vi/Vim 編輯 PO 檔,有個受到 Emacs
PO mode 啟發的 plugin 叫 po.vim,也可以試用看看。
7.GNU Emacs ( PO mode )
什麼都可以做的 GNU Emacs 當然有支援編輯自家的 GNU gettext PO 檔囉,有個 PO mode 專
門讓你編輯 PO 檔更順手。
以上提到的 PO 檔編輯器遇到的問題,很有可能隨著版本的演進已經有人將 bug 修好了,所以
您可以嘗試使用看看,不一定會遇到我寫本文章時所遇到的問題。
許多 open source project 有用 translation server 來進行線上的 PO 檔翻譯協作,FreeBSD doc
team 尚在討論架設 translation server 的問題,所以現階段是沒有 translation server 可以使用,因此多
人協作翻譯同一個 PO 檔還需要協調一下每個人要翻譯的部份。
目前台灣的 FreeBSD 文件翻譯進度:
books 類:
1. Handbook 正在轉換到 PO 檔翻譯,感謝 cwlin 兄完成這浩大的工程。
2. Porter's handbook,已經轉換到 PO 檔翻譯,已翻譯內容,應該符合英文版這半年來的進度,但未翻
譯的部份還很多,需要您的協助。
3. FDP primer,已經轉換到 PO 檔翻譯,已翻譯內容,應該符合英文版這半年來的進度,但未翻譯的部
6. 份還很多,需要您的協助。
4.FreeBSD Developers' Handbook 尚未轉換到 PO 檔翻譯,內容為 2007 年以前的舊資料,全部都待
翻譯。
5. FAQ 尚未轉換到 PO 檔翻譯,因內容年久失修,連結已經被拿掉了,待整理與翻譯。
article 類:
1. 只有 leap-second 使用 PO 檔翻譯,這是當初翻譯系統轉換到 PO 檔翻譯的練習範例。
翻譯注意事項
• 保留 XML tag 不要翻譯,例如這個 NTP 請不要翻譯:
If <acronym>NTP</acronym> is not being used
• 保留字串前後的空白
• 有 PGP key 的文章不要翻譯,這些 PGP key 是 script 產生的,不是手動輸入的,doc team 還在研究
如何處理這些文章的翻譯問題。
• $FreeBSD$ 字串要特別處理,要將金錢符號替換為&dollar,以免這個字串會被版本控制系統展開
替換:
$FreeBSD$
每個單字的字義都要翻譯到嗎?:
不需要逐字翻譯,只要中文能表達使用方法及步驟即可,刪去一些英文字或改變順序沒關係。因為中英
文語法不同,如果每個字都翻譯會變很怪。
謝文珊,實踐大學應用英語系助理教授
每個單字的字義都要翻譯到嗎?:
通常對具體事務、概念、或學理的翻譯,原文就好像油畫,譯者要把這油畫畫成水彩畫,然後讀者還看
得出來原作者要說些甚麼。
從具體物,變成油畫,再轉成水彩,一定有誤差,但重點是讀者是否能從水彩想回去原物。
整個原作要全部熟讀完之後,再來翻譯的工作嗎?:
我一般是一章大略讀一次,然後一段一段譯。當然,技術上是一句一句譯。不過一整段的內容要先有個
頭緒再下筆比較能用詞準確。
遇到真的不懂的怎麼辦?:
google、或是詢問原作者。
碰到無處可問的時候,只好打安全牌,弄個比較不會錯的譯法,然後附上原文。
林茂昌,知名財經、翻譯作家
參考資料
• https://theinitium.com/article/20160410-changemaker-font/
• FreeBSD 文件計劃入門書
• http://wonkity.com/~wblock/translation/,wblock