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

Angular 12调用Google Translate API批量翻译报Too many text segments错误如何解决

Google Translate API 400 "Too many text segments" 错误解决方案

该错误是因为Google Translation V2 API 明确限制单次请求的q参数数组最多可传入128个文本段,提交的数组长度超出阈值就会返回对应400错误。

  • 方案1:拆分待翻译数组分批请求
    把所有待翻译的字符串按每128个为一组拆分,每组单独发起翻译请求,最后合并返回结果即可。Angular项目中可参考如下TypeScript实现:
// 数组拆分工具函数
function chunkArray<T>(originArr: T[], chunkSize: number): T[][] {
  const result = [];
  for (let i = 0; i < originArr.length; i += chunkSize) {
    result.push(originArr.slice(i, i + chunkSize));
  }
  return result;
}

// 业务调用示例
const allNeedTranslate: string[] = ["string1", "string2", /* 你的所有待翻译字符串 */];
// 按API最大限制拆分数组
const requestChunks = chunkArray(allNeedTranslate, 128);

// 批量发起请求,可根据配额调整并发数避免触发限流
const batchResponse = await Promise.all(
  requestChunks.map(chunk => 
    this.http.post('https://translation.googleapis.com/language/translate/v2?key=你的API密钥', {
      source: 'en',
      target: 'es',
      q: chunk
    }).toPromise()
  )
);

// 合并所有批次的翻译结果
const finalTranslateResult = batchResponse.flatMap(item => item.data.translations);
  • 方案2:先去重再翻译降低请求量
    如果待翻译数组中存在重复内容(如你示例中的重复string1),可先对内容做去重处理,翻译完成后再通过映射关系还原到原数组,可有效减少请求次数、降低API调用成本:
// 待翻译数组去重
const uniqueTextList = Array.from(new Set(allNeedTranslate));
// 对去重后的数组做拆分请求翻译,得到翻译结果translatedUniqueList
// 构建原文-译文映射表
const translateMap = new Map(uniqueTextList.map((text, idx) => [text, translatedUniqueList[idx]]));
// 映射回原数组得到完整翻译结果
const finalResult = allNeedTranslate.map(text => translateMap.get(text));
  • 额外注意事项
    除了单次请求128个文本段的限制外,Translation V2 API还有如下配额限制需要注意避免触发其他错误:
    • 单条待翻译文本长度不能超过102400字符
    • 存在每分钟请求次数、每月总翻译字符数的配额限制,拆分请求后如果并发过高可能触发429限流错误,可通过调整并发数、添加请求间隔的方式规避

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:36:03