51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

PHP 调用百度翻译 API

百度翻译 AP I是百度为开发者提供的翻译服务,只要在您的网站或 APP 里调用百度翻译 API,您的网站或应用就可以实现翻译功能。对于国际网站来说,翻译功能是必不可少的,向 Facebook 和 Twitter 也都有翻译功能,只需点击一下就可以把推文或评论翻译为你使用的语言。而我也把百度翻译加入到了我的图像识别里,OCR识别完成后就可以翻译识别到的文字,如果我想翻译一段不能直接复制粘贴的文字而又不想手动输入的话就可以直接拍照或截图上传,等待OCR识别完成后就可以直接翻译。

百度翻译 API 分为通用翻译 API 和定制化翻译 API,下面是百度给出的介绍:

通用翻译API支持28种语言互译,覆盖中、英、日、韩、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;支持28种语言的语言检测。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言,即可得到相应的翻译结果。任何第三方应用或网站都可以通过使用通用翻译API为用户提供实时优质的多语言翻译服务,提升产品体验。

定制化翻译API是指在通用翻译模型基础上,基于开发者提供的领域数据,通过自适应技术,快速构建的定制化训练模型。定制化翻译API目前支持中英、英中方向,后续逐步支持其他语言方向。开发者使用定制化翻译API可以更好地与您的应用场景相匹配,获得更好的翻译效果。

这里就以通用翻译 API 为例,简单说一下百度翻译 API 的注册和使用。

注册

点击 百度翻译开放平台 进入百度翻译开放平台来申请服务,

百度翻译开放平台

点击立即使用,如果没有登录百度账号的话就需要登录百度账号。按照提示填写个人信息,主要就是邮箱和手机号之类的。接着需要填写服务信息,应用或网站名称可以直接填你的网站名称,如果还没有网站的话可以随便填写,例如 翻译。相关网址可以直接填你的域名,如果没有域名的话就直接填服务器IP。网站或应用简介可以随便填。服务器地址可以填你的服务器IP,如果是APP的话可以不用填写,如果填写了服务器地址后就只有填写的服务器IP才能调用百度翻译。填写完成后提交申请,注册完成。

使用

百度翻译 API 是通过发送 get 请求或 post 请求来调用的,所以只要能发送这两种请求的语言都可以使用百度翻译 API,因为我对 PHP 比较熟,所以这里就用 PHP 来掩饰。

下面是请求地址

通用翻译 API HTTP地址:

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

通用翻译 API HTTPS地址:

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

申请完成后会获得一个 APP ID和密钥,发送翻译请求的时候需要用来验证身份,下面是需要发送的信息:

| 字段名 | 必填参数 | 说明 | |-------|------|--------------------------| | q | 是 | 请求翻译query,也就是要翻译的内容 | | from | 是 | 翻译源语言,设置为auto可自动检测 | | to | 是 | 译文语言,不能设置为auto | | appid | 是 | APP ID,可以在管理控制台查看 | | salt | 是 | 随机数,随便生成一个随机数就可以 | | sign | 是 | 签名,appid+q+salt+密钥 的MD5值 |

下面就用 PHP 来掩饰一下:

PHP代码:

<?php

const APP_ID = '34354646';  //  使用常量来保存APP ID
const KEY = 'dfefer343ff';  //  使用常量来保存密钥

$query = 'Are you ok';  //  要翻译的内容
$url = 'https://api.fanyi.baidu.com/api/trans/vip/translate';  //  发送请求的URL
$salt = mt_rand(11111111, 99999999);  //  随机数
$sign = APP_ID . $query . $salt . KEY;  //  APPID+翻译内容+随机数+密钥
$sign = md5($sign);  //  md5加密,生成签名

//  下面是url拼接
$url = $url . '?q=' . urlencode($query) . '&from=auto&to=zh&appid=' . APP_ID . '&salt=' . $salt . '&sign=' . $sign;

$data = file_get_contents($url);  //  发送get请求

上面把 Are you ok 翻译为中文,mt_rand 用来生成随机数的函数,我把翻译源语言设置为 auto,译文语言设置为中文,为了方便 使用的是 GET 方式提交,如果需要翻译的内容比较长的话可以使用 POST 方式提交,关于 PHP 发送 POST 可以看 PHP 发送 GET 和 POST 请求

翻译源语言和译文语言需要使用语言简写,下面是语言简写:

| 语言简写 | 名称 | |------|--------| | auto | 自动检测 | | zh | 中文 | | en | 英语 | | yue | 粤语 | | wyw | 文言文 | | jp | 日语 | | fra | 法语 | | spa | 西班牙语 | | th | 泰语 | | ara | 阿拉伯语 | | ru | 俄语 | | pt | 葡萄牙语 | | de | 德语 | | it | 意大利语 | | el | 希腊语 | | nl | 荷兰语 | | pl | 波兰语 | | bul | 保加利亚语 | | est | 爱沙尼亚语 | | dan | 丹麦语 | | fin | 芬兰语 | | cs | 捷克语 | | rom | 罗马尼亚语 | | slo | 斯洛文尼亚语 | | swe | 瑞典语 | | hu | 匈牙利语 | | cht | 繁体中文 | | vie | 越南语 |

翻译完成后会返回一个 JSON 数据,下面是参数说明:

| 字段名 | 描述 | |--------------|---------------------------| | from | 翻译源语言 | | to | 译文语言 | | trans_result | 翻译结果,trans_result里包含原文和译文 | | src | 原文 | | dst | 译文 |

下面是返回的 JSON:

JSON:

{
    "from": "en",
    "to": "zh",
    "trans_result": [
        {
            "src": "Are you ok",
            "dst": "你还好吗?"
        }
    ]
}

因为这个 JSON 只是一个字符串,如果要操作的话需要转换为 PHP 对象,有关 PHP 操作 JSON 的方法可以看 PHP 操作 JSON 格式数据

如果翻译发生错误也会返回一个 JSON,其中就包含错误码,下面是错误码说明:

| 错误码 | 含义 | 解决方法 | |-------|------------|----------------------------------| | 52000 | 成功 | | | 52001 | 请求超时 | 重试 | | 52002 | 系统错误 | 重试 | | 52003 | 未授权用户 | 检查您的 appid 是否正确,或者服务是否开通 | | 54000 | 必填参数为空 | 检查是否少传参数 | | 54001 | 签名错误 | 请检查您的签名生成方法 | | 54003 | 访问频率受限 | 请降低您的调用频率 | | 54004 | 账户余额不足 | 请前往管理控制平台为账户充值 | | 54005 | 长query请求频繁 | 请降低长query的发送频率,3s后再试 | | 58000 | 客户端IP非法 | 检查个人资料里填写的 IP地址 是否正确,可前往管理控制平台修改 | | 58001 | 译文语言方向不支持 | 检查译文语言是否在语言列表里 |

下面是请求发生错误时返回的 JSON:

JSON:

{
    "error_code": "58000",
    "error_msg": "INVALID_CLIENT_IP",
    "data": {
        "client_ip": "38.128.114.146"
    }
}

根据错误码来定位错误,客户端IP非法。

价格说明

通用翻译 API 每月提供 200 万 字符免费额度,超出后需要按照字符数收费。

当月翻译字符数 ≤ 200 万,当月免费。

超过 200 万 字符,按照 49 元 人民币/百万字符,支付当月全部翻译字符数费用。

字符数以翻译的源语言字符长度为标准计算。一个汉字,英文字母,标点符号等,均计为一个字符。注:空格、html 标签等均计入在内。

相关文章:


赞(3)
未经允许不得转载:工具盒子 » PHP 调用百度翻译 API