前言
Linux.do可以白嫖DeepL的翻译,用的就是DeepLX,至于DeepLX是啥,这个就不多说了,自己去Google查。由于Bob自带的DeepL插件不支持自定义API,网上虽然也有几个,但是总感觉不完善,因此准备自己撸一套。
下载
代码详解
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 key (
处理API响应:
- 如果响应中包含替代翻译(
resp.data.alternatives),将这些替代翻译合并成一个字符串。 - 调用
success函数,将查询、翻译结果和替代翻译传递给completion回调函数。
- 如果响应中包含替代翻译(
自定义API:
- 如果
$option.apiMenu不等于1,则检查用户是否提供了自定义API URL。 - 如果提供了自定义API URL,发送翻译请求并处理响应。
- 如果没有提供自定义API URL,则调用
completion回调并返回错误信息。
- 如果
截图

