React中如何用亚马逊/谷歌翻译批量转换Axios响应并支持自定义术语?
问题解答
1. googleTranslateElementInit的官方支持情况
该方案属于谷歌遗留的网站翻译小组件兼容接口,目前谷歌没有公开的废弃时间表,但已经停止新功能迭代,不支持集成Google Glossary自定义术语表,组件本身也没有开放自定义术语的配置入口,不建议长期在生产环境依赖。
2. 亚马逊/谷歌翻译批量请求方案
你之前单字段单请求的用法是错误的,两家的翻译API都原生支持批量翻译能力,不需要逐条发请求:
- 谷歌翻译V3 API的
translateText方法支持传入contents数组参数,单次请求最多可提交100条文本,同时支持指定术语表参数调用你预先配置好的Google Glossary - 亚马逊翻译支持两种批量方案:一是单次请求传入用特殊分隔符拼接的多段文本,翻译后拆分回填;二是调用官方
BatchTranslateText批量接口,单次最多可处理5000条文本,支持在请求参数中指定TerminologyNames关联你提前上传的自定义术语表
可行实现思路
- 递归提取JSON中所有待翻译的字符串值,同时记录每个值对应的JSON嵌套路径,方便后续回填
// 递归提取字符串值与对应路径 function extractTranslateTargets(obj, parentPath = '', targets = []) { for (const key in obj) { const currentPath = parentPath ? `${parentPath}.${key}` : key if (typeof obj[key] === 'string') { targets.push({ text: obj[key], path: currentPath }) } else if (typeof obj[key] === 'object' && obj[key] !== null) { extractTranslateTargets(obj[key], currentPath, targets) } } return targets }
- 将提取出的文本数组按API的单请求上限拆分批次,批量发起翻译请求,请求时带上你预先配置好的自定义术语表标识
- 拿到翻译结果后,按路径顺序回填到原始JSON结构中,就能得到完整的翻译后JSON,再调用
setUsers渲染即可
注:建议将翻译逻辑放到后端代理层处理,避免前端暴露API密钥引发被盗刷风险,同时也能进一步优化批量请求的性能。
内容的提问来源于stack exchange,提问作者Praveen KJ
相关产品推荐
相关产品推荐

