编辑:DeepL Python 库
我之前没有意识到这一点,但是 DeepL 有一个 python 包,它可以用来进行文本和文档的翻译,比通过requests包更容易。其中一些是从 DeepL 文档中回收的,但已更新以回答您的问题。
首先,运行一个简单的pip install deepl.
如果你不关心你的 auth_key 的硬编码,你可以像这样设置它:
import deepl
translator = deepl.Translator("auth_key")
要翻译单个字符串,您可以这样做:
import deepl
result = translator.translate_text("Che bellissima giornata", target_lang="EN-US")
print(result)
您现在还可以通过将字符串放入列表中来在 DeepL 请求中传递多个字符串:
import deepl
result = translator.translate_text(["お元気ですか?", "Che bellissima giornata"], target_lang="EN-US")
print(result[0].text) # "How are you?"
print(result[0].detected_source_lang) # "JA"
print(result[1].text) # "What a beautiful day"
print(result[1].detected_source_lang) # "IT"
如果您有完整的外语文件想要翻译,您也可以使用 DeepL 包提出请求:
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”。
过时(仍然适用于文本)
为了获得正确的响应,您需要这样构建查询:
import requests
r = requests.post(
url="https://api.deepl.com/v2/translate",
data={
"target_lang": "EN",
"auth_key": auth_key,
"text": string_to_translate,
},
)
auth_key您的身份验证密钥在哪里,是string_to_translate您要翻译的文本。
我使用black格式化了上面的代码,这就是为什么它看起来与dwightkschruteIII包含的不同,尽管它本质上是做同样的事情。
但是,要使用 python 访问此翻译,您需要使用以下代码:
r.json()["translations"][0]["text"]
因为 DeepL 将返回一个 jsontranslations作为其唯一的键,一个包含另一个 json 作为对应值的列表。列表中的 json 有两个键:detected_source_language和text. 这是一个冗长的解释,所以我在下面提供了一个示例:
命令:
sample = requests.post(url="https://api.deepl.com/v2/translate", data={"target_lang": "EN", "auth_key": auth_key, "text": "Che bellissima giornata"})
print(sample.json())
返回:
{'translations': [{'detected_source_language': 'IT', 'text': 'What a beautiful day'}]}
因此,重申一下,您必须使用sample.json()["translations"][0]["text"]访问翻译,其中 sample 是您为响应命名的任何内容,以及获得成功请求的第一个代码块。