SlideShare a Scribd company logo
1 of 10
Translation of The FreeBSD Documentation
FreeBSD 文件翻譯計劃
Ruey-Cherng Yu
raycherng@gmail.com
2016.7.30
摘要 Abstract
自己的文件自己翻!
FreeBSD 的一個特色就是擁有許多高品質的技術文件,還有一個嚴謹有組織的文件團隊,但是這些文件
的最新版都是英文版的,大部分現有的正體中文翻譯已經是八年前的資料,甚少參考利用的價 ,以致值
於這些高品質文件在台灣的使用者間曝光度有限,非常可惜。
去年八月,FreeBSD 文件計畫改用 GNU gettext 翻譯系統,使得翻譯文件的流程更加便利。本次講題
將簡介 FreeBSD 文件計畫,翻譯流程,以及正體中文翻譯計畫的現況,希望能喚起大家的熱情,參與正
體中文翻譯計畫,讓更多的台灣使用者受益。
FreeBSD 文件計畫
FreeBSD 的一個特色就是擁有許多高品質的技術文件。這些文件分成三大類:
1.書籍和文章 (books and articles)
2.網站
3.manual pages
書籍和文章是用 Docbook 標記語言所寫,書籍部份,內容最多,最知名重要的就是 FreeBSD 手冊
( FreeBSD Handbook ),已經被翻譯成超過 20 種語言。其他還有 Porter 手冊,文件計劃入門書,開發
者手冊,FAQ 等。
Manual pages 的格式是 mdoc,除了英文以外,目前只有日文翻譯。
網站大部份是 XSLT,有些網頁是 CGI 產生的,還有部份網頁是直接以 HTML 寫成。從官方網站首頁
右上方,有八種語言的網頁連結,目前沒有繁體中文。
本文主要是說明書籍和文章類的繁體中文翻譯。
為什麼要有繁體中文翻譯?
中文翻譯的 FreeBSD 文件可以降低大家接觸和進入 FreeBSD 的門檻,讓更多不同程度的使用者都能接
觸到這個優秀的作業系統,這樣對有興趣的使用者有利,也對 FreeBSD 計劃有利,能創造雙贏。
現在愈來愈多人可以讀得懂簡體中文,為何不從簡體中文版文件,直接簡轉繁 ?因為簡體中文的用詞呢
還是有許多和台灣慣用語有很大的差異,例如:
高端 智能 優化 高清 編程 創客
以上的詞彙是用繁體中文寫的, 看得懂 ? 可能愈來愈看得懂了,甚至覺得理所當然,因為我們自您 嗎 您
己的用詞已經漸漸被取代了。
以下是台灣的用詞:
高階 智慧型 最佳化 高解析度 程式設計 自造者
語言本來就會常常受到不同面向的影響而改變,只是如果台灣本來就有自己的用語,甚至某些辭彙的中
文翻譯最早就是由台灣所翻譯的,那只要我們能 積極地將文件翻譯成繁體中文,並且使用台灣的辭彙夠 ,
就能 繼續保有我們本土的特色與文化。香港有一群不會電腦的大叔們甚至努力學會使用造字軟體,希夠
望保有香港本土的特有字體 !呢
FreeBSD 文件也有簡體中文的版本,可能會有人建議像維基百科的翻譯作法一樣,用共同的中文翻譯,
再把中國和台灣不同的用詞用台灣的辭彙替換掉。但是簡體中文版也是和英文版的文件的進度有許多落
差,所以除了用詞問題,簡體轉繁體仍然有不可行之處。如果 願意的話,參考簡體中文文件,並對照您
英文版最新的原文,將他翻譯成繁體中文版,那倒是個可行的辦法。
再舉個例子,”FreeBSD 操作系統與服務器優化”, 看的習慣 ? 不習慣的話,加入我們吧!您 嗎
FreeBSD 文件翻譯的工具書
FreeBSD 文件計劃入門書:
http://www.freebsd.org/doc/zh_TW/books/fdp-primer/
對於整個 FDP 的說明非常詳盡,不懂的就去那裡 詢吧。查
文件翻譯工具鏈
使用 port 安裝 textproc/docproj/ 和 devel/gettext-tools/或是安裝套件:
# pkg install docproj gettext-tools
取得 doc/tree
% svn checkout https://svn.FreeBSD.org/doc/head ~/doc
將 FreeBSD 文件抓到家目錄下的 doc 目錄,可以看到 doc 目錄的內容如下:
每個目錄的命名方式是依照 『語言代碼_國碼.編碼』,因此繁體中文的文件是位於 zh_TW.UTF-8。
~/doc/zh_TW.UTF-8 目錄內有:
articles
books
htdocs
Makefile
Makefile.inc
share
articles 和 books 底下又有子目錄,每個子目錄都是不同的文章和書籍。
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,將其
中的 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
提交 翻譯好的您 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 )
直接在 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
• 保留字串前後的空白
• 有 PGP key 的文章不要翻譯,這些 PGP key 是 script 產生的,不是手動輸入的,doc team 還在研究
如何處理這些文章的翻譯問題。
• $FreeBSD$ 字串要特別處理,要將金錢符號替換為&dollar,以免這個字串會被版本控制系統展開
替換:
&dollar;FreeBSD&dollar;
每個單字的字義都要翻譯到 ?嗎 :
不需要逐字翻譯,只要中文能表達使用方法及步驟即可,刪去一些英文字或改變順序沒關係。因為中英
文語法不同,如果每個字都翻譯會變很怪。
謝文珊,實踐大學應用英語系助理教授
每個單字的字義都要翻譯到 ?嗎 :
通常對具體事務、概念、或學理的翻譯,原文就好像油畫,譯者要把這油畫畫成水彩畫,然後讀者還看
得出來原作者要說些甚麼。
從具體物,變成油畫,再轉成水彩,一定有誤差,但重點是讀者是否能從水彩想回去原物。
整個原作要全部熟讀完之後,再來翻譯的工作 ?嗎 :
我一般是一章大略讀一次,然後一段一段譯。當然,技術上是一句一句譯。不過一整段的內容要先有個
頭緒再下筆比較能用詞準確。
遇到真的不懂的怎麼辦?:
google、或是詢問原作者。
到無處可問的時候,只好打安全牌,弄個比較不會錯的譯法,然後附上原文。碰
林茂昌,知名財經、翻譯作家
參考資料
• https://theinitium.com/article/20160410-changemaker-font/
• FreeBSD 文件計劃入門書
• http://wonkity.com/~wblock/translation/,wblock
• FreeBSD 中文文件計劃,chinsan, COSCUP 2007
• FreeBSD 中文文件計劃,chinsan, COSCUP 2007

More Related Content

What's hot

Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture lusecheng
 
Language summary
Language summaryLanguage summary
Language summarycri fan
 
Python topic re
Python topic rePython topic re
Python topic recri fan
 
Symbology gs1128
Symbology gs1128Symbology gs1128
Symbology gs1128cri fan
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率Bo-Yi Wu
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps BotBo-Yi Wu
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構Bo-Yi Wu
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗政斌 楊
 
Sitcon2014_oss_translation
Sitcon2014_oss_translationSitcon2014_oss_translation
Sitcon2014_oss_translation宥瑞 曾
 

What's hot (11)

Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture
 
Go
GoGo
Go
 
Language summary
Language summaryLanguage summary
Language summary
 
Python topic re
Python topic rePython topic re
Python topic re
 
Symbology gs1128
Symbology gs1128Symbology gs1128
Symbology gs1128
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot
 
回顧 GNU/Linux 中文資訊化進展與未來機會
回顧 GNU/Linux 中文資訊化進展與未來機會回顧 GNU/Linux 中文資訊化進展與未來機會
回顧 GNU/Linux 中文資訊化進展與未來機會
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗
 
Sitcon2014_oss_translation
Sitcon2014_oss_translationSitcon2014_oss_translation
Sitcon2014_oss_translation
 

Viewers also liked

Resumo do Programa de Governo da REDE Diadema
Resumo do Programa de Governo da REDE DiademaResumo do Programa de Governo da REDE Diadema
Resumo do Programa de Governo da REDE DiademaREDEDiadema
 
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...Maya Lumbroso
 
Pers argenton jaar_13-08-16
Pers argenton jaar_13-08-16Pers argenton jaar_13-08-16
Pers argenton jaar_13-08-16fabrice carlier
 
Taller 1 salud ocupacional
Taller 1 salud ocupacionalTaller 1 salud ocupacional
Taller 1 salud ocupacionaljhoana henao
 
100% Return on Investment
100% Return on Investment100% Return on Investment
100% Return on InvestmentPin Click
 

Viewers also liked (11)

El medio ambiente
El medio ambienteEl medio ambiente
El medio ambiente
 
Ashish Resume
Ashish ResumeAshish Resume
Ashish Resume
 
Resumo do Programa de Governo da REDE Diadema
Resumo do Programa de Governo da REDE DiademaResumo do Programa de Governo da REDE Diadema
Resumo do Programa de Governo da REDE Diadema
 
New Updated CV
New Updated CVNew Updated CV
New Updated CV
 
UP Date resume Mohd Azeem
UP Date resume Mohd AzeemUP Date resume Mohd Azeem
UP Date resume Mohd Azeem
 
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
 
All About Myself
All About MyselfAll About Myself
All About Myself
 
Medio ambiente
Medio ambienteMedio ambiente
Medio ambiente
 
Pers argenton jaar_13-08-16
Pers argenton jaar_13-08-16Pers argenton jaar_13-08-16
Pers argenton jaar_13-08-16
 
Taller 1 salud ocupacional
Taller 1 salud ocupacionalTaller 1 salud ocupacional
Taller 1 salud ocupacional
 
100% Return on Investment
100% Return on Investment100% Return on Investment
100% Return on Investment
 

Similar to FreeBSD documentation translation

Subversion
SubversionSubversion
Subversioni7Xh
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchangChang Mt
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final Paul Chao
 
Python简明教程
Python简明教程Python简明教程
Python简明教程ingong
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
2010 08-14 web-sitei18n
2010 08-14 web-sitei18n2010 08-14 web-sitei18n
2010 08-14 web-sitei18ntsunghaolee
 
[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程NJU OPEN
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程junjun chen
 
Firefox OS Overview
Firefox OS OverviewFirefox OS Overview
Firefox OS OverviewYan-ren Tsai
 
Introduction to Version Control System for Windows
Introduction to Version Control System for WindowsIntroduction to Version Control System for Windows
Introduction to Version Control System for WindowsPeter Chang
 
Python meetup 1
Python meetup 1Python meetup 1
Python meetup 1Vic Yang
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 gruntLearningTech
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub維佋 唐
 
GNU Autoconf / Automake #1
GNU Autoconf / Automake #1GNU Autoconf / Automake #1
GNU Autoconf / Automake #1imacat .
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source ProjectsGeorge Ang
 

Similar to FreeBSD documentation translation (20)

Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Subversion
SubversionSubversion
Subversion
 
Ch01
Ch01Ch01
Ch01
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
Python简明教程
Python简明教程Python简明教程
Python简明教程
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
2010 08-14 web-sitei18n
2010 08-14 web-sitei18n2010 08-14 web-sitei18n
2010 08-14 web-sitei18n
 
[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程[精彩回顾]Linux新手教程
[精彩回顾]Linux新手教程
 
系統程式 -- 第 7 章
系統程式 -- 第 7 章系統程式 -- 第 7 章
系統程式 -- 第 7 章
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程
 
Firefox OS Overview
Firefox OS OverviewFirefox OS Overview
Firefox OS Overview
 
Introduction to Version Control System for Windows
Introduction to Version Control System for WindowsIntroduction to Version Control System for Windows
Introduction to Version Control System for Windows
 
Python meetup 1
Python meetup 1Python meetup 1
Python meetup 1
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 grunt
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
 
from Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Works
 
GNU Autoconf / Automake #1
GNU Autoconf / Automake #1GNU Autoconf / Automake #1
GNU Autoconf / Automake #1
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source Projects
 

FreeBSD documentation translation

  • 1. Translation of The FreeBSD Documentation FreeBSD 文件翻譯計劃 Ruey-Cherng Yu raycherng@gmail.com 2016.7.30 摘要 Abstract 自己的文件自己翻! FreeBSD 的一個特色就是擁有許多高品質的技術文件,還有一個嚴謹有組織的文件團隊,但是這些文件 的最新版都是英文版的,大部分現有的正體中文翻譯已經是八年前的資料,甚少參考利用的價 ,以致值 於這些高品質文件在台灣的使用者間曝光度有限,非常可惜。 去年八月,FreeBSD 文件計畫改用 GNU gettext 翻譯系統,使得翻譯文件的流程更加便利。本次講題 將簡介 FreeBSD 文件計畫,翻譯流程,以及正體中文翻譯計畫的現況,希望能喚起大家的熱情,參與正 體中文翻譯計畫,讓更多的台灣使用者受益。 FreeBSD 文件計畫 FreeBSD 的一個特色就是擁有許多高品質的技術文件。這些文件分成三大類: 1.書籍和文章 (books and articles) 2.網站 3.manual pages 書籍和文章是用 Docbook 標記語言所寫,書籍部份,內容最多,最知名重要的就是 FreeBSD 手冊 ( FreeBSD Handbook ),已經被翻譯成超過 20 種語言。其他還有 Porter 手冊,文件計劃入門書,開發 者手冊,FAQ 等。 Manual pages 的格式是 mdoc,除了英文以外,目前只有日文翻譯。 網站大部份是 XSLT,有些網頁是 CGI 產生的,還有部份網頁是直接以 HTML 寫成。從官方網站首頁 右上方,有八種語言的網頁連結,目前沒有繁體中文。 本文主要是說明書籍和文章類的繁體中文翻譯。
  • 2. 為什麼要有繁體中文翻譯? 中文翻譯的 FreeBSD 文件可以降低大家接觸和進入 FreeBSD 的門檻,讓更多不同程度的使用者都能接 觸到這個優秀的作業系統,這樣對有興趣的使用者有利,也對 FreeBSD 計劃有利,能創造雙贏。 現在愈來愈多人可以讀得懂簡體中文,為何不從簡體中文版文件,直接簡轉繁 ?因為簡體中文的用詞呢 還是有許多和台灣慣用語有很大的差異,例如: 高端 智能 優化 高清 編程 創客 以上的詞彙是用繁體中文寫的, 看得懂 ? 可能愈來愈看得懂了,甚至覺得理所當然,因為我們自您 嗎 您 己的用詞已經漸漸被取代了。 以下是台灣的用詞: 高階 智慧型 最佳化 高解析度 程式設計 自造者 語言本來就會常常受到不同面向的影響而改變,只是如果台灣本來就有自己的用語,甚至某些辭彙的中 文翻譯最早就是由台灣所翻譯的,那只要我們能 積極地將文件翻譯成繁體中文,並且使用台灣的辭彙夠 , 就能 繼續保有我們本土的特色與文化。香港有一群不會電腦的大叔們甚至努力學會使用造字軟體,希夠 望保有香港本土的特有字體 !呢 FreeBSD 文件也有簡體中文的版本,可能會有人建議像維基百科的翻譯作法一樣,用共同的中文翻譯, 再把中國和台灣不同的用詞用台灣的辭彙替換掉。但是簡體中文版也是和英文版的文件的進度有許多落 差,所以除了用詞問題,簡體轉繁體仍然有不可行之處。如果 願意的話,參考簡體中文文件,並對照您 英文版最新的原文,將他翻譯成繁體中文版,那倒是個可行的辦法。 再舉個例子,”FreeBSD 操作系統與服務器優化”, 看的習慣 ? 不習慣的話,加入我們吧!您 嗎 FreeBSD 文件翻譯的工具書 FreeBSD 文件計劃入門書: http://www.freebsd.org/doc/zh_TW/books/fdp-primer/ 對於整個 FDP 的說明非常詳盡,不懂的就去那裡 詢吧。查 文件翻譯工具鏈 使用 port 安裝 textproc/docproj/ 和 devel/gettext-tools/或是安裝套件:
  • 3. # pkg install docproj gettext-tools 取得 doc/tree % svn checkout https://svn.FreeBSD.org/doc/head ~/doc 將 FreeBSD 文件抓到家目錄下的 doc 目錄,可以看到 doc 目錄的內容如下: 每個目錄的命名方式是依照 『語言代碼_國碼.編碼』,因此繁體中文的文件是位於 zh_TW.UTF-8。 ~/doc/zh_TW.UTF-8 目錄內有: articles books htdocs Makefile Makefile.inc share articles 和 books 底下又有子目錄,每個子目錄都是不同的文章和書籍。 FreeBSD 文件的翻譯方法 原先的 FreeBSD 文件 (書籍與文章) 翻譯方法是直接打開英文版的 xml 案,把英文的文件內容直接翻檔 譯成中文,然後要注意中英文版本號的對應,並且要小心 案中的檔 xml tag ,不要不小心修改或是翻譯 了這些 tag,作法如圖。這樣的作法會造成翻譯者的困擾,沒辦法專心在翻譯文件內容本身。
  • 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 • 保留字串前後的空白
  • 8. • 有 PGP key 的文章不要翻譯,這些 PGP key 是 script 產生的,不是手動輸入的,doc team 還在研究 如何處理這些文章的翻譯問題。 • $FreeBSD$ 字串要特別處理,要將金錢符號替換為&dollar,以免這個字串會被版本控制系統展開 替換: &dollar;FreeBSD&dollar; 每個單字的字義都要翻譯到 ?嗎 : 不需要逐字翻譯,只要中文能表達使用方法及步驟即可,刪去一些英文字或改變順序沒關係。因為中英 文語法不同,如果每個字都翻譯會變很怪。 謝文珊,實踐大學應用英語系助理教授 每個單字的字義都要翻譯到 ?嗎 : 通常對具體事務、概念、或學理的翻譯,原文就好像油畫,譯者要把這油畫畫成水彩畫,然後讀者還看 得出來原作者要說些甚麼。 從具體物,變成油畫,再轉成水彩,一定有誤差,但重點是讀者是否能從水彩想回去原物。 整個原作要全部熟讀完之後,再來翻譯的工作 ?嗎 : 我一般是一章大略讀一次,然後一段一段譯。當然,技術上是一句一句譯。不過一整段的內容要先有個 頭緒再下筆比較能用詞準確。 遇到真的不懂的怎麼辦?: google、或是詢問原作者。 到無處可問的時候,只好打安全牌,弄個比較不會錯的譯法,然後附上原文。碰 林茂昌,知名財經、翻譯作家 參考資料 • https://theinitium.com/article/20160410-changemaker-font/ • FreeBSD 文件計劃入門書 • http://wonkity.com/~wblock/translation/,wblock