2008年7月23日 星期三

自製星際譯王的字典檔StarDict

自製星際譯王的字典檔 StarDict


自製 星際譯王 字典檔

先說為什麼要自製星際譯王的字典檔 , 你可以從中間為你自己或是公司得到甚麼好處?
假設你們公司要發行內容的共通 商業用語或是商業字彙 ,
甚至是提供給客戶的諸如 股票 , 基金 , 保險等等相關基本常識或是用語 ,
或者是應用系統的Data Dictionary
你們都可以產生針對你們公司甚至是你們客戶專用的說明字典

學校老師也可以輕易的挑出相關的重點來產生給學生參考的字典

這一點是使用Dr.Eye(譯點通)這類商業電子字典所辦不到的
因為不論是譯點通或者是快譯通或者是無敵電腦字典 , 他們都不對外開放自行新增字典檔的功能
<所以我對於商業軟體有些感冒 , 應用性完全被綁死在廠商手上>


前置作業 , 檢查你的星際譯王安裝設定
使用 Synaptic套件管理程式檢查以下內容是否已經安裝
stardict  
stardict-tools
stardict-common
stardict-gnome
stardict-plugin
stardict-plugin-espeak
stardict-plugin-festival
stardict-plugin-gucharmap
stardict-plugin-spell
我有點忘了哪幾個是必要的 , 這個是我目前有裝的相關套件



以下是執行步驟
(1)在你的使用者目錄下建立子目錄stardict-demo-2.4.2
(2)使用 Gedit 編輯
檔案內容如下:
demo    示範\n進行實體展示來讓人明白其過程\n如果還有更多行可以繼續換行
test    測試\n進行試驗以驗證功能性或是性能\n如果還有更多行可以繼續換行
檔案內容如上

注意說明:
(a)demo 跟 示範 之間並不是空白 而是 tab 字元 , 請按鍵盤左方的 Tab 鍵
(b)\n 表示內容要換行

然後存檔 , 注意 存檔的字元編碼格式必須為 UTF-8
(3)然後存檔 , 檔案名稱為stardict-demo-2.4.2.tab
(4)開啟終端機執行以下指令
cd /usr/lib/stardict-tools
./tabfile ~/stardict-demo-2.4.2/stardict-demo-2.4.2.tab

(5)檢查子目錄stardict-demo-2.4.2之下是否多出這三個檔案
stardict-demo-2.4.2.dict.dz
stardict-demo-2.4.2.idx
stardict-demo-2.4.2.ifo

(6)修改字典檔的命名
使用GEdit 編輯stardict-demo-2.4.2.ifo
檔案內容如下
StarDict's dict ifo file
version=2.4.2
wordcount=2
idxfilesize=26
bookname=邪無思的星際譯王測試字典stardict-demo-2.4.2 <--  在這一行修改你的字典的顯示名稱
sametypesequence=m
檔案內容如上
然後存檔

(7)開啟終端機執行以下指令
sudo mkdir /usr/share/stardict/dic/stardict-demo-2.4.2
sudo cp ~/stardict-demo-2.4.2/stardict-demo-2.4.2.dict.dz /usr/share/stardict/dic/stardict-demo-2.4.2
sudo cp ~/stardict-demo-2.4.2/stardict-demo-2.4.2.idx /usr/share/stardict/dic/stardict-demo-2.4.2
sudo cp ~/stardict-demo-2.4.2/stardict-demo-2.4.2.ifo /usr/share/stardict/dic/stardict-demo-2.4.2

(8)執行你的星際譯王
使用功能 管理辭典 可以看到 "邪無思的星際譯王測試字典stardict-demo-2.4.2" 這個字典已經被抓到了 ,裡面有兩個字

(9)查詢我們剛剛建立的單字
輸入demo , 看看能夠看到甚麼

你可以發現 如果你載入多本字典 , 然後裡面都有 demo 這個字彙,
它會一併顯示出來


建立字典時的重大注意事項:
這一點是參考文件中不會提到的 ,
但是因為我曾經自己研究星際譯王的字典檔格式直接寫程式去產生字典檔 , 在測試的過程中發現了以下重要注意問題
(a)在同一個字典中 , 字彙不可以重複 , 也就是說在 stardict-demo-2.4.2.tab 中不可以重複出現兩個相同的字彙
例如像下面這樣的檔案內容如下:
demo    示範\n進行實體展示來讓人明白其過程
demo    測試\n進行試驗以驗證功能性或是性能
檔案內容如上
有兩個相同的demo 字彙存在同一個字典中
<硬要試試看會發生什麼事? , 星際譯王碰到這樣的問題字典 , 只要你去使用 , 星際譯王可能直接當掉 , 或者是變得的不正常>

(b)字彙必須要排序
例如像下面這樣的檔案內容如下:
test    測試\n進行試驗以驗證功能性或是性能
demo    示範\n進行實體展示來讓人明白其過程
檔案內容如上
test 排序應該是在demo之下
<硬要試試看會發生什麼事? , 星際譯王碰到這樣的問題字典 , 只要你去使用 , 星際譯王可能直接當掉 , 或者是變得的不正常>

參考資料
"StarDict" 的 "How to create your own dictionaries."