让kindle连续从不同词典取词
推友Yaodis在奋战13小时后,实现了在 kindle 上“同时”使用1本以上词典,可以从不同词典连续取词。以下是他的研究’成果’,有疑问和更多想法可以在twitter上和他继续交流和探讨。
起因
在拥有 kindle 之前,我一直使用手机上的 mobipocket 来阅读 mobi 格式的文件(mobipocket 公司后被 Amazon 收购,有了基于 mobi 的 azw 亚马逊专用格式文件)。手机里安装了不止一部词典,比如我平常的使用习惯是先看英英词典(比如我最喜欢的collins cobuild dictionary)再看双解词典,蛋疼的时候还会再看一下韦氏这样的母语者使用词典。取词时 mobipocket 会通过一个多选框来选择要使用的词典,所以在手机上多词典同时使用完全没有问题。现在到了 kindle 了,我发现她只能同时查一部设定为主词典的词典,起初,我无所谓,less is more,这样我花在词典上的时间会少了阅读就会多了,但后来,一方面我有时真的不是很清楚英英解释的意思,另一方面,我看到了这个帖子——
If you select a word with the cursor in your kindle- the translation pops up. Then if you press enter you get to the dictionary. And now if I select a word within my dictionary- the definition from another dictionary pops up.
这的确是一种达到目的的方法,如果可行的话
准备
stehk的这种方法成功的前提是什么?
1. 先来看看 kindle 是如何管理多本多语言词典的使用的
- 如果你有多本相同语言的词典,那么被设置为主词典的词典会被在取词中使用(这我们都知道)
- 如果你有多本不同语言的词典,比如法语和英语,那么在法语书籍中,法语词典将被使用(假设你的 kindle 里只装了一本法语词典)无论主词典被如何设置
- 地区语言决定文件的内容是用什么语言写成的
- 输入语言是决定取词和查询时使用的语言
- 输出语言是词典解释项使用的语言
实现
- 在十六进制编辑器中查找 MOBI(注意会有 BOOKMOBI 这个结果,不是它)
- 利用编辑器的跳转功能(跳转距设置成76)
- collins 是英英的,会看到连续的 00 00 00 09 00 00 00 09 00 00 00 09 这段以4个为一组的三组数据,这三组数据依次就是 local ,input language ,output language (1个十六进制数4个bit 组成,8bit=1Byte ,所以4Bytes就是00 00 00 09这8个十六进制数)
- 现在修改00 00 00 09 至 00 00 00 0c ,collins 这部主词典就修改好了
扩展
- 对于书,上面所说的 input language 和 output language 都是 0
- 也可以用 mobi2mobi 这个小工具来修改且只能修改 local 项(可能目前他的开发者没意识到词典的特殊性)
- 按照stehk说的用 mobiPatch 可以修改 input 项,但我实际操作后,再用十六进制查看发现input, output 均未变。mobiPatch 的作者说他是通过20个左右的十六进制数 FF 来确定语言信息项的[via],不是通过字符“MOBI”,而且是 at three different offsets ,但用他的软件的确也成功了,可能他的软件修改的是另外一个地方,有谁知道确定答案了请告诉我
- 用 calibre 编辑元数据在十六进制中查看三个语言信息均无变化,这也是我疑惑的地方
转载文章 来自:blog.yaodis.tk
相关文章: