
Translation Project
The program accepts a file (txt, rtf, docx, pdf) or text written in and returns a translated copy of it. (UI in video attached).
import sys
import os
import docx2txt
import PyPDF2
from google.cloud import translate, speech
from google.cloud.speech import enums
from google.cloud.speech import types
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
from dialog import Ui_Dialog
#Creates the class and initializes the main window and buttons.
class AppWindow(Ui_Dialog):
def __init__(self, dialog):
Ui_Dialog.__init__(self)
self.filename = ""
self.txtname = ""
self.langChosen = ""
self.textg = ""
self.c = ""
self.setupUi(dialog)
self.langSelected()
self.bb.clicked.connect(self.openFile)
self.re.clicked.connect(self.translation)
self.pushButton.clicked.connect(self.copyText)
#Code used to open a file
def openFile(self):
options = QFileDialog.Options()
self.filename, _ = QFileDialog.getOpenFileName(options=options)
self.textc()
#Asks user to select a language from a dropdown menu and saves it
def langSelected(self):
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="Translate-9130762d473c (2).json"
# Instantiates a client
translate_client = translate.Client()
results = translate_client.get_languages()
line = ""
for i in range(0, len(results)):
line += u'{name} ({language})'.format(**results[i]) + ", "
self.comboBox.addItem(line)
line = ""
self.comboBox.activated[str].connect(self.onActivated)
def onActivated(self, text):
print("hello")
self.langChosen = text
#Translates and prints new file in language selected using the dropdown menu.
def textc(self):
typeOfFile = self.filename
print(typeOfFile)
if typeOfFile.endswith(".pdf"):
pdfFileObj = open(typeOfFile, 'rb')
print(pdfFileObj)
pdf = PyPDF2.PdfFileReader(pdfFileObj)
totalPages = pdf.getNumPages()
print(totalPages)
p_text = ""
for page in range(totalPages):
p = pdf.getPage(page)
p_text += p.extractText()
self.fileText.setText(p_text)
self.textg = p_text
elif typeOfFile.endswith(".txt"):
txtFileObj = open(typeOfFile, 'rb')
eachLine = ""
for line in txtFileObj:
print(line)
eachLine += line
self.fileText.setText(eachLine)
self.textg = eachLine
elif typeOfFile.endswith(".rtf"):
rtfFileObj = open(typeOfFile, 'rb')
eachLine1 = ""
for line1 in rtfFileObj:
print(line1)
eachLine1 += line1
self.fileText.setText(eachLine1)
self.textg = eachLine1
elif typeOfFile.endswith(".docx"):
text = docx2txt.process(str(typeOfFile))
self.fileText.setText(text)
self.textg = text
else:
print("Sorry, Not a supported file type at the moment.")
def copyText(self):
options2 = QFileDialog.Options()
self.txtname, _ = QFileDialog.getOpenFileName(options=options2)
self.copyFile()
def copyFile(self):
#myfile = self.txtname
myText = self.textEdit.toPlainText()
print(myText)
with open(self.txtname, 'a') as f:
f.write(myText)
def translation(self):
#Asks user to enter on of the target provided and translates the file (pdf so far)
translate_client = translate.Client()
target = self.langChosen
typeOfFile = self.filename
print(target)
print(typeOfFile)
start = target.rfind("(")
end = target.rfind(")")
choice = ""
for i in range(start+1, end):
choice += target[i]
print(choice)
if typeOfFile.endswith(".pdf"):
newFile = translate_client.translate(self.textg, target_language=choice)
self.textEdit.setText(u'Translation: {}'.format(newFile['translatedText']))
elif typeOfFile.endswith(".txt"):
newFile2 = translate_client.translate(self.textg, target_language=choice)
self.textEdit.setText(u'Translation: {}'.format(newFile2['translatedText']))
elif typeOfFile.endswith(".rtf"):
newFile3 = translate_client.translate(self.textg, target_language=choice)
self.textEdit.setText(u'Translation: {}'.format(newFile3['translatedText']))
elif typeOfFile.endswith("docx"):
newFile1 = translate_client.translate(self.textg, target_language=choice)
self.textEdit.setText(u'Translation: {}'.format(newFile1['translatedText']))
app = QtWidgets.QApplication(sys.argv)
dialog = QtWidgets.QDialog()
prog = AppWindow(dialog)
dialog.show()
sys.exit(app.exec_())