2

我想为我的大学项目使用deepl translate api,但我无法解析它。我想将它与 PHP 或 Python 一起使用,因为我将传递给 python 脚本的参数,所以这对我来说将是结束。我在php中尝试过这样的:

    $original =  $_GET['searchterm'];
    $deeplTranslateURL='https://api-free.deepl.com/v2/translate?auth_key=MYKEY&text='.urlencode($original).'&target_lang=EN';
    if (get_headers($deeplTranslateURL)[0]=='HTTP/1.1 200 OK') {
        $translated = str_replace(' ', '', json_decode(file_get_contents($deeplTranslateURL))["translations"][0]["text"]);
    }else{
        echo("translate error");
    }

    $output = passthru("python search.py $original $translated");

我也尝试过search.py基于这个答案

#!/usr/bin/env python
import sys
import requests

r =  requests.post(url='https://api.deepl.com/v2/translate',
                          data = {
                            'target_lang' : 'EN',  
                            'auth_key' : 'MYKEY',
                            'text': str(sys.argv)[1]
                          })

print 'Argument:', sys.argv[1]
print 'Argument List:', str(sys.argv)
print 'translated to: ', str(r.json()["translations"][0]["text"])

但都没有给我任何答案,我该怎么做才能正确?我也知道我可以以某种方式做到这一点,cURL但我从来没有使用过那个库。

4

1 回答 1

0

DeepL 现在有一个python 库,可以更轻松地使用 python 进行翻译,并且无需使用请求和解析响应。

像这样开始:

import deepl
translator = deepl.Translator(auth_key)
result = translator.translate_text(text_you_want_to_translate, target_lang="EN-US")
print(result)

查看您的问题,它看起来search.py可能有几个问题,即 sys 将每个单独的单词拆分为列表中的一个项目,因此您只需将一个单词传递给 DeepL。这是一个问题,因为 DeepL 是一个上下文翻译器:它基于句子中的单词构建翻译——它不只是充当单个单词的字典。如果你想翻译单个单词,DeepL API 可能不是你想要的。

但是,如果您实际上是在尝试向 DeepL 传递一个句子,我已经构建了这个search.py对您有用的新功能:

import sys
import deepl


auth_key="your_auth_key"
translator = deepl.Translator(auth_key)

"""
" ".join(sys.argv[1:]) converts all list items after item [0]
into a string separated by spaces
"""

result = translator.translate_text(" ".join(sys.argv[1:]), target_lang = "EN-US")

print('Argument:', sys.argv[1])
print('Argument List:', str(sys.argv))


print("String to translate: ", " ".join(sys.argv[1:]))
print("Translated String:", result)

我通过输入以下内容运行程序:

search.py Der Künstler wurde mit einem Preis ausgezeichnet.

并收到此输出:

Argument: Der
Argument List: ['search.py', 'Der', 'Künstler', 'wurde', 'mit', 'einem', 
'Preis', 'ausgezeichnet.']
String to translate:  Der Künstler wurde mit einem Preis ausgezeichnet.
Translated String: The artist was awarded a prize.

我希望这会有所帮助,并且离你的大学项目结束不远了!

于 2022-02-05T02:05:39.167 回答