首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 整合百度翻譯 API 實作線上翻譯功能

     編輯:PHP 綜合知識

前置準備

  1. 至 百度開發者中心 註冊應用,獲取 API Key (client_id)
  2. 確認伺服器支援 curl 或 file_get_contents 開啟 allow_url_fopen

控制器實作

<?php
class FanyiAction extends Action {
    public function _empty() {
        header("HTTP/1.0 404 Not Found");
        $this->display("Public:404");
    }

    public function index() {
        $User = A("Index");
        $User->head();
        $User->right();
        $User->footer();
        $this->display();
    }

    public function fanyi() {
        $value = $_POST['value'];
        $from  = "auto";
        $to    = "auto";
        $value_code = urlencode($value);
        $appid = "xxxxxxxx"; // 替換為你的 API Key
        
        $languageurl = "https://openapi.baidu.com/public/2.0/bmt/translate"
                     . "?client_id=" . $appid
                     . "&q=" . $value_code
                     . "&from=" . $from
                     . "&to=" . $to;

        $text = json_decode($this->language_text($languageurl));
        $text = $text->trans_result;
        $rs   = $text[0]->dst;

        $this->assign('value', $value);
        $this->assign('rs', $rs);
        
        $User = A("Index");
        $User->head();
        $User->right();
        $User->footer();
        $this->display('index');
    }

    // 通用 HTTP 請求方法(支援 curl 回退)
    public function language_text($url) {
        if (function_exists('file_get_contents')) {
            return file_get_contents($url);
        } else {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
            $file_contents = curl_exec($ch);
            curl_close($ch);
            return $file_contents;
        }
    }
}
?>

視圖模板

<div id="content">
    <div style="padding:5px;">
        <form action="__APP__/fanyi/" method="POST" name="fanyi">
            <p>原文:</p>
            <textarea name="value" id="yuanwen" rows="10" cols="80" 
                      style="padding:5px;width:661px;height:217px;">{$value}</textarea>
            <input type="submit" class="search-submit" value="翻 譯" style="text-align:center;">
                
            <input type="reset" onclick="reset()" class="search-submit" value="清 空" style="text-align:center;">
            </form>
            <p>譯文:</p>
            <textarea name="rs" id="yiwen" rows="10" cols="80" 
                      style="padding:5px;width:661px;height:217px;">{$rs}</textarea>
        </div>
</div>

注意事項

  • 百度翻譯 API 2.0 版本已停止維護,建議遷移至 百度翻譯開放平台 新版 API(需簽名驗證)
  • 生產環境請加入錯誤處理:API 額度耗盡、網路超時、回傳格式異常等
  • 長文本建議分段翻譯,避免超過單次請求長度限制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved