关于popweb
我写的sdcv应该是Emacs里面最早的弹窗翻译插件,一直想要一个Web版的弹窗翻译插件,需要满足如下要求:
- 用Web技术来绘制美观的界面
- 长期稳定使用,不需要破解翻译网站的API或者单独申请Key
- 支持例句显示和自动发声
- 支持光标处单词自动提取,支持选中状态
- 支持代理配置,国内有道直连,国外翻译服务走代理
苦于没有想好第二条需求的方案,迟迟没有开动,今天突然想到其实可以利用CSS来隐藏不要的广告,这样既可以保证界面干净,又不用破解每个翻译网站的API。
得益于Emacs Application Framework过去2年的研究,我直接提取了EAF浏览器相关的代码,很快就实现了Web版的弹窗翻译插件。
安装
- 从你的操作系统中安装PyQt5(注意不要用PIP安装PyQt5, PIP版的有bug会导致浏览器崩溃)
- 下载popweb仓库代码: https://github.com/manateelazycat/popweb
- 在你的配置文件
~/.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)
使用
- popweb-dict-bing-input: 用Bing来翻译输入单词
- popweb-dict-youdao-input: 用有道来翻译输入单词
- popweb-dict-bing-pointer: 用Bing来翻译光标处单词
- popweb-dict-youdao-pointer: 用有道来翻译光标处单词
代理
代理设置,目前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翻译
有道翻译
LaTex预览
技术优势
popweb是具备EAF的核心的,包括:
- 支持完整的PyQt和Chromium浏览器渲染引擎
- 支持Elisp、Python、JavaScript互调用技术
- 支持 node 和 vue.js
popweb 和 EAF唯一的不同是, popweb没有处理窗口管理和按键转发,popweb天然支持 Windows, Mac, Linux平台,可以应用于各种 富文本弹出框 场景, 比如翻译、LaTex预览、文档提示、代码补全等。
后续
popweb是一个通用框架,不光可以展示翻译内容,也可以加载任意Web页面,欢迎大家贡献新的想法和插件。
Enjoy!