在所有的免费Python翻译接口中,googletrans无疑是最便捷最准确的,而且最重要的是它请求接口基本是免费的(有每秒请求次数限制,除非你海量请求,否则不会触发限制)。在平日的使用中,我发现googletrans接口实际上对输入字符串的长度是有限制的(最大长度不能超过15k),所以在使用中,为了安全,要处理这个case。
BB less,show me the code:
from googletrans import Translator
translator = Translator()
# 处理query(翻译文本)超过Googletrans要求长度的问题,googletrans要求最大长度为15k,为了保守起见,从13k之后进行文本切割
if len(query) > 13000:
query_segments = []
while len(query) >= 13000:
segment_pos = query[13000:].find('\n') # \n切割文本
query_segments.append(query[:13000 + segment_pos])
query = query[13000 + segment_pos:]
print(f"翻译结果超长,将结果分成`{len(query_segments)}`段!")
else:
query_segments = [query]
# 开始翻译,将翻译结果拼接到一起
_r = ''.join([_zh_res.text for _zh_res in translator.translate(query_segments, dest='zh-CN')])
如上所示,我这是个英译汉的示例,query就是待翻译的英文。我只用了简单的换行符(\n)进行文本切割,可按照实际情况来更聪明的切割文本。