0. 스토리

(주) 캣네가게의 주주 총회가 열렸습니다. 안건은 해외 진출입니다.
"해외에서 제품에 대한 수요가 급증하고 있다고 한다냥! 해외 지사를 설립해 보다 빠른 해외 시장 대응을 하는 것이 좋을 것 같다냥!"
또 다른 대리인 이사가 손을 들고 발언을 신청했습니다.
대리인 No.1
은 그 이사에게 발언을 하라는 손짓을 했어요."세계 각지에 항구 도시를 설립하고, 각 나라에 특산품인 생선을 어업하게 하여 보다 촘촘한 유통망을 설립하는 것을 권한다냥. 우리에 자본력이라면 충분히 100개 이상의 항구 도시를 만들 수 있다냥."
그 이후에도 발언 요청이 있었지만,
대리인 No.1
은 생각에 잠겨있었습니다."가장 장애가 되는 것은 무엇일까냥?"
모두가 한 목소리로 대답했습니다.
"언어다냥!"
1. 기획
우선 구글API를 사용할 것이라 구글에 있는 번역 프로그램을 분석해보기로 합니다.


언어를 선택하여 번역할 수 있는 프로그램을 만듭니다. 위 도안을 참고하여 아래와 같이 제작해보려 합니다.

2. 디자인
여기서는 기능을 더 추가하지 않고 줄여보도록 하겠습니다. "꼭 필요한 기능인가?"라는 관점에서 프로그램을 한 번 되돌아 보시는 것도 좋다고 생각합니다. 너무 많은 기능이 사용자에게 복잡하다는 인상을 줄 수 있습니다.
최소한의 기능만 남기고 핵심만 살리기 위해 번역하고자 하는 언어는 보통 한국어 일 것이므로, 아래처럼 언어를 고정시켜 번역하는 프로그램을 만들도록 하겠습니다. 만약 기능을 추가한다면 파일 업로드 해서 파일로 출력해주는 프로그램이라면 좋을 것 같네요.

3. 코드
from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt from googletrans import Translator import sys class 번역프로그램(QWidget): def __init__(self): super().__init__() self.translator = Translator() self.UI초기화() def UI초기화(self): self.label1 = QLabel('한국어', self) self.lable2 = QLabel('영어', self) self.edit1 = QTextEdit(self) self.edit2 = QTextEdit(self) self.transBtn = QPushButton('번역하기', self) self.changeBtn = QPushButton('언어 바꾸기', self) vbox1 = QVBoxLayout() vbox2 = QVBoxLayout() vbox1.addWidget(self.label1,alignment=Qt.AlignCenter) vbox1.addWidget(self.edit1) vbox2.addWidget(self.lable2,alignment=Qt.AlignCenter) vbox2.addWidget(self.edit2) hbox = QHBoxLayout() hbox.addLayout(vbox1) hbox.addLayout(vbox2) layout = QVBoxLayout() layout.addLayout(hbox) layout.addWidget(self.transBtn) layout.addWidget(self.changeBtn) self.setLayout(layout) self.transBtn.clicked.connect(self.translate) self.changeBtn.clicked.connect(self.changeLanguage) self.setWindowTitle('(주)캣네생선 번역기') self.setGeometry(200, 200, 400, 400) self.show() def translate(self): if self.label1.text() == '한국어': text_kor = self.edit1.toPlainText() text_en = self.translator.translate(text_kor,src='ko',dest='en').text self.edit2.setText(text_en) elif self.label1.text() == '영어': text_kor = self.edit1.toPlainText() text_en = self.translator.translate(text_kor,src='en',dest='ko').text self.edit2.setText(text_en) def changeLanguage(self): if self.label1.text() == '한국어': t1, t2 = self.edit1.toPlainText(), self.edit2.toPlainText() self.lable2.setText('한국어') self.label1.setText('영어') self.edit1.setText(t2) self.edit2.setText(t1) else: t1, t2 = self.edit1.toPlainText(), self.edit2.toPlainText() self.lable2.setText('영어') self.label1.setText('한국어') self.edit1.setText(t2) self.edit2.setText(t1) 프로그램무한반복 = QApplication(sys.argv) 실행인스턴스 = 번역프로그램() 프로그램무한반복.exec_()
4. 상세 내용
- google API를 사용하기 위해 pip 명령어를 사용해 모듈을 설치하고, import 하세요.
# 설치 : pip3 install googletrans 또는 pip install googletrans from googletrans import Translator self.translator = Translator()
- 구글 번역 API 라이브러리로 제공하고 있습니다. 상세 사용법과 국가별 코드는 아래 문서에서 확인하세요.
- 간단한 사용법은 아래 코드로 정리해두겠습니다.
>>> 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>
- 각 버튼이 클릭되면 번역을 실행하거나 언어를 서로 변경해주는 함수와 연결하고 있습니다.
self.transBtn.clicked.connect(self.translate) self.changeBtn.clicked.connect(self.changeLanguage)
- 사용자가 입력하는 입력창의 라벨이 한국어라면, 입력창을 플레인 텍스트를 가져오게 됩니다. 번역한 것을 가지고
translator.translate(번역할 글자, src=번역할 언어, dest=번역된 언어).text
매서드를 사용하면 번역된 text를 얻을 수 있습니다. 뒤에 꼭.text
를 붙여야 번역된 글자를 받을 수 있으니 주의해주세요.
def translate(self): if self.label1.text() == '한국어': text_kor = self.edit1.toPlainText() text_en = self.translator.translate(text_kor, src='ko', dest='en').text self.edit2.setText(text_en) elif self.label1.text() == '영어': text_kor = self.edit1.toPlainText() text_en = self.translator.translate(text_kor, src='en', dest='ko').text self.edit2.setText(text_en)
- 번역된 언어를 입력창 2에 업데이트 합니다.
def changeLanguage(self): if self.label1.text() == '한국어': t1, t2 = self.edit1.toPlainText(), self.edit2.toPlainText() self.lable2.setText('한국어') self.label1.setText('영어') self.edit1.setText(t2) self.edit2.setText(t1) else: t1, t2 = self.edit1.toPlainText(), self.edit2.toPlainText() self.lable2.setText('영어') self.label1.setText('한국어') self.edit1.setText(t2) self.edit2.setText(t1)
- 번역될 언어, 글자 번역될 언어, 글자를 서로 바꿔주는 함수를 구현하면 번역기 프로그램이 완성됩니다.
5. 실행 결과


