209 - 《100 行代码实现 Deepl + 双语翻译的 Bookmarklet》
发布于 2022年11月7日
周末看到一个插件 https://github.com/theowenyoung/Traduzir-paginas-web ,可以实现中英双语的对照翻译效果。但是,全文翻译只支持 Google 和 Yandex,翻译效果不好,同时翻了下代码不好接 DeepL,于是准备手写一个。
效果见图。
如何实现?整理了下分几步。
1、找到正文节点
2、找到正文下所有 block 类型的子节点
3、往节点数组里额外加上标题节点
4、翻译节点文本
5、复制节点并插入翻译后文本
代码我传到 gist 了,见 https://gist.github.com/sorrycc/10f67ac688dce5301d8a690d8143882a 。(可以看个思路,具体用起来需要有 deepl api server,有些成本的)
唯一有点技术含量的就是找正文节点的逻辑了,是这样。1)先找文本数最多的 P 节点,2)然后往上找到包含整体页面 40%(这个系数可以调) 以上文本数的节点,3)如果是 P 标签,往上找一级。
最后我临