Fastadmin中使用百度翻译API

在Fastadmin中对接使用百度翻译API

目录

对接使用百度翻译API

使用前准备

项目集成

创建配置文件

封装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使用。

相关推荐
智能直播7 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全8 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
我是唐青枫10 小时前
Yii2 Applications 详解:应用生命周期、组件配置与多入口实战
php
kimnoic11 小时前
PHP 8.2的DNF类型怎么用才规范
开发语言·php
中屹指纹浏览器svip12 小时前
打开账号环境网页报错,常见原因有哪些?
服务器·开发语言·php·中屹指纹浏览器
修船大队长14 小时前
CanNm 从休眠唤醒后重复消息报文的周期与数量分析
开发语言·php
李纲明15 小时前
WordPress 安全加固基线:更新策略、文件权限、登录面收缩和备份验证(含回滚注意)
运维·安全·php·wordpress
Novproxy_Z15 小时前
IPv4 与 IPv6 代理在跨境自动化场景下的选型与风险
运维·自动化·php
kimnoic16 小时前
PHP 8.3 数据库备份失败怎么排查
开发语言·php
CRMEB系统商城16 小时前
CRMEB开源商城系统(PHP)v8.0,打造全新AI二开商城底座!
开发语言·人工智能·小程序·开源·php