前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >免费的翻译接口

免费的翻译接口

作者头像
码客说
发布2022-02-28 11:36:54
7.1K0
发布2022-02-28 11:36:54
举报
文章被收录于专栏:码客

前言

列举几个免费的翻译接口。

百度翻译

官方文档: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

简单示例

代码语言:javascript
复制
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次,否则会报错:

代码语言:javascript
复制
{"error_code":"54003","error_msg":"Invalid Access Limit"}

建议请求后延迟1秒再次调用

否则会报错

代码语言:javascript
复制
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=计算

返回的数据

代码语言:javascript
复制
{"type":"ZH_CN2EN","errorCode":0,"elapsedTime":0,"translateResult":[[{"src":"计算","tgt":"To calculate"}]]}

注意返回的数据中有空格,注意处理。

type的类型有:

代码语言:javascript
复制
ZH_CN2EN 中文 » 英语
ZH_CN2JA 中文 » 日语
ZH_CN2KR 中文 » 韩语
ZH_CN2FR 中文 » 法语
ZH_CN2RU 中文 » 俄语
ZH_CN2SP 中文 » 西语
EN2ZH_CN 英语 » 中文
JA2ZH_CN 日语 » 中文
KR2ZH_CN 韩语 » 中文
FR2ZH_CN 法语 » 中文
RU2ZH_CN 俄语 » 中文
SP2ZH_CN 西语 » 中文

金山翻译

文字中有特殊符号时有时请求报错。

添加引用

代码语言:javascript
复制
npm install md5 --save

示例

代码语言:javascript
复制
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);
    // parastr = encodeURIComponent(parastr);
    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("请求接口失败");
                }
            }
        );
    });
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 百度翻译
  • 有道
  • 金山翻译
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档