2003
01 02 03 04 05 06 07 08 09 10 11 12
2006
01 02 03 04 05 06 07 08 09 10 11 12
2007
01 02 03 04 05 06 07 08 09 10 11 12
2008
01 02 03 04 05 06 07 08 09 10 11 12
2009
01 02 03 04 05 06 07 08 09 10 11 12
2010
01 02 03 04 05 06 07 08 09 10 11 12
2011
01 02 03 04 05 06 07 08 09 10 11 12
2017
01 02 03 04 05 06 07 08 09 10 11 12
2018
01 02 03 04 05 06 07 08 09 10 11 12
 
Jun
8
2006

Dictionary.app

最近利用空閒時間研究了一下 Dictionary.app ,希望能製作英漢/漢英字典。我已經厭倦每次查字典都要上網路了:雖然有 Atomix Dojam 可以用,但總覺得效能挺差的。 Dictionary.app 核心使用 Carbon API 的 Dictionary Manager,字典檔放在 /Library/Dictionaries 下。字典的格式是 XML,但最重要的 index (dictionary_1)不知道怎麼做。剛開始我想要去修改 Dictionary.app 使得可以吃別種格式的字典檔。但 Dictionary.app 的 debugging symbol 已經被拔掉了,且 gdb 只認得 debugging symbol ,不認得 obj-c 的 symbol,這增加了逆向的難度。我打算放棄 patching,因為這樣子和自己重新寫一個字典軟體沒什麼兩樣,又要隨著系統升級,太麻煩。 於是接下來應該做的是,想辦法拆穿 Dictionary Manager 背後做的事,以設計出和 Apple 官方格式相容的字典檔。其中有兩個困難點:

  1. 技術層面:Apple 的技術員工曾經回應我, Sorry, currently there is no public information to create dictionaries usable by Dictionary.app. It is considered being published in the future system release. 而且因為目前系統內建的字典檔權限(非檔案系統的權限,字典本身有權限的欄位)設定關係,沒有辦法從內建的字典檔修改(DCMDeriveNewDictionary)而得到新的字典檔。我希望 Dictionary.app 真的只有使用 Dictionary Manager 所公開的 API 而已。若真如此,只要想辦法追蹤這些 API 在幹嘛,就有機會了解 Apple 內建的字典檔格式。而我已經確認 Dictionary.app 在查詢單字時,的確會呼叫 DCMFindRecords ,所以這個假設仍然有希望,有空的話我會嘗試反組譯 Dictionary Manager ,如果有 source code 的話更好!Apple 不是有 open source 嗎?怎麼不順便把 Carbon 也順便 open 哩。或者是其實有只是我太遜沒發現,希望有強者指點一下。
  2. 內容層面:如果格式研究出來了,要去哪裡找字典的內容?當然可以去別人的網站上偷資料,可是被告誰負責?這個也頗頭痛… 看過一些免費的字典,都覺得品質不是很好。

如果有人也在做這方面的研究,請和我連絡:blueapple (a) gmail d0t c0m,我們可以彼此交換資訊。如果沒有人給我協助,提供資訊,這事只好暫擱一旁:反正接下來要接手開發兩三個軟體系統,應該也不會太有空。要是哪一天 Apple 在新系統加入了這個功能不就做白工了,呵呵。

 

Annotations RSS

“提示一,請參考日文輸入法裡面的辭庫工具。
提示二,請參考 Language Analysis SDK。”

---digdog. 3/12, 2006
 
 

Write Concisely