使用Python中的Google Translate API进行文本翻译

Text Translation with Google Translate API in Python

除非您躲在石头下,否则您一生中可能多次使用过Google翻译。 每当您尝试将单词或句子从某种语言翻译为另一种语言时,Google Translate API都会在后台为您带来所需的结果。 尽管您可以仅通过转到Google Translate网页来翻译任何内容,但也可以将Google Translate API集成到您的Web应用程序或桌面程序中。 关于API的最好的事情是,它非常容易设置和使用。

实际上,借助Google Translate API,您可以做很多事情,包括检测语言到简单的文本翻译,设置源语言和目标语言以及翻译整个文本短语列表。 在本文中,您将了解如何使用Python编程语言来使用Google Translate API。

Google翻译API安装

您必须先安装它,然后才能在Python中使用Google Translate API。 有两种安装API的方法。 第一种方法很简单。 只需转到终端并使用pip安装程序来安装API,就如同安装其他任何Python库一样。 为此,请在终端中键入以下命令:

1
$ pip install googletrans

Enter,系统将安装Google Translate API的Python模块。

如果安装了Python的Anaconda发行版,则可以使用Anaconda Prompt安装API。 在此特定方法中,您将上述命令中的pip替换为conda,如以下代码片段所示:

1
$ conda install googletrans

既然您已经安装了API,我们将在一些示例的帮助下看到它的运行。

列出支持的语言

Google Translate API支持多种语言。 要列出所有受支持的语言,请运行以下脚本:

1
2
3
import googletrans

print(googletrans.LANGUAGES)

在上面的示例中,使用关键字import导入googletrans模块。 随后,可以通过打印googletrans模块的LANGUAGES属性来列出所有语言名称。

当执行时,以上代码将列出所有受支持的语言名称及其速记符号。 这是输出的样子:

1
{'af': 'afrikaans', 'sq': 'albanian', 'am': 'amharic', 'ar': 'arabic', 'hy': 'armenian', 'az': 'azerbaijani', 'eu': 'basque', 'be': 'belarusian', 'bn': 'bengali', 'bs': 'bosnian', 'bg': 'bulgarian', 'ca': 'catalan', 'ceb': 'cebuano', 'ny': 'chichewa', 'zh-cn': 'chinese (simplified)', 'zh-tw': 'chinese (traditional)', 'co': 'corsican', 'hr': 'croatian', 'cs': 'czech', 'da': 'danish', 'nl': 'dutch', 'en': 'english', 'eo': 'esperanto', 'et': 'estonian', 'tl': 'filipino', 'fi': 'finnish', 'fr': 'french', 'fy': 'frisian', 'gl': 'galician', 'ka': 'georgian', 'de': 'german', 'el': 'greek', 'gu': 'gujarati', 'ht': 'haitian creole', 'ha': 'hausa', 'haw': 'hawaiian', 'iw': 'hebrew', 'hi': 'hindi', 'hmn': 'hmong', 'hu': 'hungarian', 'is': 'icelandic', 'ig': 'igbo', 'id': 'indonesian', 'ga': 'irish', 'it': 'italian', 'ja': 'japanese', 'jw': 'javanese', 'kn': 'kannada', 'kk': 'kazakh', 'km': 'khmer', 'ko': 'korean', 'ku': 'kurdish (kurmanji)', 'ky': 'kyrgyz', 'lo': 'lao', 'la': 'latin', 'lv': 'latvian', 'lt': 'lithuanian', 'lb': 'luxembourgish', 'mk': 'macedonian', 'mg': 'malagasy', 'ms': 'malay', 'ml': 'malayalam', 'mt': 'maltese', 'mi': 'maori', 'mr': 'marathi', 'mn': 'mongolian', 'my': 'myanmar (burmese)', 'ne': 'nepali', 'no': 'norwegian', 'ps': 'pashto', 'fa': 'persian', 'pl': 'polish', 'pt': 'portuguese', 'pa': 'punjabi', 'ro': 'romanian', 'ru': 'russian', 'sm': 'samoan', 'gd': 'scots gaelic', 'sr': 'serbian', 'st': 'sesotho', 'sn': 'shona', 'sd': 'sindhi', 'si': 'sinhala', 'sk': 'slovak', 'sl': 'slovenian', 'so': 'somali', 'es': 'spanish', 'su': 'sundanese', 'sw': 'swahili', 'sv': 'swedish', 'tg': 'tajik', 'ta': 'tamil', 'te': 'telugu', 'th': 'thai', 'tr': 'turkish', 'uk': 'ukrainian', 'ur': 'urdu', 'uz': 'uzbek', 'vi': 'vietnamese', 'cy': 'welsh', 'xh': 'xhosa', 'yi': 'yiddish', 'yo': 'yoruba', 'zu': 'zulu', 'fil': 'Filipino', 'he': 'Hebrew'}

基本用途

当然,Google Translate API的最基本用法是将单词或句子从一种语言翻译成另一种语言。 为此,我们必须从googletrans模块导入Translator类。

1
from googletrans import Translator

接下来,您必须创建Translator类的对象。

1
translator = Translator()

创建Translator类对象后,您将把源语言中的文本作为参数传递给Translator()类对象的translate()方法,如下所示:

1
result = translator.translate('Mit? sin? teet')

在上面的脚本中,我们将芬兰语文本传递给translate()方法。

translate()方法返回一个对象,该对象包含有关翻译的文本,源语言和目标语言以及文本发音的信息。 默认情况下,translate()方法返回传递给它的文本的英语翻译。 在我们的例子中,由translate()方法返回的对象存储在result变量中。

translate()方法返回的对象具有以下属性:

  • src:源语言

  • dest:目标语言,设置为英语(en)

  • origin:原始文本,即" Mit? 罪? 在我们的例子中

  • text:翻译后的文字,即"您在做什么?" 就我们而言

  • pronunciation:翻译文本的发音

  • 让我们打印以上所有属性,看看我们得到什么输出:

    1
    2
    3
    4
    5
    print(result.src)
    print(result.dest)
    print(result.origin)
    print(result.text)
    print(result.pronunciation)

    输出:

    1
    2
    3
    4
    5
    fi
    en
    Mit? sin? teet
    What are you doing
    What are you doing

    输出显示源语言为芬兰语(fi),目标语言为英语(en)。 可以通过text属性打印翻译后的句子。

    在上面的示例中,我们没有指定源语言。 因此,Google Translate API会尝试检测源语言本身。 同样,我们也没有指定任何目标语言,因此,API将源语言转换为英语的默认语言。 但是,如果您想同时指定源语言和目标语言,该怎么办?

    指定源语言和目标语言

    实际上,在Google Translate API中同时指定目标语言和源语言非常容易。 这是仅用于传递源语言的代码:

    1
    result = translator.translate('Mik? on nimesi', src='fi')

    仅添加目标语言时,必须添加dest属性,然后添加语言代码:

    1
    result = translator.translate('Mik? on nimesi', dest='fr')

    您还可以同时传递源语言和目标语言:

    1
    result = translator.translate('Mik? on nimesi', src='fi', dest='fr')

    现在让我们将芬兰语句子翻译成法语,然后打印源语言和目标语言以及翻译后的文本。 这次我们将指定源语言和目标语言。

    1
    2
    3
    4
    5
    6
    7
    8
    from googletrans import Translator

    translator = Translator()
    result = translator.translate('Mik? on nimesi', src='fi', dest='fr')

    print(result.src)
    print(result.dest)
    print(result.text)

    上面的代码将产生以下结果。

    1
    2
    3
    fi
    fr
    Quel est votre nom

    短语翻译清单

    还可以借助Google Translate API翻译一系列文本短语。 基本过程与上面讨论的相同。 您只需要将包含短语的列表作为参数传递给translate()方法。 这对于将一批短语分别翻译,但全部在一个API调用中进行翻译很有用。

    让我们创建一个包含一些法语短语的字符串列表。

    1
    sentences = ['Bienvenu', 'Comment allez-vous', 'je vais bien']

    现在是时候调用translate()方法并将列表,源语言和目标语言作为参数传递了。

    1
    result = translator.translate(sentences, src='fr', dest='sw')

    在上面的脚本中,源语言是法语,而目标语言是斯瓦希里语。

    如果将短语列表传递给translate()方法,则该方法将返回对象列表。 translate()方法返回的列表中的每个对象对应于输入列表中必须翻译的每个短语。 查找列表中每个输入短语翻译的最佳方法是遍历输出对象列表。 然后,您可以使用textoriginsrc和单个对象的其他属性来查看输入列表中单个短语的翻译。

    在下面的脚本中,我们遍历translate()方法返回的对象的列表,然后打印原点和翻译后的文本:

    1
    2
    for trans in result:
        print(f'{trans.origin} -> {trans.text}')

    屏幕上将显示以下结果。

    1
    2
    3
    Bienvenu -> karibu
    Comment allez-vous -> Vipi wewe
    je vais bien -> Niko sawa

    翻译文字文件

    您也可以通过Google Translate API翻译文本文档。 您要做的就是使用open方法在Python中读取文本文件,读取文本并将其传递给translate()方法。

    第一步是在"读取"模式下打开文件:

    1
    f = open('C:\\Users\\Khurram\\Desktop\\test.txt', 'r')

    您还可以使用mode属性检查文件是否处于"读取"模式:

    1
    if f.mode == 'r':

    接下来,您可以使用f.read()方法读取文件的内容。 文件的内容可以存储在任何变量中。 在我们的例子中,变量的名称为contents.

    我们还将打印contents变量,以检查Python是否正确读取了文本文件:

    1
    2
    contents = f.read()
    print(contents)

    这是文件内容的输出:

    1
    2
    We are going to translate this text file using Python.
    Subsequently, we will also translate it into French.

    如果要遵循我们的示例,请确保文本文件中包含上述内容。

    我们已经确定Python正在访问和读取文本文件。 现在,我们将通过导入之前相同的旧Translate类来转换结果。

    1
    2
    3
    from googletrans import Translator

    file_translate = Translator()

    下一步是将包含输入文本的contents变量传递给translate()函数。 最后,打印由translate()方法返回的对象的text属性,您将获得转换后的字符串。

    1
    2
    result = translator.translate(contents, dest='fr')
    print(result.text)

    输出应如下所示:

    1
    2
    Nous allons traduire ce fichier texte en Python.
    Par la suite, nous le traduirons également en fran?ais.

    要将翻译后的文本写入同一文件或不同的文本文件,只需在写入模式(" w")中打开文件即可。 接下来,您需要调用write()方法并将其翻译后的文本传递给该方法,如下所示:

    1
    2
    with open('C:\\Users\\Khurram\\Desktop\\test_2.txt', 'w') as f:
        f.write(result.text)

    在上面的示例中,我们使用上下文管理器with自动打开和关闭写入流。 其次,我们以写模式打开文件。 最后,我们使用了write()方法将转换后的字符串写入新文件。

    结论

    Google Translate是带有API的工具,可帮助您执行许多与翻译相关的功能。 我们仅通过上面的示例来说明问题。 我们鼓励您练习API,并学习和了解如何在实际应用中使用它。