使用Microsoft翻译包处理多语言文档时翻译失效求助
看起来你遇到的问题是translate包封装的Microsoft翻译服务没有正确处理英俄混合的文本——明明目标语言设为英语,但俄语部分完全没被翻译。结合你的测试结果(googletrans能正常工作),我给你几个排查和解决的思路:
显式指定自动检测源语言
有些翻译API封装库默认可能不会自动检测混合语言,或者检测逻辑有缺陷。试试在初始化Translator时加上from_lang='auto'参数,强制API自动识别文本中的语言构成:from translate import Translator to_lang = "en" translator = Translator(provider='microsoft', from_lang='auto', to_lang=to_lang, secret_access_key=secret) result = translator.translate("Elapsed Task Time – время в течение, которого выполнялась задача ") print(result)这个参数会告诉Microsoft API自动分析输入文本的语言构成,确保所有非英语部分都被翻译。
更新
translate包到最新版本
旧版本的translate包可能存在Microsoft provider的bug,比如没有正确传递混合语言的翻译请求。执行下面的命令升级包:pip install --upgrade translate升级后再测试你的代码,看看问题是否解决。
直接调用Microsoft Translator官方API
如果上面的方法都没用,可能是translate包的封装层有问题。你可以跳过封装,直接用requests调用Microsoft Translator的官方API,这样能确保请求参数完全符合API要求:import requests subscription_key = "你的秘钥" endpoint = "https://api.cognitive.microsofttranslator.com/" path = '/translate?api-version=3.0' params = '&to=en' constructed_url = endpoint + path + params headers = { 'Ocp-Apim-Subscription-Key': subscription_key, 'Content-type': 'application/json' } body = [{ 'text': "Elapsed Task Time – время в течение, которого выполнялась задача " }] response = requests.post(constructed_url, headers=headers, json=body) response.raise_for_status() # 捕获请求错误 result = response.json() print(result[0]['translations'][0]['text'])官方API原生支持混合语言的翻译,这个方法应该能得到你期望的结果:
"Elapsed Task Time - the time during which the task was performed"。检查API秘钥和权限
虽然可能性不大,但还是确认下你的Microsoft翻译API秘钥是否有效,并且权限包含文本翻译功能——有时候权限不足也会导致API返回原文本而不报错。
内容的提问来源于stack exchange,提问作者Megha Bhamare




