python-googletrans谷歌在線翻譯庫,50+語言識別+互翻

一、安裝

常規(guī)的使用pip安裝

 pip install googletrans

二、配置翻譯源

因為國內google.com無法直接訪問,故需調整為google.cn

1. 方法一,直接修改文件

進入并打開 \Lib\site-packages\googletrans\client.py

修改第56行:self.service_urls = service_urls or ['translate.google.com'] 將其中的 com 修改為 cn 即可。

2. 方法二,引用庫時修改

引用庫時,修改當前源配置,僅當次生效

from googletrans import Translator
translator = Translator(service_urls=[
      'translate.google.cn',
    ])

3. 方法三,實例化類時傳入參數

from googletrans import Translator
translator = Translator(service_urls='translate.google.cn')

除此之外還可以傳入一些連接參數,如user_agent,proxies,timeout,字面意思很容易理解。

三、翻譯

實例化后,通過調用translate()方法可以進行語言轉換

>>> translator.translate("?????.")
<googletrans.models.Translated at 0x1d79c91e688>

將韓語轉換為日語:

轉換的結果通過text屬性獲得轉換后的文本值

可以通過傳入dest參數指定輸出語言

可以用src參數指定輸入語言,默認參數為auto

destsrc參數指定語言,需在 googletrans.LANGUAGES 或 googletrans.LANGCODES 范圍內
>>> translator.translate("?????.", dest="ja").text
'こんにちは。'

googletrans.models.Translated除了擁有text方法,還擁有src,dest,origin,pronunciation等方法,用途非常明確,其中的發(fā)音屬性在特定的場景可能會非常實用。

這里的翻譯內容可以傳入列表,實現批量翻譯

>>> 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("?????.")
<googletrans.models.Detected at 0x1d79c941b48>

識別后的對象,可以通過直接print方法顯示結果,或通過langconfidence屬性顯示具體內容:

>>> translator.detect("?????.").lang
'ko'
>>> print(translator.detect('識別文字'))
Detected(lang=zh-CN, confidence=0.9578953)

五、語言配置

庫所有支持的語言,及語言的縮寫。

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()))

通過對語言縮寫的字典對應查詢,配合detect函數可以實現對語言名稱的查詢輸出。

>>> LANGUAGES.get(translator.detect("?????.").lang)
'korean'

非常實用且簡單的庫,希望能幫到大家

作者:無邪Chaosless,轉載請注明出處

參考地址:py-googletrans官方文檔

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。