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;
張貼留言

[Windows] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...