728x90
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)
- 파이썬에서 구글 번역기를 무료로 사용할 수 있는 패키지이다.
패키지 설치하기
> 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
728x90
'Framework > PyQt' 카테고리의 다른 글
[PyQt] 간단한 CRUD(Create, Read, Update, Delete) 프로그램 (0) | 2023.07.18 |
---|---|
[PyQt] QTimer.singleShot 함수를 특정 시간 간격으로 여러번 실행하는 방법 (0) | 2023.07.16 |
[PyQt] QAction에서 triggered 시그널을 사용할 때, 인자를 triggered 메서드에 전달하는 방법 (0) | 2023.07.08 |
[PyQt] QClipboard.Clipboard와 QClipboard.Selection의 차이점 (0) | 2023.07.07 |
[PyQt] 커스텀 아이콘 패키지(fugueicons) 설치 및 사용해보기 (0) | 2023.07.05 |
[PyQt] style().standardIcon() 메서드에서 사용할 수 있는 아이콘 종류 및 숫자 (1) | 2023.05.17 |
[PyQt] PyQt5에서 QWebView 사용하기 (0) | 2023.05.16 |
[PyQt] self.width()와 self.height()를 사용할 때, 실행창이 튕기는 경우 해결 방법 (0) | 2023.05.14 |