评论

小工具 --- 百度翻译API翻译工具

原标题:小工具 --- 百度翻译API翻译工具

引言

最近想把一些英文官方文档的资料翻译成中文,然后转化为Markdown文档,然后发现百度通用翻译的API有不错的免费额度,个人申请也能申请到高级版。这个额度足够个人的日常使用了。

如何使用

如何使用通用翻译API?

  • 使用您的百度账号登录百度翻译开放平台;

  • 注册成为开发者,获得 APPID ;

  • 进行开发者认证(如仅需标准版可跳过);

  • 开通通用翻译API服务:开通链接;

  • 参考技术文档和 Demo 编写代码。

注册完毕后,就可以在百度开放翻译平台的管理控制台看到APPID和密钥,这样就可以通过直接调用翻译API了。

以下内容来自百度翻译开放平台官方文档:

API地址

通用翻译API通过 HTTP 接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。

通用翻译API HTTPS 地址:

https: //fanyi-api.baidu.com/api/trans/vip/translate

输入参数

请求方式:可使用 GET 或 POST 方式,如使用 POST 方式, Content-Type 请指定为: application/x-www-form-urlencoded 。

字符编码:统一采用 UTF-8 编码格式。

query 长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内(汉字约为输入参数 2000 个)。

输出参数

返回的结果是json格式,包含以下字段:

错误码

当翻译结果无法正常返回时,请参考下表处理

签名生成

「这里需要特别注意,签名生成容易出错!」

签名生成分为两步:

  1. 将请求参数中的 APPID(appid), 翻译 query(q,注意为UTF-8编码),随机数(salt),以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥的顺序拼接得到字符串 1。

  2. 对字符串 1 做 MD5 ,得到 32 位小写的 sign(注意一定转小写)。

除此之外,需要注意以下几点:

  • 待翻译文本(q)需为 UTF-8 编码;

  • 在生成签名拼接 appid+q+salt+密钥 字符串时,q 不需要做 URL encode,在生成签名之后,发送 HTTP 请求之前才需要对要发送的待翻译文本字段 q 做 URL encode;

  • 如遇到报 54001 签名错误,请检查您的签名生成方法是否正确,在对 sign 进行拼接和加密时,q 不需要做 URL encode,很多开发者遇到签名报错均是由于拼接 sign 前就做了 URL encode;

  • 在生成签名后,发送 HTTP 请求时,如果将 query 拼接在URL上,需要对 query 做 URL encode。

控制台程序Demo

接下来根据自己需要,参考上文中的参数,编写C#控制台程序,测试调用API接口。

usingSystem;

usingSystem.Net.Http;

usingSystem.Security.Cryptography;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Web;

classProgram

{

staticasyncTask Main( string[] args )

{

while( true)

{

varoriginalText = Console.ReadLine;

awaitTranslate(originalText);

}

}

staticasyncTask Translate( stringoriginalText )

{

stringAPP_ID = "*************"; //您的APPID

stringSecretKey = "****************"; //您的密钥

Random random = newRandom;

stringsalt = random.Next( 10000, 99999).ToString;

// appid + q + salt + 密钥的MD5值

stringsign = MD5Encrypt(APP_ID + originalText + salt + SecretKey);

// 将输入的字符串进行URL编码并构造HTTP请求URL

stringurl = $"https://fanyi-api.baidu.com/api/trans/vip/translate?"+

$"q= {HttpUtility.UrlEncode(originalText)}" +

$"&from=en"+

$"&to=zh"+

$"&appid= {APP_ID}" +

$"&salt= {salt}" +

$"&sign= {sign}" ;

try

{

using(HttpClient client = newHttpClient)

{

// 发送GET请求并获取响应内容

HttpResponseMessage response = awaitclient.GetAsync(url);

stringresponseBody = awaitresponse.Content.ReadAsStringAsync;

// 解析响应JSON并输出翻译结果

dynamicresult = Newtonsoft.Json.JsonConvert.DeserializeObject(responseBody);

Console.WriteLine( $" {originalText}的中文翻译为: {result.trans_result[ 0].dst} " );

}

}

catch(HttpRequestException e)

{

Console.WriteLine( $"发生HTTP请求错误: {e.Message}" );

}

}

publicstaticstringMD5Encrypt( stringinput )

{

byte[] inputBytes = Encoding.UTF8.GetBytes(input);

using(MD5 md5 = MD5.Create)

{

byte[] hashBytes = md5.ComputeHash(inputBytes);

returnBitConverter.ToString(hashBytes).Replace( "-", "").ToLower;

}

}

}

示例图:

参考

百度翻译开放平台文档地址:https://fanyi-api.baidu.com/doc/21

返回搜狐,查看更多

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
大家都在看
推荐阅读