封裝 language($text, $from, $to) 函數,支援自動偵測語言 (auto) 或指定語言代碼 (如 zh、en、jp),內建 file_get_contents 與 curl 雙模式獲取回應,適用不同伺服器環境。
<?php
function translate($text, $from = 'auto', $to = 'auto') {
$appid = 'YOUR_API_KEY'; // 替換為你的百度翻譯 API Key
$encoded = urlencode($text);
$url = "https://api.fanyi.baidu.com/api/trans/vip/translate?appid=$appid&q=$encoded&from=$from&to=$to&salt=12345&sign=" . md5($appid . $text . '12345' . 'YOUR_SECRET_KEY');
$response = http_get($url);
$data = json_decode($response, true);
if (isset($data['trans_result'][0]['dst'])) {
return $data['trans_result'][0]['dst'];
}
return false;
}
function http_get($url) {
if (function_exists('curl_init')) {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => false,
]);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
return file_get_contents($url); // 兜底
}
// 測試
echo translate('你好,世界', 'zh', 'en'); // 輸出: Hello, world
?>
https://api.fanyi.baidu.com/api/trans/vip/translate,需 appid + salt + sign (MD5) 簽名驗證,原文使用的 client_id 參數已棄用。mb_convert_encoding($text, 'UTF-8', 'auto')。$data['error_code'],常見錯誤碼:52001 (逾時)、52002 (服務不可用)、54000 (參數錯誤)、54001 (簽名錯誤)、58000 (IP 未授權)。若需更穩定、支援語言更多的服務,可考慮 Google Cloud Translation API、DeepL API 或 Microsoft Translator,皆提供官方 PHP SDK,簽名與計費機制更透明。