Example #1
0
 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```"))
Example #2
0
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)
Example #3
0
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
Example #4
0
 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)
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
    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)
Example #9
0
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)
Example #10
0
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
Example #11
0
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
Example #12
0
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"
            "Информация для отладки сохранена в логах бота.")
Example #13
0
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))
Example #15
0
def languageCode():
    langCode = input("Enter the default source language code: ")
    if not LANGUAGES.get(langCode):
        print("Not Supported Language Code")
        return languageCode()
    return langCode
Example #16
0
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")
Example #17
0
    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\'>&nbsp;%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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp; <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>&nbsp;&nbsp;&nbsp;&nbsp;<font color=\'%s\'> <i>%s</i></font>'
                        % (self.colorAdd, example))