You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Microsoft翻译包处理多语言文档时翻译失效求助

解决Microsoft翻译API未转换混合语言文本的问题

看起来你遇到的问题是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

火山引擎 最新活动