【讨论】一种提升英文阅读体验的可能性

建议像lsp-bridge那样 https://github.com/manateelazycat/lsp-bridge/blob/master/core/search_sdcv_words.py

基于星际译王的词典去翻译单词,这样性能要比网页去抓要快很多,只是单词翻译,词典也够了。

我试了一下,eww 是可以的。应该所有的buffer都行。只是简单的在已有的buffer上增加了一下overlay

1 个赞

牛逼牛逼,我下班就去试用反馈。

嗯嗯,我去学习学习。就英文没有找到什么好的单个词义的词典。就偷懒直接去网上查询翻译了。

可以保留所有的功能,选择性切换。

我自测的时候,deepL 网络比较差。使用 youdao 还是不错的。就是首次启动比较慢。比较坑的是,要求用户下载安装 Chromium

可以把本地词典,在线翻译都留着。根据变量切换就好。

高质量星际译王词典在 http://download.huzheng.org/dict.org/ 这里下载。

开源英汉词典数据库:GitHub - skywind3000/ECDICT: Free English to Chinese Dictionary Database

2 个赞

在scratch里拷贝了一段英文,之后执行 dictionary-overlay-render-buffer 没有报错,但也没有变化,使用姿势不对吗

试用了一下,相当不错的效果 :grinning:

不过这个 fanyi.youdao.com 有点问题,“quintessence” 和 “Peking” 都没有翻译出来。DeepL 能正常翻译

可以用

(websocket-bridge-app-open-buffer 'dictionary-overlay)

看看信息

1 个赞

首先你需要 dictionary-overlay-start 启动应用。 默认是“生词本” 模式,你需要,dictionary-overlay-mark-word-unknow 标记生词。

最后: 如 @welandx 所说,你可以查看buffer,查看信息。

1 个赞

我最开始是使用 DeepL 的,后来网络有问题,就寻找了一个国内的在线翻译替代。结果有道居然如此不给力。

当前还存在的问题:

  1. 翻译为在线翻译,需要网络。可以考虑使用本地词典替代。
  2. 单词分割、查询还比较简单。如名词单负数,动词的不同时态,会被当作不同的词语。可以看看有没有适合的分词工具可以进行单词的规范化。
  3. 词典、生词的存放位置是hard code 放置在插件目录下的,需要支持自定义目录位置。

谢谢,查看信息后发现不是系统里有chromium就行了,playwright需要自己安装一个

一些建议供参考: 可加个n: dictionary-overlay-mark-word-unknown

希望新buffer显示时是1.5倍行距,释义部分在行间空白处显示,生词本身能突出显示(比如黄色,类似下图),能一键切换render与否

dictr

生词本在哪改释义,比如triggers翻译为触发器,但是上下文显示它是动词,应该是触发(单数时)【单词变形还原我印象中没有完美的方案,可以不搞,可结合长句翻译确定释义,大家推荐的skywind3000没记错的话也是直接把各种形式都作为生词才查得全吧】

最后再次感谢这么好的工具,个人2022最佳!

1 个赞

暴露出我英文实在是不行。 :sweat_smile:

行间显示这个功能不知道能不能实现呢。没见过 Emacs 里有行间展示内容的情况。

这两个倒是可行。

单词还原python是有对应的包的,不知道效果如何,有空可以试试。

有用就好。喜悦。

1 个赞

我写了个基于 sdcv 的词典 Use sdcv and crow-translate instead playwright. by manateelazycat · Pull Request #3 · ginqi7/dictionary-overlay · GitHub , 当 sdcv 查不到时, 用 crow-translate 来做一个保底单词查询。

3 个赞

大家快来更新新版本。猫哥改成 sdcv 以后无比丝滑。

EAF Browser + Popweb + eww + dictionary-overlay , 简直是英文文章学习的最佳流程:

  1. EAF Browser 查找资料, 在 EAF Browser 中执行命令 eaf-py-proxy-insert_or_render_by_eww 转换成 eww 模式
  2. 在 eww 模式中执行 dictionary-overlay-render-buffer 命令, 开启 dictionary-overlay
  3. 遇到不懂的单词自动调用 popweb-dict-bing-pointer 弹出翻译并同时做生词标记 dictionary-overlay-mark-word-unknown, 具体参考我的小函数

dictionary-overlay 这个插件最好用的地方是, 一次弹出翻译, 以后不管看什么文章都可以自动显示生词的翻译, 不用一个一个的再次去查单词翻译, 节省了大量时间。

12 个赞

这个project非常有意思,也是能极大提升程序员工作效率的利器。

不过对于英文比较好的人(可以无障碍阅读英文文献)但是会遇到文本中出现不认识的单词(熟词僻义)以及常用词组合成了不认识的短语的情况,本插件目前遇到这种情况应该还是有所局限的。

针对这两种情况,我有如下的建议:

  1. 针对一个被翻译的单词,提供两个命令,跳转到本单词的上一个和下一个释意。
  2. 选中一个区域(主要是短语)后,调用翻译,如果词典里查不到就调用在线翻译(同时在线翻译也可以切换不同的释意)。

至于后续的工作流,如自动添加到生词本等,都是非常好的。

我目前遇到不认识的熟词和短语,都是先选中然后自动调用eww或者xwidget去谷歌搜索这个单词,然后明白释意以后调用org-capture来记录这个单词/短语和它的上下文句子写入。

如果能结合楼主的这个插件,我的工作流还有很大的优化空间。

删除了dictionary-overlay目录,重新下载回来是不是就更新了

默认是sdcv查词?也是需要快速修改释义的办法(个人对多释义跳转持保留意见,有的词词典里会有十几个释义,遇到这种情况似乎前面提的popweb是更好的方法,虽然我还没解决popweb弹出窗口空白的问题,所以更倾向自己查询后修改释义

由于设计偷懒,把用户数据文件都放在了项目目录下,导致可能代码更新用户数据丢失的问题。

新的提交把,用户数据的目录换位置了。可以通过变量 dictionary-overlay-user-data-directory 设置 默认值为:“~/.emacs.d/dictionary-overlay-data”

更新前记得备份一下原项目目录(dictionary-overlay)下的用户数据。