async def translate(self, ctx, *, phrase): translator = Translator() phrase = phrase.split() modifiers = [word for word in phrase if word[0] == '-'] for j, i in enumerate(modifiers): phrase.remove(i) modifiers[j] = i[1:] phrase = " ".join(phrase) try: if not modifiers: done = translator.translate(phrase) elif len(modifiers) == 1: done = translator.translate(phrase, dest=modifiers[0]) else: done = translator.translate(phrase, src=modifiers[0], dest=modifiers[1]) except ValueError: await ctx.send( ("Something failed while translating. Please ensure you are " "using codes for indicating language, such as `en` or `ja`, " "or use the full language name, such as `norwegian` or " "`german`")) return fromlang = LANGUAGES.get(done.src, done.src) tolang = LANGUAGES.get(done.dest, done.dest) await ctx.send("{}:: translating {} -> {} ::\n{}\n{}".format( "```asciidoc\n", fromlang, tolang, done.text, "\n```"))
async def tr_pls(client, message): event = await edit_or_reply(message, "`Please Wait!`") lang = get_text(message) if not lang: lang = "en" if not message.reply_to_message and not message.reply_to_message.text: await event.edit("`Reply To Message To Translate It!`") return text = message.reply_to_message.text translator = google_translator() source_lan = detect(text) if not LANGUAGES.get(lang): await event.edit("`Language Not Supported.`") return transl_lan = LANGUAGES.get(lang, 'English') translated = translator.translate(text, lang_tgt=lang) tr_text = f"""**Source ({source_lan.capitalize()})**: `{text}` **Translation ({transl_lan.capitalize()})**: `{translated}`""" if len(tr_text) >= 4096: url = "https://del.dog/documents" r = requests.post(url, data=tr_text.encode("UTF-8")).json() url2 = f"https://del.dog/{r['key']}" tr_text = ( f"Translated Text Was Too Big, Never Mind I Have Pasted It [Here]({url2})" ) await event.edit(tr_text)
def tr(text, lang): translator = Translator() if not LANGUAGES.get(lang): return None, None, None translated = translator.translate(text, dest=lang, src='auto') source_lan = LANGUAGES.get(translated.src.lower()) transl_lan = LANGUAGES.get(translated.dest.lower()) return source_lan, transl_lan, translated
def create(self, validated_data): trans = Translator() data = trans.detect(validated_data['original_sentc']) validated_data['language'] = str(LANGUAGES.get(data.lang)).title() transglish = trans.translate(validated_data['original_sentc'], dest='en') validated_data['english_sentc'] = transglish.text return Sentences.objects.create(**validated_data)
async def tr(event, text): kk = Config.LANG if LANGUAGES.get(Config.LANG) else 'en' if kk == 'en': await event.edit(text) else: translator = google_translator() translated = translator.translate(text, lang_tgt=kk) await event.edit(translated) return
async def tr(event, text): we = Config.LANG if LANGUAGES.get(Config.LANG) else "en" if we == "en": await event.edit(text) else: translator = google_translator() translated = translator.translate(text, lang_tgt=we) await event.edit(translated) return
def tr_engine(text="Confused Bonking Face."): kk = Config.LANG if LANGUAGES.get(Config.LANG) else 'en' if kk == 'en': hmm = text else: try: translator = google_translator() translated = translator.translate(text, lang_tgt=kk) hmm = translated except: hmm = text return hmm
def format_resp(self, *, resp: Translated, text: str) -> BetterEmbed: """Formats the response into an embed""" src = LANGUAGES.get(resp.src) or resp.src dest = LANGUAGES.get(resp.dest) or resp.dest conf = round(resp.confidence * 100, 1) f_confidence = str(conf) + "%" if conf < 50.0: f_confidence += " (might be innacurate)" embed = BetterEmbed(title="Translated something !") fields = ( ("original", text, False), ("Translation", resp.text, False), ("Confidence", f_confidence, True), ("Languages", f"{src} -> {dest}", True), ) return embed.add_fields(fields)
async def translateme(trans): """For .trt command, translate the given text using Google Translate.""" if trans.is_reply and not trans.pattern_match.group(1): message = await trans.get_reply_message() message = str(message.message) else: message = str(trans.pattern_match.group(1)) if not message: return await trans.edit( "**Give some text or reply to a message to translate!**" ) await trans.edit("**Processing...**") translator = Translator() try: from userbot.modules.sql_helper.globals import gvarstatus except AttributeError: return await trans.edit("**Running on Non-SQL mode!**") if gvarstatus("trt_lang") is not None: target_lang = str(gvarstatus("trt_lang")) else: target_lang = "en" try: reply_text = translator.translate(deEmojify(message), dest=target_lang) except ValueError: return await trans.edit( "**Invalid language selected, use **`.lang trt <language code>`**.**" ) source_lang = LANGUAGES.get(reply_text.src).title() # type: ignore target_lang = LANGUAGES.get(target_lang).title() reply_text = f"From: **{source_lang}**\nTo: **{target_lang}**\n\n{reply_text.text}" # type: ignore await trans.edit(reply_text)
async def translate(event): if event.reply_to_msg_id: msg = await event.get_reply_message() msg = msg.message else: msg = event.pattern_match.group(1) if not msg: await event.edit(msgRep.NO_TEXT_OR_MSG) return await event.edit(msgRep.TRANSLATING) try: translator = Translator() result = translator.translate(text=msg, dest=DEST_LANG, src="auto") if result.src == result.dest: await event.edit(msgRep.SAME_SRC_TARGET_LANG) return src_lang = LANGUAGES.get(result.src, "Unknown") target_lang = LANGUAGES.get(result.dest, "Unknown") text = f"{msgRep.DETECTED_LANG}: <b>{src_lang.title()}</b>\n" text += f"{msgRep.TARGET_LANG}: <b>{target_lang.title()}</b>\n\n" if not event.reply_to_msg_id: text += f"<b>{msgRep.ORG_TEXT}:</b>\n" text += msg + "\n\n" text += f"<b>{msgRep.TRANS_TEXT}:</b>\n" text += result.text await event.edit(text, parse_mode="html") except MessageTooLongError: await event.edit(msgRep.MSG_TOO_LONG) except Exception as e: log.warning(e) if event.reply_to_msg_id: await event.edit(msgRep.FAIL_TRANS_MSG) else: await event.edit(msgRep.FAIL_TRANS_TEXT) return
async def tr_engine(event, text, parse_mode='md'): kk = Config.LANG if LANGUAGES.get(Config.LANG) else 'en' if kk == 'en': await event.edit(text, parse_mode=parse_mode) else: try: translator = google_translator() translated = translator.translate(text, lang_tgt=kk) hmm = translated except: hmm = text await event.edit(hmm, parse_mode=parse_mode) return
def qwerty_main(message): text = utils.textparser(message) if text is None: logger.write_log("none", message) return logger.write_log(text, message) arg1, arg2 = utils.extract_arg(message.text, 1), utils.extract_arg(message.text, 2) if arg2 is None: tab1 = utils.layouts.get(utils.extract_lang(text)) tab2 = utils.layouts.get(arg1) else: tab1 = utils.layouts.get(arg1) tab2 = utils.layouts.get(arg2) if tab1 is None and arg2 is None: utils.bot.reply_to( message, "Исходный язык не распознан. Неправильный аргумент или неверно распознан " "язык? (" + LANGUAGES.get(utils.extract_lang(text)) + ")\n" "Попробуйте указать исходный язык вручную. Возможно, язык отсутствует в " "словаре символов") return if tab1 is None or tab2 is None: utils.bot.reply_to( message, "Неизвестная раскладка. Возможно, язык отсутствует в словаре символов" ) return try: translated_text = text.translate(str.maketrans(tab1, tab2)) utils.bot.reply_to(message, translated_text) except Exception as e: logger.write_log("ERR: " + str(e) + "\n" + traceback.format_exc()) utils.bot.reply_to( message, "Ошибка смены раскладки текста. Обратитесь к авторам бота\n" "Информация для отладки сохранена в логах бота.")
async def _(event): if event.fwd_from: return stime = time.time() await event.edit("`Processing...`") input_str = event.pattern_match.group(2) start = datetime.now() if not event.reply_to_msg_id: await event.reply("`Please Reply To Message To Convert To Speech!`") return reply_msg = await event.get_reply_message() if not reply_msg.text: await event.edit( "`Please Reply To Text Message To Convert To Speech !`") return if input_str: language = input_str else: language = "en" text = reply_msg.raw_text kk = gtts.lang.tts_langs() if not kk.get(language): await event.edit("`Unsupported Language!`") return tts = gTTS(text, lang=language) tts.save(f'{kk.get(language)}.ogg') dec = detect(text) etime = time.time() hmm_time = round(etime - stime) dec_s = LANGUAGES.get(dec) owo = f"**TTS** \n**Detected Text Language :** `{dec_s.capitalize()}` \n**Speech Text :** `{kk.get(language)}` \n**Time Taken :** `{hmm_time}s` \n__Powered By @FridayOT__" await friday.send_file(event.chat_id, file=f'{kk.get(language)}.ogg', caption=owo, force_document=False, allow_cache=False, reply_to=reply_msg.id) await event.delete() os.remove(f'{kk.get(language)}.ogg')
input_sentences = [] print("ENTER TEXT:") #Take multiline or single line input from user while True: line = input() if (line): input_sentences.append(line) else: #If line is empty, break loop break heading = ['Language Code', 'Input Sentence'] format_text = '{:25}' * (len(heading) + 1) print('\n', format_text.format('Language Name', *heading), '\n', '=' * 120) for data in input_sentences: try: detection = translator.detect(data) sentence = [ LANGUAGES.get(detection.lang).title(), detection.lang, data ] #detection consists of language code and confidence. #detection.lang gives language code. #LANGUAGE.get(detection.lang) gives the language name corresponding to the code from dict. #language name in dict is in lowercase, therefore printing in title format using title method. print(format_text.format(*sentence)) except: detection = 'error' print(format_text.format('Not Detected', 'Not Detected', data))
def languageCode(): langCode = input("Enter the default source language code: ") if not LANGUAGES.get(langCode): print("Not Supported Language Code") return languageCode() return langCode
def main(): st.sidebar.write('StanzaGraphs ') mes = ''' a Multilingual STANZA-based Summary and Keyword Extractor and Question-Answering System using TextGraphs and Neural Networks ''' st.sidebar.write(mes) langList = ['', 'Auto detect'] langList += list(LANGCODES.keys()) langFull = st.sidebar.selectbox('Translate to?', langList) if langFull != "Auto detect": lang = LANGCODES.get(langFull) else: lang = langFull st.write('Selected language: ', langFull) uploaded_file = st.sidebar.file_uploader('Select a File', type=['txt', 'pdf']) title = None action = None if uploaded_file is not None: fpath = save_uploaded_file(uploaded_file) if fpath[-4:] == '.pdf': pdf2txt(fpath[:-4]) text = file2text(fpath[:-4] + '.txt') data_lang = langid.classify(text)[0] if data_lang == 'zh': data_lang = 'zh-cn' elif data_lang == 'jv': data_lang = 'jw' data_fulllang = LANGUAGES.get(data_lang) st.sidebar.write('Language:', data_fulllang) fname = fpath[:-4] print("fname: ") print(fname) if not title or title != uploaded_file.name: title = uploaded_file.name action = st.sidebar.selectbox("Choose an action", ["Summarize", "Ask a question"]) if action == "Summarize": proceed = st.sidebar.button('Run with selected option!') if proceed: if langFull == "Auto detect": st.write('Translate summary from ', fname, 'to ', data_fulllang) else: st.write('Translate summary from ', fname, 'to ', langFull) summary(fname=fname, lang=lang) pass elif action == "Ask a question": st.write('Query Answering') question = st.text_input('Input your question here:') if question: st.write('Answers:') answer(fname, question, lang) else: st.info("Please select a text file to upload")
def translateButton(self): inputText = self.ui.inputText.toPlainText().strip() if inputText: #if not empty translator = Translator() global translatedText translatedText = translator.translate(inputText, src=self.srcLanguage, dest=self.destLanguage) extraData = translatedText.extra_data cache = self.cache if cache: #if not empty #for avoiding first launch exception self.cache should have any values if self.cacheId != len( cache): #doesnt save it if you are in the cache now if inputText != cache[ self. cacheId]: #and translating already cached words self.cacheId = len(cache) cache.append(inputText) else: #if you are not in the cache now and just translating new words it will works fine self.cacheId = len( cache ) #cacheId should be (the last one+1) due to correct cache navigation cache.append(inputText) else: self.cacheId = len(cache) cache.append(inputText) self.ui.outputText.clear() self.ui.outputText.insertHtml( '<font color=\'%s\'>%s</font>' % (self.colorSolid, translatedText.text)) #insert translated text if translatedText.pronunciation != None: self.ui.outputText.insertHtml( '<br><font color=\'%s\'>/%s/</font>' % (self.colorAdd, translatedText.pronunciation)) #insert translated text if self.ui.fromTranslateBox.currentIndex() == 0: self.srcInfo = LANGUAGES.get(translatedText.src, None).title() self.ui.fromTranslateBox.setItemText( 0, 'Auto (%s)' % self.srcInfo ) #make title for fromTranslateButton's 0 index if chosen if self.ui.toTranslateBox.currentIndex() == 0: self.destLanguage = 'en' #default destination language is English self.ui.toTranslateBox.setCurrentText("English") self.ui.status.setText( '<font color=\'%s\'> %s | <u>%s</u>><u>%s</u></font>' % (self.color, self.ui.googleButton.text(), self.ui.fromTranslateBox.currentText(), self.ui.toTranslateBox.currentText())) extra = extraData.get('all-translations', None) definitions = extraData.get('definitions', None) examples = extraData.get('examples', None) if extra != None: #insert extra translations if exist self.ui.outputText.insertHtml( '<br><br><font color=\'%s\'><b>%s</b></font> ' % (self.colorSolid, extra[0][0])) #insert and format text for i in range(len(extra[0][1])): synonym = extra[0][2][i][0] synonyms = ', '.join(extra[0][2][i][1]) self.ui.outputText.insertHtml( '<br> <font color=\'%s\'> %s:</font> <font color=\'%s\'><i>%s</i></font>' % (self.colorSolid, synonym, self.colorAdd, synonyms)) #insert and format text if definitions != None: #insert definitions if exist self.ui.outputText.insertHtml( '<br><br><i><font color=\'%s\'>definitions:</font></i>' % self.colorAdd) for part in range(len(definitions)): part2 = definitions[part][0] if part2 != '': self.ui.outputText.insertHtml( '<br><font color=\'%s\'><b>%s</b></font> ' % (self.colorSolid, part2)) for i in range(len(definitions[part][1])): example = definitions[part][1][i][0] self.ui.outputText.insertHtml( '<br> <font color=\'%s\'><i>%s</i></font>' % (self.colorSolid, example)) if examples != None: #insert examples if exist self.ui.outputText.insertHtml( '<br><br><font color=\'%s\'><b>examples:</b></font>' % self.colorSolid) for i in range(len(examples[0])): example = examples[0][i][0] self.ui.outputText.insertHtml( '<br> <font color=\'%s\'> <i>%s</i></font>' % (self.colorAdd, example))