2007/05/23

[StarDict] 字典格式

最近又想搞 stardict 的程式出來,所以翻了 SayYa 上面自已以前寫的舊文:

嗯,這個內容是從 stardict/src/tools/DICTFILE_FORMAT 得來的,
由個人加以翻譯、潤飾跟簡化,所以如果有不對的地方,請指正。

stardict 有三種檔案:

1. a.ifo

2. a.idx

3. a.dict

ifo 放這本字典的 information
idx 放 wordlist 的 index
dict放 wordlist 拉過來的 word data

如果你看到 idx.gz 或 dict.gz 那是因為 stardict 可以接受壓縮格式的關係。


.ifo 裡面放
StarDict's dict ifo file
version=2.4.2
[options]

注意 version 的部份, 2.4.2 的 stardict 會去偵測 dict 是不是 for 2.4.2
的版本,如果不是就會拒絕存取。/* 按: 似乎到了 2.4.3 就不是這樣 */

有用的選項表列如下:
bookname= //required
wordcount= //required
idxfilesize= //required
author=
email=
website=
description=
date=
sametypesequence= //非常重要

wordcount 是每筆 word 記錄的總和,必須是正確的,不然會出問題。
說明中提到,為避免不斷的 realloc 降低軟體效能,
所以加入的 idxfilesize 是 idx (解壓縮後)的大小。

sametypesequence 可麻煩了,
你可以在 dict 中放入很多筆 wav 檔案記錄,
然後在 sametypesequence=W 接著,
dict file 在處理時就會忽略 'W' 這個字元。

再另外一個常見的情況做為例子:
你可以設做:
sametypesequence=tm
這樣每個字在 dict 檔裡的處理就會忽略掉 't' 和 'm' 字元,
此外,以 '\0' 和 'm' 結尾的輸入也會被當作每個記錄的結尾。


.idx 是生字清單

它會依序存放在這個檔案裡頭,每筆記錄應作下列格式:

word_str; (utf8 charset 並且以 '\0' 做結尾。)
word_data_offset;
word_data_size;

2 則留言:

Pou 提到...

您好,想跟您請教關於STARDICT的問題,不知道您是否有比較詳細介紹關於.dict檔建立的相關資料呢?

anton 提到...

structure 是我以前找到能最詳細的資料了,我不知道你還想要什麼,要不要直接說明你的需求是什麼比較乾脆一點?

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...