AI 开发——改了一个浏览器翻译插件
前言
在《我在用什么浏览器翻译插件?》这篇博文里我提到过我对浏览器翻译插件的体验和需求,那时候用了一阵子的 trancy,后来不知何时就弃用了,当时我就提到过,这不是我理想中的翻译插件(个人主观原因)。
在简单导航(simpleNav)基本不必再改动之后,我又萌生了改一个停更开源翻译插件的想法,虽然很早之前就有过,但 codebbudy 没能给我足够的信心。现在换上了 trae solo,我觉得效率上起码要高出不少。
选择
选择项目
停更许久的翻译插件大多是翻译接口失效或者不好用,看起来只需要替换接口就可以,所以我想找的是轻量,且使用体验比较适合我的项目。对比了一下轻氧翻译和侧边翻译,我最终选择了后者。
侧边翻译是我曾使用过很长一段时间的翻译插件,可惜已经停更很久了。加上现在各大翻译插件都有 AI 模型的加持,传统的机翻很难满足要求。
为了避免误导其他人,所以在遵循原项目的开源协议前提下,把这个新项目命名为“轻量翻译”,英文名:lightrans。
选择接口
既然不要机翻,又要考虑到公开给大众使用,就不能有高昂的开支,所以我首先想到的是用智谱清言的官方 api 调用 GLM 4.5-Flash,但是并发数限制得非常低,加上翻译速度没有达到我期望的即点即译,于是作罢。
好在我又体验了一下 trancy,发现 trancy 也没有免费提供 GLM 模型,而是改成了硅基流动。于是我注册了硅基流动的账号,发现居然有免费的模型可以使用!硅基流动真是带善人!
首先体验的是 deepseek 的一个模型,翻译速度也很慢(我猜测是因为有推理思考过程),在网上多方了解,发现Hunyuan-MT-7B倒是一个不错的专为翻译而生的小模型,腾讯混元官方的 api 依然是收费的,还好硅基流动限免提供使用。最后我选择了三个体量都不大的小模型:Hunyuan-MT-7B、Qwen2.5-7B-Instruct和GLM-4-9b-chat。
这三个模型除了混元比较新之外,另外两个都算比较老的模型了,没办法,不花钱嘛,况且效果也不是不好。
根据我的用量级别,我使用这几个模型的速率限制为:1000 RPM 和 80000 TPM。即每分钟请求数1000,每分钟处理 token 数80000。
开改
精简代码
侧边翻译不是个人开发者的作品,应该类似于一些较大的开源项目组织维护,所以侧边翻译里有非常丰富和强大的功能及代码。考虑到我只需要接入一个翻译接口,于是必应、谷歌和百度等翻译接口都删掉了。
初次以外还删掉了分析代码、隐私政策、部分设置项和个别国家的本土化适配等等,源代码从14MB缩减到4.5MB。
添加翻译器
由于我选择的三个模型都是对话模型,所以请求的 api 地址一样,于是我只创建了一个 aitrans 的翻译器,方便测试就在代码里明文写了我的私钥,经过测试,对话框(popup)翻译正常,划词翻译正常,但是网页翻译不正常。
修改
原本的侧边翻译的对话框默认是搜索的,输入文本点击翻译后即会在侧边栏显示翻译结果,但是测试了一下目前的翻译接口都已经失效了。为了获得输入和获取结果的一致性,即当前对话框不会被打断关闭而显示另一个对话框,我改了 popup 的样式,并使它能够直接在当前窗口显示结果。
除了对话框以外,侧栏显示翻译也会让人的视线离开当前关注的区域,所以我把划词翻译的结果也以浮动的卡片形式显示在了当前位置,并且和原来一样支持拖动。以下是划词翻译中三个不同模型结果的对比(发音按钮点击无效,功能删了但是还没删按钮):
当然,用不着的设置项也可以删掉,因为我的需求没有那么丰富(不然就用 trancy了),为了追求极简但好用,所以砍掉了许多原本有的功能,也为后面的修改和维护减轻一点负担。
看起来基本可以正常使用了,但是网页全文翻译依然不行。原项目使用的是谷歌和有道,但是有道已经下线了,谷歌在国内也无法直接访问,看来要支持网页翻译需要改动的还挺多。
中间的过程就不再赘述了,除了新增代码,调试代码之外,还要测试不同的请求频次和字符数,以免触发硅基流动限频的策略。
一开始选中模型进行网页翻译,往往要过十来秒钟页面才会有变化。或许是内容太多了模型处理也要时间吧,于是我设定了分批次提交,最高并发三个,最多重试三次。所以在进行网页翻译的时候可以看到内容是一部分一部分出来的,但是间隔不算大(主要是网页本身的菜单栏花的时间多,正文其实很快)。这样用户能感知到翻译已经开始了,而不是像之前一样等待了十来秒都没反应,于是不断尝试,就更容易触发限频。
从翻译结果来看,不知道为什么千问模型会漏掉几个词语不翻译,也可能是我的代码有问题,相比之下,混元模型翻译得还不错,有些专有名词甚至会加括号解释说明。比如昨天在新华网英文站翻译页面时,发现它会解释“GuoChao”这一个词汇,但是我没找到那篇新闻,只能找另一个,没想到也复现了。
这是更完整的页面翻译。
最后
通过这次改写这个开源项目,我才发现原来微软的机翻 api 也是要钱的,那么多较大的翻译插件都把谷歌和微软翻译免费使用,甚至开放一些 AI 模型翻译免费使用,这样看起来他们真的是在为爱发电了。
而我能轻松改写这个项目,要感谢侧边翻译的开发者们的开源,也要感谢 trae solo 的帮助。考虑到我的 api 限频问题,所以暂时没想过上架应用商店,但是如果愿意体验并且给我提出意见的话,也欢迎下载扩展包尝试一下。
项目地址:hin/Lightrans · CNB
















