TA的每日心情 | 无聊 2018-11-6 11:55 |
---|
签到天数: 56 天 [LV.5]常住居民I
贡士
- 积分
- 3694
|
本帖最后由 马尔可夫 于 2018-8-29 19:48 编辑
因为是新人,很多帖子看不了,只能重复造轮子了。
使用的是Mac系统,并且是三指取词的重度用户,所以非常依赖系统自带词典的扩展,
攒了一点积分,下载了论坛https://www.pdawiki.com/forum/fo ... 5785&extra=page%3D1这个帖子的无切换版牛津高阶英汉双解词典第八版(论坛里看了半天,只这有这个没有阅读权限,感谢楼主!),根据网上教程,将其转为了Mac词典格式。
注:
目前转换后的词典还存在几个问题,
1. 名词复数形式查询结果是给出一个指向单数的链接,我是希望能够直接显示单数释义(已解决 - 2018.08.15);
2. 在系统词典内查询单词,查询结果顶部及底部多个词形之间没有空格,但三指取词的界面显示没有问题(已解决 - 2018.08.19);
以上两点我基本能够猜到问题所在,但需要花些时间去实践,有结果后会及时更新。
对于喜欢自己转换的同学,这里有我总结的几个针对Mac词典XML文件需要修正的正则表达式总结,有兴趣的话可以交流
- # 修正图片引用路径
- perl -pi -e 's:src="/:src=":g' oald8.xml
- # 修正发音链接
- perl -pi -e 's,<a class="fayin" href="x-dictionary:d:sound://(u[sk]/)(.+?).mp3">(.+?img.+?)/></a>,<audio class="fayin" id="\2" src="\1\2.mp3"/>\3 onmousedown="document.getElementById('\''\2'\'').play(); return false;" onmouseover="" style="cursor: pointer;"/>,g' oald8.xml
- # 修正单词引用,如果不希望出现链接形式,此处需要考虑其它修正方法(见下面更新)
- perl -pi -e 's,\@\@\@LINK=(.+?)</p>,<a href="x-dictionary:d:\1:dict_bundle_id">\1</a></p>,' oald8.xml
- # 修正单词内跳转
- perl -pi -e 's,entry://,,g' oald8.xml
复制代码
2018.8.14更新
在处理@@@LINK的过程中,发现许多跳转指向的词条不对,比如a-bomb, add to this等,在手机上用欧路词典查看,亦有同样问题,结果就是在查询列表里可以找到,但点击后没有对应牛8的释义。看来要花点时间更正这个问题了,已经有了解决思路,希望周末之前能够抽出时间更正并更新词典。
2018.8.15更新
终于处理好了@@@LINK转换的问题,没有简单的办法,只能写了个脚本程序,扫描整个XML文件,将@@@LINK引用移动到正确的词条下。现在对名词复数,动词各形态三指取词就不会再是一个跳转连接了,而是直接显示内容,用起来舒服多了哈!新版本的词典已重新上传百度网盘,需要的同学请重新下载。
再次把脚本内容放上,供有兴趣的同学参考。
- #!/usr/bin/env python3
- import xml.etree.ElementTree as ET
- '''
- 1. find the d:entry node which descendant contains the keyword "@@@LINK=" in text
- 2. parse the value behind "@@@LINK=" keyword and save it to variable title
- 3. save the index node belongs to the d:entry to variable index
- 4. find the d:entry node which title property exactly matches title
- 5. append index to the current d:entry node as child
- 6. remove the d:entry which descendant contains the keyword "@@@LINK="
- NOTE: please remove the default namespace from oald8.xml file manually before the script running and add it back when script done.
- '''
- tree = ET.parse('./oald8.xml')
- root = tree.getroot()
- ns = {'d': 'http://www.apple.com/DTDs/DictionaryService-1.0.rng'}
- ET.register_namespace('d', 'http://www.apple.com/DTDs/DictionaryService-1.0.rng')
- # find all d:entry nodes which contains the keyword "@@@LINK=" in text
- link_entries = root.findall('.//p/..', ns)
- for l_entry in link_entries:
- index = l_entry.find('./d:index', ns)
- title = l_entry.find('./p', ns).text.replace('@@@LINK=', '')
- entry = root.find('./d:entry[@d:title="' + title + '"]', ns)
- # remove l_entry directly if title cannot be found in entries
- if entry is None:
- print(title)
- root.remove(l_entry)
- continue
- # append the index element to right entry
- entry.insert(0, index)
- root.remove(l_entry)
- tree.write('oald8f.xml', 'UTF-8')
复制代码
2018.8.19更新
第二个问题已解决,即在MAC原生词典中查词,词条下多个词形间没有空格的问题。解决方法是修改一下字典内的DefaultStyle.css文件,搜索inflection找到下面这一段,在最后添加一行padding 0 5px 0 0;,保存后重启词典即可,具体效果可以看最后一张图片。
- .infl .inflection {
- display:inline-block;
- color: #336699;color: #003377;font-family: Georgia; font-style:italic;
- font-weight: 500;
- padding: 0 5px 0 0;
- }
复制代码 懒得改的同学可以直接下载CSS文件,解压后替换~/Library/Dictionaries/oald8.dictionary/Contents下的DefaultStyle.css文件,词典的下载链接也已同步更新。
制作好的Mac版词典上传至百度网盘,下载解压后,放入~/Library/Dictionary目录,即可在系统字典的偏好设置中找到。
链接: https://pan.baidu.com/s/1SKRd4tKFY5UP4sK1283iNQ
本帖隐藏的内容密码: v4ne
|
评分
-
7
查看全部评分
-
|