基于Web技术的Emacs翻译插件
Emacs
2021-11-14 1194字

关于popweb

我写的sdcv应该是Emacs里面最早的弹窗翻译插件,一直想要一个Web版的弹窗翻译插件,需要满足如下要求:

  1. 用Web技术来绘制美观的界面
  2. 长期稳定使用,不需要破解翻译网站的API或者单独申请Key
  3. 支持例句显示和自动发声
  4. 支持光标处单词自动提取,支持选中状态
  5. 支持代理配置,国内有道直连,国外翻译服务走代理

苦于没有想好第二条需求的方案,迟迟没有开动,今天突然想到其实可以利用CSS来隐藏不要的广告,这样既可以保证界面干净,又不用破解每个翻译网站的API。

得益于Emacs Application Framework过去2年的研究,我直接提取了EAF浏览器相关的代码,很快就实现了Web版的弹窗翻译插件。

安装

  1. 从你的操作系统中安装PyQt5(注意不要用PIP安装PyQt5, PIP版的有bug会导致浏览器崩溃)
  2. 下载popweb仓库代码: https://github.com/manateelazycat/popweb
  3. 在你的配置文件 ~/.emacs 中添加以下配置
    (add-to-list 'load-path "<path-to-popweb>") ; add popweb to your load-path
    (require 'popweb-dict-bing)
    (require 'popweb-dict-youdao)
    (require 'popweb-katex)
    

使用

代理

代理设置,目前Bing和Youdao还用不上,主要是为国外的其他翻译服务做准备。

(setq popweb-proxy-type "http")
(setq popweb-proxy-host "127.0.0.1")
(setq popweb-proxy-port "1080")

如果你是socks5代理,可以像下面这样更换类型:

(setq popweb-proxy-type "socks5")

截图

Bing翻译

Bing

有道翻译

Youdao

LaTex预览

KaText

技术优势

popweb是具备EAF的核心的,包括:

  1. 支持完整的PyQt和Chromium浏览器渲染引擎
  2. 支持Elisp、Python、JavaScript互调用技术
  3. 支持 node 和 vue.js

popweb 和 EAF唯一的不同是, popweb没有处理窗口管理和按键转发,popweb天然支持 Windows, Mac, Linux平台,可以应用于各种 富文本弹出框 场景, 比如翻译、LaTex预览、文档提示、代码补全等。

后续

popweb是一个通用框架,不光可以展示翻译内容,也可以加载任意Web页面,欢迎大家贡献新的想法和插件。

Enjoy!