2023年11月20日 每日一猜答案:。
答案:ABC。 每日一猜答案分析:
列举几个免费的翻译接口。
百度翻译
官方文档:
https://fanyi-api.baidu.com/doc/21
免费版有请求频次限制。
请求的参数:
字段名 |
类型 |
是否必填 |
描述 |
备注 |
q |
string |
是 |
请求翻译query |
UTF-8编码 |
from |
string |
是 |
翻译源语言 |
可设置为auto |
to |
string |
是 |
翻译目标语言 |
不可设置为auto |
appid |
string |
是 |
APP ID |
可在管理控制台查看 |
salt |
string |
是 |
随机数 |
可为字母或数字的字符串 |
sign |
string |
是 |
签名 |
appid+q+salt+密钥的MD5值 |
常见语种列表(from/to):
名称 |
代码 |
名称 |
代码 |
名称 |
代码 |
自动检测 |
auto |
中文 |
zh |
英语 |
en |
粤语 |
yue |
文言文 |
wyw |
日语 |
jp |
韩语 |
kor |
法语 |
fra |
西班牙语 |
spa |
泰语 |
th |
阿拉伯语 |
ara |
俄语 |
ru |
葡萄牙语 |
pt |
德语 |
de |
意大利语 |
it |
希腊语 |
el |
荷兰语 |
nl |
波兰语 |
pl |
保加利亚语 |
bul |
爱沙尼亚语 |
est |
丹麦语 |
dan |
芬兰语 |
fin |
捷克语 |
cs |
罗马尼亚语 |
rom |
斯洛文尼亚语 |
slo |
瑞典语 |
swe |
匈牙利语 |
hu |
繁体中文 |
cht |
越南语 |
vie |
|
简单示例
onst md5 = require("md5");
async cidian_query(word) {
if (!word) {
return "";
}
let q = word;
let from = "zh";
let to = "en";
if (this.tozh) {
from = "en";
to = "zh";
} else {
from = "zh";
to = "en";
}
let appid = "xxx";
let key = "xxxx";
let salt = "10086";
let sign = md5("" + appid + q + salt + key);
let data = await this.mpost2(
"https://fanyi-api.baidu.com/api/trans/vip/translate",
{
q,
from,
to,
appid,
salt,
sign
}
);
if (data.error_code) {
this.$Message.error(data.error_msg);
return "";
} else {
let trans_result = data.trans_result;
let str_arr = [];
if (trans_result && trans_result.length > 0) {
for (let i = 0; i < trans_result.length; i++) {
let item = trans_result[i];
str_arr.push(item.dst);
}
}
console.info("转换:", str_arr.join("\n"));
return str_arr.join("\n");
}
}
mpost(url, para) {
let bodystr = "";
for (let item in para) {
if (item === "q") {
bodystr += "&" + item + "=" + encodeURIComponent(para[item]);
} else {
bodystr += "&" + item + "=" + para[item];
}
}
bodystr = bodystr.slice(1, bodystr.length);
return new Promise(function(resolve, reject) {
request(
{
url: url,
method: "POST",
json: true,
headers: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: bodystr
},
function(error, response, body) {
if (!error && response.statusCode === 200) {
resolve(body);
} else {
reject("请求接口失败");
}
}
);
});
}
|
但是注意免费的有调用频次限制,1秒内只能调用1次,否则会报错:
{"error_code":"54003","error_msg":"Invalid Access Limit"}
|
建议请求后延迟1秒再次调用
否则会报错
window.sleep = function(time) {
return new Promise(resolve => {
setTimeout(resolve, time);
});
};
word = await this.cidian_query(word);
await window.sleep(1000);
|
有道
示例
http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=计算
http://fanyi.youdao.com/translate?&doctype=json&type=ZH_CN2EN&i=计算
http://fanyi.youdao.com/translate?&doctype=json&type=ZH_CN2KR&i=计算
返回的数据
{"type":"ZH_CN2EN","errorCode":0,"elapsedTime":0,"translateResult":[[{"src":"计算","tgt":"To calculate"}]]}
|
注意返回的数据中有空格,注意处理。
type的类型有:
ZH_CN2EN 中文 » 英语
ZH_CN2JA 中文 » 日语
ZH_CN2KR 中文 » 韩语
ZH_CN2FR 中文 » 法语
ZH_CN2RU 中文 » 俄语
ZH_CN2SP 中文 » 西语
EN2ZH_CN 英语 » 中文
JA2ZH_CN 日语 » 中文
KR2ZH_CN 韩语 » 中文
FR2ZH_CN 法语 » 中文
RU2ZH_CN 俄语 » 中文
SP2ZH_CN 西语 » 中文
|
金山翻译
文字中有特殊符号时有时请求报错。
添加引用
示例
const md5 = require("md5");
async cidian_query(word) {
if (!word) {
return "";
}
try {
let u = {
client: 6,
key: 1000006,
timestamp: new Date().valueOf(),
word: word
};
let i = "http://dict.iciba.com/dictionary/word/query/web";
let l = "";
for (let c in u) {
l += String(u[c]);
}
u.signature = md5(
i.replace("http://dict.iciba.com", "") +
l +
"7ece94d9f9c202b0d2ec557dg4r9bc"
);
let data = await this.mget(i, u);
if (data.status === 1) {
console.info(data);
if (
data.message &&
data.message.baesInfo &&
data.message.baesInfo.translate_result
) {
return data.message.baesInfo.translate_result;
} else {
this.$Message.error("转换失败!");
return "";
}
} else {
this.$Message.error(data.message);
return "";
}
} catch (e) {
console.info(e);
}
}
mget(url, para) {
let parastr = "";
for (let key in para) {
parastr += "&" + key + "=" + para[key];
}
parastr = parastr.slice(1, parastr.length);
url = url + "?" + parastr;
return new Promise(function(resolve, reject) {
request(
{
url: url,
method: "get",
json: true,
headers: {
"content-type": "application/json"
}
},
function(error, response, body) {
if (!error && response.statusCode === 200) {
resolve(body);
} else {
reject("请求接口失败");
}
}
);
});
}
|
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。