Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance the functionality of the translation and add improvements #1144

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 96 additions & 37 deletions jarviscli/plugins/translate.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,43 +71,102 @@ def default(jarvis):
Default function that is called when translate is entered alone or
when input is not understood when translate is entered with additional parameters
"""
# Get source language
jarvis.say('\nEnter source language ')
srcs = jarvis.input().lower().strip()
# Check source language
while (
srcs not in LANGUAGES) and (
srcs not in SPECIAL_CASES) and (
srcs not in LANGCODES):
if srcs in SPECIAL_CASES:
srcs = SPECIAL_CASES[srcs]
elif srcs in LANGCODES:
srcs = LANGCODES[srcs]
else:
jarvis.say("\nInvalid source language\nEnter again")
srcs = jarvis.input().lower()
# Get destination language
jarvis.say('\nEnter destination language ')
des = jarvis.input().lower().strip()
# Check destination language
while (
des not in LANGUAGES) and (
des not in SPECIAL_CASES) and (
des not in LANGCODES):
if des in SPECIAL_CASES:
des = SPECIAL_CASES[des]
elif des in LANGCODES:
des = LANGCODES[des]
else:
jarvis.say("\nInvalid destination language\nEnter again")
des = jarvis.input().lower()

jarvis.say('\nEnter text ')
tex = jarvis.input()

performTranslation(srcs, des, tex)


jarvis.say("Choose a mode:\n1) Auto-detection\n2) Manual input \n3) Bulk Translation\nEnter option (1 or 2 or 3): ")
srcs = jarvis.input().lower()
trans = Translator()

if (srcs == "1") :
# Get Text since its a automatic detection
jarvis.say('\nEnter text')
tex = jarvis.input().strip()
auto_lang = trans.detect(tex).lang
while (auto_lang not in LANGUAGES) and (auto_lang not in SPECIAL_CASES) and (auto_lang not in LANGCODES):
if auto_lang in SPECIAL_CASES:
auto_lang = SPECIAL_CASES[srcs]
elif auto_lang in LANGCODES:
auto_lang = LANGCODES[srcs]
else:
jarvis.say("\nLanguage couldn't be auto detected\nEnter again")
default(jarvis)
# Get Destination Language
jarvis.say('\nEnter destination language ')
des = jarvis.input().lower().strip()
while (des not in LANGUAGES) and (des not in SPECIAL_CASES) and (des not in LANGCODES):
if des in SPECIAL_CASES:
des = SPECIAL_CASES[des]
elif des in LANGCODES:
des = LANGCODES[des]
else:
jarvis.say("\nInvalid destination language\nEnter again")
default(jarvis)


performTranslation(auto_lang,des,tex)


elif (srcs == "2"):
# Get source language
jarvis.say('\nEnter source language ')
srcs_ln = jarvis.input().lower().strip()
while (srcs_ln not in LANGUAGES) and (srcs_ln not in SPECIAL_CASES) and (srcs_ln not in LANGCODES):
if srcs_ln in SPECIAL_CASES:
srcs_ln = SPECIAL_CASES[srcs]
elif srcs_ln in LANGCODES:
srcs_ln = LANGCODES[srcs]
else:
jarvis.say("\nInvalid source language\nEnter again")
default(jarvis)
# Get Destination Language
jarvis.say('\nEnter destination language ')
des = jarvis.input().lower().strip()
while (des not in LANGUAGES) and (des not in SPECIAL_CASES) and (des not in LANGCODES):
if des in SPECIAL_CASES:
des = SPECIAL_CASES[des]
elif des in LANGCODES:
des = LANGCODES[des]
else:
jarvis.say("\nInvalid destination language\nEnter again")
default(jarvis)

# Get Text for translation
jarvis.say('\nEnter text')
tex = jarvis.input()

performTranslation(srcs_ln,des,tex)



elif (srcs =="3"):
# Get text in bulk for translation
jarvis.say("\nEnter All the texts you want to translate\nType end after all the texts")
text = []
while True :
user_input = jarvis.input().lower().strip()
if (user_input == "end"):
break
text.append(user_input)
# Get Destination Language
jarvis.say('\nEnter destination language ')
des = jarvis.input().lower().strip()
while (des not in LANGUAGES) and (des not in SPECIAL_CASES) and (des not in LANGCODES):
if des in SPECIAL_CASES:
des = SPECIAL_CASES[des]
elif des in LANGCODES:
des = LANGCODES[des]
else:
jarvis.say("\nInvalid destination language\nEnter again")
default(jarvis)

translations = trans.translate(text, des)

for translation in translations:
print(translation.origin, ' -> ', translation.text)


else:
print("\n Invalid Input. Please enter a valid number")
default(jarvis)

def performTranslation(srcs, des, tex):
"""
Function to actually perform the translation of text and print the result
Expand Down