Skip to content

[Python] 使用 googletrans 套件來進行 Google 翻譯

如果今天我們想要進行文字的翻譯,大部分的人想必都會不約而同地使用 『Google 翻譯』吧!畢竟一來 Google 翻譯的名聲相當響亮、二來由於近年來 NLP 相關的深度學習技術越來越成熟,Google 翻譯的品質也是逐年提昇。

因此,若是我們要使用 Python 來進行『翻譯』的工作時,我們第一個聯想到的自然就是如何串接 Google 翻譯了。

基本上,想到使用 Python 串接 Google 翻譯,我認為應該有下列三種方法:

  • 使用 Google Translate API (這個應該是最穩定的方法)
  • 自己爬蟲
  • 使用別人封裝好的套件

自然,使用別人封裝好的套件是最快的。我今天要紀錄的,便是如何使用 “googletrans” —— 一個 Python 上直接調用 Google 翻譯的套件,可說是 pip 安裝即用,非常方便。

以下,就來紀錄這個套件有哪些功能吧!


事前準備

首先,如果環境中沒有安裝著 googletrans,那麼,我們需要使用以下指令安裝:

sudo pip3 install googletrans

順帶一提,這個套件還是有其限制的。

  • 字串長度不得超過 15000 個字元
  • 網頁更新時,需等此套件更新才能正常運作
  • HTTP 5xx Error 即代表 Google 封鎖了 IP 位址

不過,這還是個很棒的套件,畢竟使用方便。


翻譯功能

首先,既然串接了 Google 翻譯,那麼最重要的,莫過於『翻譯』功能了吧!

import googletrans
from pprint import pprint


# Initial
translator = googletrans.Translator()


# Basic Translate
results = translator.translate('我覺得今天天氣不好。')
print(results)
print(results.text)



Output:

Translated(src=zh-CN, dest=en, text=I think the weather is bad today., pronunciation=None, extra_data="{'translat…")
I think the weather is bad today.

可以看到,在沒有任何設定的情況下,輸入的『字串』會自動偵測最有可能的語言;而輸出的語言則預設英文。

當然,我們也可以指定我們要輸出的語言。再來看段範例:

print('English:', translator.translate('我覺得今天天氣不好', dest='en').text)
print('Japanese:', translator.translate('我覺得今天天氣不好', dest='ja').text)
print('Korean:', translator.translate('我覺得今天天氣不好', dest='ko').text)



Output:

English: I think the weather is bad today
Japanese: 私は、今日の天気は悪いだと思います
Korean: 나는 날씨가 오늘 나쁜 생각

我們可以看到,設定 “dest” 參數即可選擇我們要翻譯的語言。


偵測語言

有趣的是,如果今天我們有一段未知的語言,其實我們也可以透過這個套件來『偵測』這一段未知的語言究竟是哪種語言。

比如說以下這段日文 (沒錯,我知道這是日文)。

# Detect
unknown_sentence = 'おはよう'
results = translator.detect(unknown_sentence)
print(results)
print(results.lang)



Output:

Detected(lang=ja, confidence=1.0)
ja

而返回的結果,也恰恰顯示這段文字是日文。


取得語言編碼

當然,上方的『指定翻譯語言』、『偵測語言種類』等等的功能,都仰賴著我們需要知道這是什麼語言的『編碼』。

比如說,”en” 大家都知道是英文,沒問題。但是今天如果是 “af” 呢?

我查了一下,”af” 代表著『afrikaans』(南非語) —— 沒錯,跟我預想得一模一樣呢 —— 好啦,話又說回來,其實我們也可以使用 googletrans 來查看語言的編碼。

from pprint import pprint
pprint(googletrans.LANGCODES)



Output:

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

這樣一來,我們隨時查看語言編碼也沒有問題了!


References


Read More

4 thoughts on “[Python] 使用 googletrans 套件來進行 Google 翻譯”

    1. sudo 是使用 Super User 權限下指令,故會需要使用者密碼。如果在伺服器上並不在 sudo 群組的話,可以直接使用
      pip3 install googletrans
      或是
      pip3 install --user googletrans (“-” dash 符號有兩個,在留言區好像偶爾會顯示不出來 XD)
      來進行安裝。

      希望能順利。

Leave a Reply