引言

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

如何使用

如何使用通用翻译API?

  • 使用您的百度账号登录百度翻译开放平台
  • 注册成为开发者,获得 APPID ;
  • 进行开发者认证(如仅需标准版可跳过);
  • 开通通用翻译API服务:开通链接
  • 参考技术文档和 Demo 编写代码。

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

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

API地址

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

通用翻译API HTTPS 地址:

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

输入参数

请求方式: 可使用 GETPOST 方式,如使用 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接口。

using System;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web; class Program
{
static async Task Main(string[] args)
{
while (true)
{
var originalText = Console.ReadLine();
await Translate(originalText);
}
} static async Task Translate(string originalText)
{
string APP_ID = "*************";//您的APPID string SecretKey = "****************";//您的密钥 Random random = new Random(); string salt = random.Next(10000, 99999).ToString();
// appid + q + salt + 密钥的MD5值
string sign = MD5Encrypt(APP_ID + originalText + salt + SecretKey);
// 将输入的字符串进行URL编码并构造HTTP请求URL
string url = $"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 = new HttpClient())
{
// 发送GET请求并获取响应内容
HttpResponseMessage response = await client.GetAsync(url); string responseBody = await response.Content.ReadAsStringAsync();
// 解析响应JSON并输出翻译结果
dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(responseBody); Console.WriteLine($"{originalText} 的中文翻译为:{result.trans_result[0].dst}");
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"发生HTTP请求错误: {e.Message}");
}
} public static string MD5Encrypt(string input)
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input); using (MD5 md5 = MD5.Create())
{
byte[] hashBytes = md5.ComputeHash(inputBytes); return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
}
}
}

示例图:

小工具 --- 百度翻译API翻译工具的更多相关文章

  1. C#调百度通用翻译API翻译HALCON的示例描述

    目录 准备工作 参数简介 输入参数 输出参数 使用HttpClient 翻译工具类 应用:翻译HALCON的示例描述 准备工作 HALCON示例程序的描述部分一直是英文的,看起来很不方便.我决定汉化一 ...

  2. HTM L百度地图API 自定义工具地图实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Go语言使用百度翻译api

    Go语言使用百度翻译api 之前做过一个使用百度翻译api的工具,这个工具用于用户的自动翻译功能,是使用C#调用百度翻译api接口,既然在学习Go语言,那必然也是要使用Go来玩耍一番.这里我是这么安排 ...

  4. 【百度地图API】百度API卫星图使用方法和卫星图对比工具

    原文:[百度地图API]百度API卫星图使用方法和卫星图对比工具 百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度 ...

  5. web开发如何使用百度地图API(一)判断点是否在范围内

    准备工作 注册开发者 创建应用 拿到百度地图ak 前端实现方案 引入百度地图API和工具类库 <script type="text/javascript" src=" ...

  6. 基于百度通用翻译API的一个翻译小工具

    前几天写了一个简单的翻译小工具,是基于有道翻译的,不过那个翻译接口有访问限制,超过一定次数后会提示访问过于频繁,偶然发现百度翻译API如果月翻译字符少于200万是不收取费用的,所以就注册了一个百度开发 ...

  7. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...

  8. 原生js简单调用百度翻译API实现的翻译工具

    先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...

  9. C#借助谷歌翻译实现翻译小工具(一)基本功能实现

    软件效果: 实现原理很简单,就是封装谷歌翻译网站:http://translate.google.cn/,一个WebBrowser"肢解"谷歌翻译网站的HtmlElement元素, ...

  10. WP8.1小梦词典开发2:百度翻译API使用

    原文出自:http://www.bcmeng.com/api2/ 小梦昨天和大家分享了WP8.1金山词霸API使用方法,今天继续分享windows phone 8.1中百度翻译API的使用方法.和昨天 ...

随机推荐

  1. 修改windows电脑键盘按键映射

    改键的需求 买了一把61键的小键盘,有些按钮没有,比如Home.End.四个方向键,这些键需要按Fn+XX来实现,所以上网查了一下键盘按键修改的方法,即把按键给改了,比如把右边的Ctrl改成方向键. ...

  2. NLP国内外大模型汇总列表[文心一言、智谱、百川、星火、通义千问、盘古等等]

    NLP国内外大模型汇总列表[文心一言.智谱.百川.星火.通义千问.盘古等等] 中国大模型列表大全,全面收集有明确来源的大模型情况,包括机构.来源信息和分类等,随时更新. Awesome family ...

  3. 环境调试bug【一】

    1.报错修改`np.bool`---bool H:\Anaconda3-2020.02\envs\parl\lib\site-packages\paddle\fluid\framework.py:54 ...

  4. 4.2 Inline Hook 挂钩技术

    InlineHook 是一种计算机安全编程技术,其原理是在计算机程序执行期间进行拦截.修改.增强现有函数功能.它使用钩子函数(也可以称为回调函数)来截获程序执行的各种事件,并在事件发生前或后进行自定义 ...

  5. Liunx知识点整理

    Linux知识点整理 目录和文件 ls (list)显示当前目录下的文件或目录 a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) l 除文件 ...

  6. 使用KVM创建OEL虚拟机

    在Linux工作站上使用KVM创建虚拟机. 首先说下我的需求: 1.其他LAN内的笔记本也可以连接到这些KVM的虚拟机,因此需要配置使用桥接网络 2.创建一个虚拟机,采用最小化安装系统,作为基础模版, ...

  7. 【Android】使用 ContentObserver 监控统状态信息

    1 前言 使用ContentProvider实现跨进程通讯 中介绍了自定义 ContentProvider,为外界提供操作 SQLite 的接口.但是大多数情况下,服务端的 ContentProvid ...

  8. 配置主机访问virtualbox中redhat7.3虚拟机网络(其他系统配置也类似)

    为什么默认无法访问? virtualbox默认分配一个NAT网络,这个是给虚拟机操作系统访问互联网用的,默认主机通过这个ip段无法直接访问虚拟机.[网卡1] 需要添加一块网卡 在虚拟机关闭状态下,点[ ...

  9. Springboot+Freemarker+Boostrap实现用户增删改查实战

    说明 做java web用的2大模板语言分别是:thymeleaf和freemarker,thymeleaf前面已经用了很多了,所以今天用一下这个freemarker. 技术栈 springboot ...

  10. spring boot中使用定时任务

    1.在主类上添加EnableScheduling注解 package com.laoxu.gamedog; import org.springframework.boot.SpringApplicat ...