4. 舊方法除了麻煩和容易出錯外,最大的問題是無法和英文版的進度同步,要檢 英文版是否已經再度修查
訂過,是否中文翻譯要重新翻譯,要花很多心力比對。
還好 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-
5. seconds/
因為 articles 的 案結構比較單純,不需要修改檔 Makefile。如果是 books 類,就要修改 Makefile,將其
中的 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:mime-type' 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:mime-type' 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
6. 提交 翻譯好的您 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 翻檔
譯,書籍部份目前只有西班牙文的 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 )
7. 直接在 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 翻譯,已翻譯內容,應該符合英文版這半年來的進度,但未翻譯的部檔
份還很多,需要 的協助。您
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
• 保留字串前後的空白