Loading... ## 前言 Linux.do可以白嫖DeepL的翻译,用的就是DeepLX,至于DeepLX是啥,这个就不多说了,自己去Google查。由于Bob自带的DeepL插件不支持自定义API,网上虽然也有几个,但是总感觉不完善,因此准备自己撸一套。 ## 下载 * 下载地址:[下载地址](https://github.com/almightyYantao/bob-plugin-deeplx-translator/releases) * 完整代码仓库:https://github.com/almightyYantao/bob-plugin-deeplx-translator ## 代码详解 ``` function translate(query, completion) { // 判断是否选择了apiMenu的第一个选项 if ($option.apiMenu == 1) { // 如果apiMenu为1,检查是否配置了API key if ($option.key) { // 如果有API key,发送翻译请求 send(query, "https://api.deeplx.org/" + $option.key + "/translate").then( (resp) => { // 定义一个变量来存储翻译建议字符串 let alternativesString = ""; // 如果响应中包含替代翻译 if (resp.data.alternatives) { // 将替代翻译数组合并成一个字符串,每个翻译占一行 alternativesString = resp.data.alternatives.join("\n"); } // 调用成功处理函数,将查询,翻译结果和替代翻译传递过去 success(query, [resp.data.data], alternativesString, completion); } ); } else { // 如果没有配置API key,调用完成回调函数并返回错误信息 completion({ error: { type: "secretKey", message: "配置错误 - 请确保您在插件配置中填入了正确的 API Keys", addition: "请在插件配置中填写正确的 API Keys", }, }); } } else { // 如果apiMenu不为1,检查是否配置了自定义API地址 if ($option.customUrl) { // 如果有自定义API地址,发送翻译请求 send(query, $option.customUrl).then((resp) => { // 定义一个变量来存储翻译建议字符串 let alternativesString = ""; // 如果响应中包含替代翻译 if (resp.data.alternatives) { // 将替代翻译数组合并成一个字符串,每个翻译占一行 alternativesString = resp.data.alternatives.join("\n"); } // 调用成功处理函数,将查询,翻译结果和替代翻译传递过去 success(query, [resp.data.data], alternativesString, completion); }); } else { // 如果没有配置自定义API地址,调用完成回调函数并返回错误信息 completion({ error: { type: "param", message: "配置错误 - 你设置了自定义API,但未设置API地址", addition: "请在插件配置中填写正确的API地址", }, }); } } } ``` * **函数**`translate`: * 接受两个参数:`query`(用户输入的查询)和`completion`(回调函数,用于处理翻译结果或错误)。 * **检查**`$option.apiMenu`: * 如果`$option.apiMenu`等于1,则表示用户选择了使用特定API进行翻译。 * **检查API key**: * 如果用户在配置中提供了API key (`$option.key`),则构造请求URL并发送请求。 * 如果没有提供API key,则调用`completion`回调并返回错误信息。 * **处理API响应**: * 如果响应中包含替代翻译(`resp.data.alternatives`),将这些替代翻译合并成一个字符串。 * 调用`success`函数,将查询、翻译结果和替代翻译传递给`completion`回调函数。 * **自定义API**: * 如果`$option.apiMenu`不等于1,则检查用户是否提供了自定义API URL。 * 如果提供了自定义API URL,发送翻译请求并处理响应。 * 如果没有提供自定义API URL,则调用`completion`回调并返回错误信息。 ## 截图 ![](https://minio-api.open.yantao.wiki:16666/blog-image/2024/07/20/669b0b3b27cc1.png) ![](https://minio-api.open.yantao.wiki:16666/blog-image/2024/07/20/669b0b44abb84.png) 最后修改:2024 年 10 月 05 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏