由于担心涉及版权问题,细节就不说了,下面只说说思路:
Longman字典自带电子格式,很早以前,我就研究过它的v4版本,想转一个Babylon格式的,最后也是不了了之,不过对格式的解析到时有一定基础了。是从下面这个日本人的转换脚本里学来的:
http://hp.vector.co.jp/authors/VA005784/longman4/ldoce4conv.html
(此人用的是Ruby,想当年为了看懂这个脚本,还学了一阵子Ruby。)
此脚本对应的是V4格式。目前网上最新的是V5,和这个略有不同,但是思路是一致的。
将Longman的压缩包解开后,可以得到每个词条一个xml。内容大体就是显示的内容,还包括了词的变化形式(Inflection),这个正是Mobi辞典取词的关键信息。
得到原始信息后,开始转换成Mobi格式。Mobi格式其实是一些html文件+资源文件+OPF源信息文件,通过OPF文件控制mobi格式的生成。最早是读了一遍亚马逊官方的 Amazon Kindle Publishing Guidelines,对字典格式只有只言片语,又去研究epub规范,发现根本没有提到Mobi字典的格式。原来这个是Mobi特殊格式,和epub无关。最后在mobipocket的开发文档中找到了例子。看了例子,一切都明白了。
http://www.mobipocket.com/dev/article.asp?BaseFolder=prcgen&File=advancedbooks.htm
源格式,目标格式都清楚了,后面就简单了。写个程序生成html,配合例子的OPF文件稍加修改,用亚马逊官方的kindlegen工具生成。生成后的mobi文件可放到Kindle Previewer上预览(这工具真不错,效果很像),几经调整,终于得到了可用版本的Longman字典。
相比网上下的Longman,效果好的多:
- 取词基本正常,加入了各种变化。
- 音标也正常,网上的版本,音标转换成了金山字体,此字体害人不浅,音标转成这种字体对应格式后,在各种辞典里都不能正常显示。Longman自带的Unicode编码的音标不需要转换就能在Kindle上完美显示。