
两行 js 实现 html 全自动翻译。 无需改动页面、无语言配置文件、无 API Key、对 SEO 友好!
translate.service 升级,开放翻译API+AI私有化部署
translate.service 整体大架构优化,极大降低服务器资源占用,同时深度融合各种大模型如智谱AI 、DeepSeek 等,开放 linux 一键部署。
它可以提供标准的文本翻译API,一方面可以配合 translate.js 进行使用,另一方面如果你需要文本翻译,完全可以使用它,而不用再去给传统文本翻译付费了。
放出智谱AI的 translate.service 全套完整部署方案,并针对智谱免费的 Flash 模型进行深度优化:
它对小模型(glm-4-9b)在文本翻译领域的实际应用场景应用进行了深度调优,以达到稳定可用的能力
- 注意力机制方面优化。比如译文是疑问句时,结果得到答案的译文的情况
- 句子规则内容的高容错支持。多种语种混合的句子、内容不通顺的都可以支持。另外针对不具有具体含义的、不具备翻译价值的内容使用。比如“abc-321”这样的订单号。避免影响小模型识别
- 上下文理解偏差方面优化。比如翻译时,个别文字没有被翻译的情况。
- 文本生成中的循环陷阱问题优化。比如英文翻译为中文时,出现无限循环、无标点输出的现象,模型生成失控(DeepSeek出现,智谱目前已经发现,但也已增加)
- 翻译精确度优化。对译文的精确度进行处理优化,自动修复精确度不达标的译文,进行更正。
- 多模型混用及自动调度。正常翻译机制有免费的Flash小模型进行,当精度不足时大模型才介入修复。
- 多线程并发能力支持。大模型的输出速度是有上限的,比如输出速度为50字/秒,那你翻译100个句子,每个句子50个字,你需要100秒才能得到翻译结果。而如果你开启了线程池的能力,实现最大100个线程的话,只需要1秒。
- 针对网址的处理能力。杂乱不规则文本中,准确识别网址,不破坏网址构造。
说句人话,就是可以针对不规则的句子、多语种混合的句子、前后各种不通顺的句子进行翻译,同时还能达到传统文本翻译的极速响应,花的钱却远远低于传统文本翻译的钱。
另外translate.service 增加 giteeAI 大模型的适配支持(giteeAI 的 glm-4-9b是免费不花钱的)
translate.js 升级说明
- translate.js 增加对本地语种法语、西班牙语、葡萄牙语、意大利语这些罗曼语族语种的支持
- translate.js 增加 translate.progress ,可以对API接口触发翻译的过程进行一些自定义效果,在文本进行调用API翻译接口进行翻译的过程中,被翻译的文本所在元素区域会显示一层加载中的遮罩层,以提高用户体验,避免先显示源语种,过1秒又变成翻译后语种的视觉现象。
- translate.js 提高对多语种共存混合的句子的语种判定精度;
- translate.js 翻译后去除对英文进行小写的限制
- translate.js 优化edge模式的单词翻译上限,增加单词上限限制900个数组以内,以避免翻译被拦截
- translate.js 初步增加 translate.util.split 对数组拆分的传入参数,以解决 edge.client 通道数组过大无法翻译问题
- translate.js 本地浏览器默认语种增加对 en-US 的适配
- translate.js 增加对需要调用API进行的翻译自定义监控事件,可在经过API翻译前触发、以及API翻译响应并在dom渲染完毕后触发
- translate.js 增加多次加载的拦截,避免代码失误导致多次植入 translate.js 并且多次触发元素动态变动翻译导致页面性能下降的问题
- translate.js 增加 translate.language.textTranslateReplace 对某段文本中的指定单词进行翻译。主要针对智谱AI的flash模型进行漏翻译的适配。
- translate.js 增加 translate.util.urlSplitByText 对文本内容中的url进行分割
- translate.js 优化 translate.selectLanguageTag.refreshRender() 所展示出来的当前应该显示的语种,优化其判断当前应该显示的语种数据从translate.language.getCurrent() 获取
- translate.js 增加 translate.listener.ignoreNode 的能力,用于对翻译本身所触发的node改动进行的第二重记录,以避免其以及相关父级等元素再被触发翻译;
- translate.js 的 translate.changeLanguage(...) 增加对子iframe元素的控制,如果子iframe中也有载入 translate.js ,那么父级发生语种切换后,其子iframe也会跟随进行切换;
- translate.js 增加多次加载的拦截,避免代码失误导致多次植入 translate.js 并且多次触发元素动态变动翻译导致页面性能下降的问题
- translate.js 修复 translate.request.translateText 传入对最早的版本传入单个翻译文本进行翻译的适配问题
- translate.js 优化 nuxt 中使用时,命中缓存后如果还有别的扫描变动,会触发报错的异常问题
- translate.js 增加多次引入 translate.js 的自检异常提示
- translate.js 优化 translate.listener.start(); 如果当前语种跟本地语种一致的同时,并没有启用强制翻译能力,也就是不需要进行翻译时,监听将不生效,不占用性能资源。
在线体验
http://res.zvo.cn/translate/demo.html
快速使用
在你的网页最末尾, </html>
之前,加入以下代码,会在页面的最底部出现选择语言的标签:
<script src="https://cdn.staticfile.net/translate.js/3.14.0/translate.js"></script> <script> translate.language.setLocal('chinese_simplified'); //设置本地语种(当前网页的语种)。如果不设置,默认就是 'chinese_simplified' 简体中文。 可填写如 'english'、'chinese_simplified' 等 translate.service.use('client.edge'); //设置机器翻译服务通道,直接客户端本身,不依赖服务端 。相关说明参考 http://translate.zvo.cn/43086.html translate.execute(); //进行翻译 </script>
开源适配
如果您有开源项目,比如文档、cms、UI 框架、后台管理框架、等等,需要采用此进行多语言切换,欢迎喊我,传统 i18n 工作量太大,每次更新也容易遗漏,而 translate.js 是您最佳的选择,我们无偿提供全程接入讨论及遇到的问题跟随优化,希望我们的开源项目能互相产生作用一起越来越好。
2024 年结束,我们码云仓库托管也已突破 1k star ,已有巨量的用户用它来替代传统 i18n,以下单位已接入并进行使用,提供参考:
还没有评论,来说两句吧...