1

我想使用 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 call 结果导致未知结果。

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

4

2 回答 2

1

看起来 API 只有在您付费时才可用,不再免费......

于 2021-02-13T00:10:56.343 回答
1

编辑:DeepL Python 库 MrGuemez部分正确,请求现在只通过官方的 DeepL api 密钥。话虽如此,他们有付费和免费版本

DeepL 免费 API 有 500,000 个字符/月。限制,而付费版本的固定费用为 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”。


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

要在 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"]
于 2021-08-08T09:05:39.650 回答