How to resolve TranslationError: DeepL call resulted in a unknown result? Python Pydeepl

How to resolve TranslationError: DeepL call resulted in a unknown result? Python Pydeepl

我想使用 pydeepl 来翻译 python 上的一些句子。我已经安装了 pydeepl 并复制了与该库主页相同的代码:

import pydeepl
sentence = 'I like turtles.'
from_language = 'EN'
to_language = 'ES'

translation = pydeepl.translate(sentence, to_language, from_lang=from_language)
print(translation)

不幸的是我得到了这个错误:
TranslationError:DeepL 调用导致未知结果。

有人可以帮忙吗?提前致谢!

看来 API 只有付费才能使用,不再免费了...

编辑:DeepL Python Library MrGuemez is partially right, requests only go through an official DeepL api key now. That being said, they have both paid and free versions.

DeepL 免费 API 有 500,000 character/Mo。限制,而付费版本的固定费用为 5 美元/月,另外还有 20/20,000,000 美元的字符。如果你担心在付费版本中超出成本,DeepL 提供了一个成本控制设置,你可以设置它以确保你不会超过某个货币上限。 现在不仅有免费版本的 API,还有官方的 DeepL Python 库:

运行一个简单的

pip install deepl

你可以很容易地开始:如果你不关心硬编码你的 auth_key 你可以这样声明一个翻译器对象:

translator = deepl.Translator("DEEPL_AUTH_KEY")

如果您不想对其进行硬编码,您可以通过这种方式将其设置为环境变量:translator = deepl.Translator(os.getenv("DEEPL_AUTH_KEY")))

然后您可以像这样轻松翻译字符串文本:

# (Taken from the documentation)
# Translate text into a target language, in this case, French
result = translator.translate_text("Hello, world!", target_lang="FR")
print(result)  # "Bonjour, le monde !"

和多个像这样的字符串:

# (Taken from the documentation)
# Translate multiple texts into British English
result = translator.translate_text(["お元気ですか?", "¿Cómo estás?"], target_lang="EN-GB")
print(result[0].text)  # "How are you?"
print(result[0].detected_source_lang)  # "JA"
print(result[1].text)  # "How are you?"
print(result[1].detected_source_lang)  # "ES"

如果您需要翻译完整的文档,您也可以将它们传递给:

translator.translate_document_from_filepath(
    "path/to/write/to/WhatABeautifulDay.docx", # Translated File
    "path/to/original/CheBellissimaGiornata.docx", # Original File
    target_lang="EN-US"
)

附带说明一下,DeepL“EN”选项已弃用,您现在必须在请求中使用“EN-US”或“EN-GB”。


OUTDATED(仍然适用于翻译字符串)

要在 python 中使用 api 键,您必须按如下方式构建查询:

import requests    
raw_returned_data = requests.post(
        url="https://api.deepl.com/v2/translate",
        data={
            "target_lang": "EN",
            "auth_key": auth_key, # where auth key is your api key
            "text": data # you can pass in a hard coded string or variable
        },
    )

并查看响应:

returned_data = raw_returned_data.json()["translations"][0]["text"]