谷歌翻译API-python接口-Googletrans

邓韬
2023-12-01

Googletrans是一个免费且无限制的python库,可实现Google Translate API。 Google Translate交互式API可以用来调用诸如自动侦测语言种类和翻译之类的用途。

英文网址:https://py-googletrans.readthedocs.io/en/latest/#googletrans.Translator.translate

API特性:

  • 快速可靠 - 它使用translate.google.com使用的相同服务器
  • 自动语言检测
  • 批量翻译
  • 可自定义的服务URL
  • 连接池(使用requests.Session的优点)
  • HTTP / 2支持

关于库使用的注意事项:

  • 单个文本的最大字符限制为15k。
  • 由于谷歌翻译的网页版本的限制,此API不保证库始终正常工作。 (如果您不关心稳定性,请使用此库。)
  • 如果您想使用稳定的API,我强烈建议您使用Google的官方翻译API。
  • 如果您收到HTTP 5xx错误或#6等错误,可能是因为Google已禁止您的客户端IP地址。

快速开始: 

您可以从PyPI安装它:

$ pip install googletrans

HTTP / 2支持
这对每个人来说都很棒! (在我的测试中速度提高了2倍)如果你想更快地获得googletrans,你应该安装超级软件包。 Googletrans会自动检测是否安装了hyper,如果安装了hyper,它将用于http网络。

基本用法
如果未提供源语言,Google翻译会尝试检测源语言。

>>> from googletrans import Translator
>>> translator = Translator()
>>> translator.translate('안녕하세요.')
# <Translated src=ko dest=en text=Good evening. pronunciation=Good evening.>

>>> translator.translate('안녕하세요.', dest='ja')
# <Translated src=ko dest=ja text=こんにちは。 pronunciation=Kon'nichiwa.>

>>> translator.translate('veritas lux mea', src='la')
# <Translated src=la dest=en text=The truth is my light pronunciation=The truth is my light>

自定义服务URL
您可以使用其他谷歌翻译域进行翻译。 如果提供了多个URL,则随机选择一个域。

>>> from googletrans import Translator
>>> translator = Translator(service_urls=[
      'translate.google.com',
      'translate.google.co.kr',
    ])

高级用法(批量)
数组可用于在单个方法调用和单个HTTP会话中转换一批字符串。 上面显示的完全相同的方法也适用于数组。 

>>> translations = translator.translate(['The quick brown fox', 'jumps over', 'the lazy dog'], dest='ko')
>>> for translation in translations:
...    print(translation.origin, ' -> ', translation.text)
# The quick brown fox  ->  빠른 갈색 여우
# jumps over  ->  이상 점프
# the lazy dog  ->  게으른 개

语言检测
顾名思义,检测方法识别给定句子中使用的语言。 

>>> translator.detect('이 문장은 한글로 쓰여졌습니다.')
# <Detected lang=ko confidence=0.27041003>
>>> translator.detect('この文章は日本語で書かれました。')
# <Detected lang=ja confidence=0.64889508>
>>> translator.detect('This sentence is written in English.')
# <Detected lang=en confidence=0.22348526>
>>> translator.detect('Tiu frazo estas skribita en Esperanto.')
# <Detected lang=eo confidence=0.10538048>

 API导航:

googletrans.Translator

class googletrans.Translator(service_urls=Noneuser_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64)'proxies=Nonetimeout=None)

      谷歌翻译ajax API实现类

      您必须创建一个Translator实例才能使用此API

参数:

  • service_urls(一系列字符串) - 谷歌翻译网址列表。 网址将随机使用。 例如['translate.google.com','translate.google.co.kr']
  • user_agent(str) - 发出请求时要发送的User-Agent标头。
  • proxies(字典) - 代理配置。 字典映射协议或协议和主机到代理的URL例如{'http':'foo.bar:3128','http://host.name':'foo.bar:4012'}
  • 超时(数字或数字的两倍) - 请求库的超时定义。 将被每个请求使用。

translate(textdest='en'src='auto')

       将文本从源语言翻译为目标语言

参数:

  • text(UTF-8 str; unicode;字符串序列(list,tuple,iterator,generator)) - 要翻译的源文本。 通过序列输入支持批量转换。
  • dest  - 将源文本转换为的语言。 该值应为googletrans.LANGUAGES中列出的语言代码之一或googletrans.LANGCODES中列出的语言名称之一。
  • dest – strunicode
  • src  - 源文本的语言。 该值应为googletrans.LANGUAGES中列出的语言代码之一或googletrans.LANGCODES中列出的语言名称之一。 如果未指定语言,系统将尝试自动识别源语言。
  • src – strunicode

返回类型:Translated

返回类型:list (when a list is passed)

基本用法:

>>> from googletrans import Translator
>>> translator = Translator()
>>> translator.translate('안녕하세요.')
<Translated src=ko dest=en text=Good evening. pronunciation=Good evening.>
>>> translator.translate('안녕하세요.', dest='ja')
<Translated src=ko dest=ja text=こんにちは。 pronunciation=Kon'nichiwa.>
>>> translator.translate('veritas lux mea', src='la')
<Translated src=la dest=en text=The truth is my light pronunciation=The truth is my light>

高阶用法:

>>> translations = translator.translate(['The quick brown fox', 'jumps over', 'the lazy dog'], dest='ko')
>>> for translation in translations:
...    print(translation.origin, ' -> ', translation.text)
The quick brown fox  ->  빠른 갈색 여우
jumps over  ->  이상 점프
the lazy dog  ->  게으른 개

detect(text)

     检测输入文本的语言

参数:

  • text(UTF-8 str; unicode;字符串序列(list,tuple,iterator,generator)) - 要识别其语言的源文本。 通过序列输入支持批量检测。

返回类型:Detected
返回类型:list (when a list is passed)
基本用法:

>>> from googletrans import Translator
>>> translator = Translator()
>>> translator.detect('이 문장은 한글로 쓰여졌습니다.')
<Detected lang=ko confidence=0.27041003>
>>> translator.detect('この文章は日本語で書かれました。')
<Detected lang=ja confidence=0.64889508>
>>> translator.detect('This sentence is written in English.')
<Detected lang=en confidence=0.22348526>
>>> translator.detect('Tiu frazo estas skribita en Esperanto.')
<Detected lang=eo confidence=0.10538048>

高阶用法: 

>>> langs = translator.detect(['한국어', '日本語', 'English', 'le français'])
>>> for lang in langs:
...    print(lang.lang, lang.confidence)
ko 1
ja 0.92929292
en 0.96954316
fr 0.043500196

googletrans.models 

class googletrans.models.Translated(srcdestorigintextpronunciationextra_data=None)

       翻译结果对象

参数:

  • src  -  source langauge(默认值:auto)
  • dest  - 目标语言(默认值:en)
  • 来源 - 原文
  • 文本 - 翻译文本
  • 发音 - 发音

class googletrans.models.Detected(langconfidence)
       语言检测结果对象

参数:

googletrans.gtoken 

示意

  • lang - 检测到的语言
  • confidence - 检测结果的置信度(0.00到1.00)

这仅供内部使用,以生成有效的令牌以访问translate.google.com ajax API。

class googletrans.gtoken.TokenAcquirer(tkk='0'session=Nonehost='translate.google.com')

Google Translate API令牌生成器

translate.google.com使用令牌来授权请求。 如果您不是Google,则可以使用此令牌,并且必须付费才能使用。 此类是对Google用于生成此类令牌的混淆和缩小代码进行逆向工程的结果。

令牌基于每小时更新一次的种子以及将要翻译的文本。 两者结合 - 通过一些奇怪的数学 - 来生成最终令牌(例如744915.856682),API使用该令牌来验证请求。

此操作将导致额外请求从translate.google.com获取初始令牌。

用法示例: 

>>> from googletrans.gtoken import TokenAcquirer
>>> acquirer = TokenAcquirer()
>>> text = 'test'
>>> tk = acquirer.do(text)
>>> tk
950629.577246

googletrans.LANGUAGES

示意

iso639-1语言代码,用于支持翻译语言。 一些语言代码还包括国家代码,如zh-CN或zh-TW。

LANGUAGES = {
    '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'
}

LANGCODES = dict(map(reversed, LANGUAGES.items()))
 类似资料: