相信很多人都用过 Zotero 的 Translate for Zotero 这个翻译插件,但是它自带的 Google 翻译能力很糟糕,跟网页版的 Google 翻译效果差远了。
所以很多人会使用一些进阶的设置,通过 API 接入各家的大模型,翻译效果会好很多。不过各家大模型能力参差不齐,比如百度、腾讯的翻译能力就一般,机翻味儿很重。各家 API 的调用次数限制也各不相同,像百度的普通翻译接口,每个月前 50 万个字符(约 25 万到 30 万个汉字)是免费的,超过了就需要付费。我先前也接了一个 DeepSeek 的 API,按量收费的,百万 tokens 两毛钱,效果还行,就是不知道为什么速度很慢。
最近看到 Google 云盘有一个 Apps Script 的功能,碰巧它有内置的 LanguageApp.translate() 函数,正好拿来试试。效果非常 amazing 啊,跟网页版 Google 翻译效果完全一样,比 DeepSeek 效果好,速度也更快。我看了一下官方文档,它这个限制是每天 5000 次的请求,每次上限 10000 个字符,相比之下还是蛮划算的,个人用是完全足够了。
首先我们打开 Google 云端硬盘,点击左上角“新建 - 更多 - Google Apps Script”,点击创建脚本,我们将这串代码粘贴进去,然后保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| function doPost(e) { var rawData = e.postData.contents; var payload = {}; var debugMode = false;
try { payload = JSON.parse(rawData); if (payload.debug === true || payload.debug === "true") { debugMode = true; } } catch (err) { return createResponse("JSON 解析错误: " + err.toString()); }
var fullContent = ""; if (payload.messages && payload.messages.length > 0) { fullContent = payload.messages[payload.messages.length - 1].content; } var sourceText = ""; var langTo = "zh-CN"; if (fullContent.indexOf("--->") !== -1) { var splitIndex = fullContent.lastIndexOf("--->"); sourceText = fullContent.substring(0, splitIndex).trim(); langTo = fullContent.substring(splitIndex + 4).trim(); } else { sourceText = fullContent; }
var translatedText = ""; try { if (sourceText) { translatedText = LanguageApp.translate(sourceText, '', langTo); } else { translatedText = "未获取到待翻译文本"; } } catch (err) { translatedText = "Google 引擎报错: " + err.toString(); }
var finalDisplay = translatedText; if (debugMode) { finalDisplay = "【翻译结果】\n" + translatedText + "\n\n【Debug 原始请求包】\n" + rawData + "\n\n【解析参数】\n原文: " + sourceText + "\n目标语言: " + langTo; } return createResponse(finalDisplay); }
function createResponse(text) { var out = { "choices": [{ "message": { "role": "assistant", "content": text }, "finish_reason": "stop" }] }; return ContentService.createTextOutput(JSON.stringify(out)) .setMimeType(ContentService.MimeType.JSON); }
function doGet(e) { return ContentService.createTextOutput("服务正常。请在使用 POST 请求。"); }
|
点击“部署 - 新建部署”,点击左边小齿轮 - web 应用,然后配置参数说明随便填,具有访问权限的用户改成选择 “所有人” (Anyone),最后点击底部的 “部署”。
部署成功会生成一串地址,我们复制这一串地址,打开Zotero的设置 - 翻译 - 翻译服务,拉到最下面有三个自定义GPT选项,密钥不用填,点击配置,把刚才复制的一串地址粘贴到接口里面,模型和温度都不用设置,然后提示词按照下面输入:
1
| ${sourceText} ---> ${langTo}
|
这里 ${sourceText} 就是你要翻译的原文,${langTo} 是你要翻译成的语言,然后我们把流式输出关闭,点击保存。
最后还有一点就是把“向GPT/Claude/Gemini服务提供论文标题和摘要”这一设置项取消勾选,当然你要是后面改用其他大模型翻译的话,可以把这个选项再勾回去。
文章标题: 基于 Apps Script 为 Zotero 接入更强的 Google 翻译能力
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 参星阁!