You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google翻译API 400错误(Text too long)解决咨询

解决Google翻译API "Text too long" 400错误的方案

嘿,这个问题我之前帮不少开发者捋顺过——你碰到的是Google翻译API的文本长度限制问题,不管是免费版还是付费版,单次请求能处理的文本量都有上限(免费版通常是单请求5000字符,付费版是100000字符,具体以官方最新规则为准)。直接拆分长文本分批请求就搞定了,具体步骤和代码示例给你整理好了:

1. 先拆分长文本

别一股脑把超长文本塞进去,得把它拆成符合API字符限制的小块。这里有两种常用方式:

  • 简单粗暴但快速:按固定字符数拆分(记得留些余量,比如设成4500而不是刚好5000)
  • 更友好的方式:按段落、句子拆分(用正则匹配句号、感叹号、问号这类标点,避免把单词拆断,保证翻译语义连贯)

2. 修改PHP代码,循环处理每个文本块

把原来的单次请求改成循环请求每个拆分后的文本块,最后把翻译结果拼接起来。给你写了个完整的示例代码:

<?php
// 替换成你的API密钥
$apiKey = "YOUR_API_KEY";
// 你的超长待翻译文本
$longText = "这里替换成你要翻译的大段内容...";
// 设置单块文本最大字符数(免费版建议设4500,付费版可设95000留余量)
$maxChunkSize = 4500;

// 方式1:按固定字符数拆分
$textChunks = str_split($longText, $maxChunkSize);

// 方式2:按句子拆分(更推荐,语义更完整)
// $textChunks = preg_split('/(?<=[.!?])\s+/', $longText);

$finalTranslatedText = "";

foreach ($textChunks as $chunk) {
    $curl = curl_init();
    
    // 构造请求参数,记得设置源语言和目标语言
    $postData = http_build_query([
        'q' => trim($chunk),
        'source' => 'zh', // 替换成你的源语言代码,比如en、ja
        'target' => 'en'  // 替换成你的目标语言代码
    ]);
    
    curl_setopt_array($curl, [
        CURLOPT_URL => "https://translation.googleapis.com/language/translate/v2?key={$apiKey}",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $postData,
        CURLOPT_HTTPHEADER => [
            'Content-Type: application/x-www-form-urlencoded',
            'X-HTTP-Method-Override: GET'
        ],
        CURLOPT_CONNECTTIMEOUT => 60,
        CURLOPT_TIMEOUT => 60,
    ]);
    
    $response = curl_exec($curl);
    $curlError = curl_error($curl);
    
    curl_close($curl);
    
    if ($curlError) {
        echo "请求出错:" . $curlError;
        // 这里可以加错误处理,比如重试或者记录日志
        continue;
    }
    
    $responseData = json_decode($response, true);
    if (isset($responseData['data']['translations'][0]['translatedText'])) {
        $finalTranslatedText .= $responseData['data']['translations'][0]['translatedText'] . " ";
    } else {
        // 处理API返回的翻译错误,比如记录日志
        echo "该文本块翻译失败:" . $chunk;
        print_r($responseData);
    }
}

// 输出最终拼接好的翻译结果
echo trim($finalTranslatedText);
?>

3. 额外注意事项

  • 配额与速率:拆分请求后要留意API的请求频率配额,免费版别太频繁请求,付费版如果不够可以去控制台调整配额;
  • API版本:如果你用的是v3版本,参数和限额会有变化,但核心逻辑还是拆分文本分批请求;
  • 空文本块:拆分后可能出现空的文本块,记得在循环里加判断跳过,避免无效请求。

内容的提问来源于stack exchange,提问作者user1706248

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:12:22