在Fastadmin中对接使用百度翻译API
目录
对接使用百度翻译API
使用前准备
需要注册百度账号,也可以使用原有的百度账号登录。
在开发者中心找到APPid和密钥,以备开发使用。
项目集成
创建配置文件
在application/extra/中创建translate.php文件。
内容如下:
php
<?php
/**
* 百度翻译API配置文件
* 文档标注:appid + apikey | 控制台实际:APPID + Secret Key(二者等价)
* 复制位置:百度翻译开放平台 → 开发者中心 → 申请者信息
*/
return [
// 你的控制台APPID
'baidu_appid' => '你的控制台APPID',
// 百度翻译密钥
'baidu_secret' => '百度翻译密钥'
];
封装API请求
在application/common/service目录下创建Translate.php文件,内容如下:
php
<?php
/**
* FastAdmin 百度翻译通用文本API封装类
* 支持:单文本翻译
* 适配:百度翻译通用文本API(个人认证免费版)
* 依赖:FastAdmin内置httpRequest函数(无需额外扩展curl)
*/
namespace app\common\service;
use think\Exception;
class Translate
{
// 百度翻译通用文本API接口地址
private const API_URL = 'http://api.fanyi.baidu.com/api/trans/vip/translate';
// 百度翻译APPID
private $appid;
// 百度翻译秘钥
private $secretKey;
/**
* 构造方法:初始化配置+校验密钥
* 从extra/translate.php读取配置,避免硬编码
* @throws Exception
*/
public function __construct()
{
// 读取配置文件中的百度翻译密钥
$this->appid = config('translate.baidu_appid');
$this->secretKey = config('translate.baidu_secret');
// 密钥校验,无配置直接抛异常
if (empty($this->appid) || empty($this->secretKey)) {
throw new Exception('请先在application/extra/translate.php配置百度翻译appid和secretKey');
}
}
/**
* 【基础方法】单文本翻译(百度通用API核心)
* @param string $text 待翻译文本
* @param string $from 源语言(auto=自动检测,百度官方默认)
* @param string $to 目标语言(en=英文/ja=日语/ko=韩语/fr=法语,参考百度官方语言码)
* @return string 翻译后的纯文本
* @throws Exception
*/
public function translateText(string $text, string $from = 'auto', string $to = 'en'): string
{
$text = trim($text);
if (empty($text)) {
return '';
}
// 必要参数
$salt = rand(32768, 65536); // 随机盐值
$signStr = $this->appid . $text . $salt . $this->secretKey; // 签名原串
$sign = md5($signStr); // MD5签名
$params = [
'q' => $text,
'from' => $from,
'to' => $to,
'appid' => $this->appid,
'salt' => $salt,
'sign' => $sign
];
$response = \fast\Http::get(self::API_URL, $params);
if (empty($response)) {
throw new Exception('百度翻译API请求失败,无返回数据');
}
$result = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception('百度翻译API返回格式错误,非有效JSON');
}
// 5. 捕获百度API官方错误(关键:方便排查配置/调用问题)
if (isset($result['error_code'])) {
$errorMsg = $result['error_msg'] ?? '未知错误';
throw new Exception("百度翻译失败【错误码:{$result['error_code']}】:{$errorMsg}");
}
return $result['trans_result'][0]['dst'] ?? '';
}
}
调用
php
$text = (new Translate())->translateText('中文');
print_r($text);die;
总结
项目功能实现中需要使用翻译实现,整理了百度翻译API使用。