使用Python使用Google翻译的最佳方法

30

我正在尝试将大量文本文件从英语翻译成其他几种语言。我们的项目中使用Python,我们尝试使用Google翻译服务先进行翻译,然后再手动更正错误。

我想到了两种翻译方式:

  1. 使用Python Google翻译API。这里是:goslate 1.1.2: Python Package

  2. 尝试使用Google翻译页面进行编程,即提供要翻译的文本,模拟HTTP请求并处理响应。Google Translation

有没有更好的建议?


你需要什么才能变得更好?1和2有什么问题吗? - TessellatingHeckler
1
这两个解决方案的效率都非常低。我想知道Google是否有官方API。 - lowitty
可能是通过Google翻译进行翻译的Python脚本的重复。 - eiTan LaVi
这个问题已经有6年了。因此,我会在这里发布这个建议,以防有人正在寻找这样的信息。您可能想看一下这个工具:https://github.com/nidhaloff/deep_translator - basilisk
7个回答

26

1
谢谢,mou。下次如果需要,我会尝试你的解决方案。 - lowitty
不错的小技巧,只是不要让它太受欢迎,否则 Google 就会更改 HTML 以破坏你的模块。 - Galen Nare
你好,这个程序也有语言检测功能吗?谢谢!最好的问候。 - Alain Michael Janith Schroter
1
@MichaelSchroter 是的 :) - Arnaud Aliès
非常好的工作...你能否发送使用Python检测语言的语法,使用您的API... - Kedar17

17

谷歌实际上拥有一个带有REST接口的官方翻译API。您可以在这里查看。请注意,这是一个付费API,没有免费配额。


1
是的,它只能作为付费服务使用。其他任何访问Google翻译API的方法可能都不合法。 - Madison May
你认为谷歌翻译API goslate怎么样?它是否违法? - lowitty
很可能这并不是完全道德/伦理 - 我刚刚查看了他们的源代码,看起来goslate正在伪造一个User-Agent字符串以便抓取页面结果。默认情况下,Google会阻止Python User-Agent访问终端点。 - Madison May
1
我选择了你的答案。最后一个问题,我尝试了goslate并且它可以工作,你是说goslate可能因为被Google屏蔽而无法使用吗? - lowitty
我也尝试了goslate并得到了有效的结果,但是这个软件包肯定无法遵守Google Translate API的服务条款。特别是如果这是商业用途,我建议现在远离goslate。:( - Madison May
1
谷歌要求全世界提供翻译改进建议,现在却将其销售回去!加油,谷歌! - Vassilis

10
尝试使用 googletrans 模块。例如:
from googletrans import Translator


translator = Translator()  # initalize the Translator object
translations = translator.translate(['see if this helps', 'tarun'], dest='hi')  # translate two phrases to Hindi
for translation in translations:  # print every translation
    print(translation.text)

# Output:
# देखें कि इस मदद करता है
# तरुण

支持的语言字典(106种)及其ISO639-1代码:

import googletrans


print(googletrans.LANGCODES)  # {language name: iso639-1 language code}
# or
print(googletrans.LANGUAGES)  # {iso639-1 language code: language name}

请查看文档以获取更多信息。


1
googletrans 有时候不起作用。我不确定它是否适合批量翻译。这个问题甚至在网站上都有提到。https://pypi.org/project/googletrans/ 谢谢 & 最好的祝福 - Alain Michael Janith Schroter
1
对于上面所说的内容我表示赞同。我尝试使用googletrans进行批量翻译。在大约800次翻译后,字符串返回而没有实际的翻译,并且会出现警告或异常。这很可能是谷歌的一项安全措施(以避免滥用免费翻译数量),但我并不确定。 - rob

1

其中最简单的方法是使用Selenium获取单词和短语的翻译。

下面是一段代码,它获取英文单词并返回波斯语(Farsi)翻译。所有内容都在Github上的readme文件中有解释:

https://github.com/mnosrati/Google-Translate-Farsi


0
def translate_text(target, text):
    """Translates text into the target language.

    Target must be an ISO 639-1 language code.
    See https://g.co/cloud/translate/v2/translate-reference#supported_languages
    """

    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "secret.json"

    translate_client = translate.Client()

    if isinstance(text, six.binary_type):
        text = text.decode("utf-8")

    # Text can also be a sequence of strings, in which case this method
    # will return a sequence of results for each text.
    result = translate_client.translate(text, target_language=target)

    return result["translatedText"]

查看使用Google API进行翻译的完整代码:

https://neculaifantanaru.com/en/example-google-translate-api-key-python-code-beautifulsoup.html


0

使用这个代码,它使用免费的Google翻译模块。

通过这个代码,你可以将任何语言转换成任何语言,并且还可以获得其发音。

from googletrans import Translator, LANGUAGES
from googletrans.models import Translated

lang = list(LANGUAGES.values())
print("Welcome to Py_Guy Translate")
input_text = input("Please Enter Your Text in english:\n")
out_lang = input("Please enter output language name (ex.-hindi,gujarati,japanese:\n 
").lower()
if out_lang not in lang:
    print("Sorry This Language is not available to translate")
else:
    translator = Translator()
    translated = translator.translate(text=input_text, src="english",dest=out_lang)
    translated = str(translated).split(", ")
    converted = translated[2]
    pro = translated[3]
    print(converted)
    print(pro)

1
在答案中添加代码说明是一个很好的习惯。 - Ruli

-4
自从这篇文章发布以来,连接到Google Translate API变得更加容易了。话虽如此,我仍然建议直接连接到Google Translate API,但现在通过这里的RapidAPI页面进行连接。
您可以在此处了解如何获取API密钥。只需将API密钥输入Rapid API上API函数页面并单击“测试函数”即可。例如,以下是基本的英语到德语翻译示例:

enter image description here

请注意,de是德语的语言代码。RapidAPI将为您生成一个代码片段,以便您可以直接将API调用复制并粘贴到您的项目中。

11
严重的安全漏洞。绝不要与第三方服务共享您的 API 密钥。 - robertspierre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接