728x90

PyQt로 구글 번역기 프로그램 만들기

들어가며

  • PyQt를 이용하여 간단하게 한글의 문장을 영어 문장으로 번역하는 프로그램을 만들어보자.
  • 이때, 무료로 사용할 수 있는 구글 번역기 패키지(@googletrans@)를 사용하도록 한다.

 

코드

import sys
from PyQt5.QtWidgets import *
from googletrans import Translator

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.lbl1 = QLabel('한국어:', self)
        self.lbl2 = QLabel('영어:', self)
        self.le = QLineEdit(self)
        self.te = QTextEdit(self)
        self.trans_btn = QPushButton('번역', self)
        self.translator = Translator()
        self.initUI()

    def initUI(self):
        vbox = QVBoxLayout()
        vbox.addWidget(self.lbl1)
        vbox.addWidget(self.le)
        vbox.addWidget(self.lbl2)
        vbox.addWidget(self.te)
        vbox.addWidget(self.trans_btn)
        self.setLayout(vbox)

        self.trans_btn.clicked.connect(self.translate_kor)
        self.le.editingFinished.connect(self.translate_kor)

        self.setWindowTitle('Google Translator')
        self.setGeometry(200, 200, 400, 300)
        self.show()

    def translate_kor(self):
        text_kor = self.le.text()
        text_en = self.translator.translate(text_kor, dest="en").text    # dest에 번역할 언어의 키워드를 지정해준다.
        self.te.setText(text_en)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

 

구글 번역기 패키지(googletrans)

  • 파이썬에서 구글 번역기를 무료로 사용할 수 있는 패키지이다.
 

Googletrans: Free and Unlimited Google translate API for Python — Googletrans 3.0.0 documentation

Googletrans: Free and Unlimited Google translate API for Python Googletrans is a free and unlimited python library that implemented Google Translate API. This uses the Google Translate Ajax API to make calls to such methods as detect and translate. Feature

py-googletrans.readthedocs.io

 

패키지 설치하기

> pip install googletrans

 

다른 언어로 변경하는 방법

  • @translate()@ 메소드의 @dest@ 인자를 다른 언어 코드로 지정해주면 된다.
self.translator.translate(text_kor, dest="언어코드")

 

  • 언어 코드는 아래의 코드를 실행하여 알 수 있다.
from googletrans import LANGUAGES

print(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', 
  'he': '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', 
  'or': 'odia', 
  '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', 
  'ug': 'uyghur', 
  'uz': 'uzbek', 
  'vi': 'vietnamese', 
  'cy': 'welsh', 
  'xh': 'xhosa', 
  'yi': 'yiddish', 
  'yo': 'yoruba', 
  'zu': 'zulu'
}

 

@Type None@ 이슈 해결하기

  • 터미널에 @pip install googletrans@ 명령을 실행하여 패키지를 설치하고 바로 실습을 진행할 경우, 아래와 같은 오류 문장이 뜰 수 있다.
AttributeError: 'NoneType' object has no attribute 'group'

 

  • ChatGPT에게 해결 방법을 물어봤으나 알려주지 않았다. 🗿
  • 그래서 직접 구글링을 해서 문제 해결 방법을 찾았다.
  • 베타 테스터 버전을 설치하면 이 이슈를 해결할 수 있다고 한다. 그래서 @4.0-rc1@ 버전을 설치해보기로 하였다.
> pip install googletrans==4.0.0-rc1

 

  • 베타 테스터 버전을 설치한 후, 프로그램을 실행하면 정상적으로 작동되는 것을 확인할 수 있다.
728x90