示例#1
0
async def on_message(message):
    msg = str(message.content).strip()
    msg = msg.replace('https://', '').replace('http://', '')
    users_to_replace = set()
    for ma_user in re_user.finditer(msg):
        uid = int(ma_user.group(1))
        user = message.guild.get_member(uid)
        users_to_replace.add((uid, user.name))
    if msg.startswith('TTTS'):
        ttts = True
        msg = msg[4:].strip()
    else:
        ttts = False
    if not message.author.bot and len(msg) > 4:
        try:
            msg_en = googletrans.Translator().translate(msg, dest='en').text
            msg_no = googletrans.Translator().translate(msg, dest='no').text
            for uid, name in users_to_replace:
                msg = re.sub(f'[<][@][!]? *{uid} *[>]', name, msg)
                msg_en = re.sub(f'[<][@][!]? *{uid} *[>]', name, msg_en)
                msg_no = re.sub(f'[<][@][!]? *{uid} *[>]', name, msg_no)
            logging.info(f'{msg=} {msg_no=} {msg_en=}')
            if msg_no.lower().strip() != msg.lower().strip():
                await message.channel.send(f"{message.author.name}: {msg_no}",
                                           delete_after=60 * 60,
                                           tts=ttts)
            elif msg_en.lower().strip() != msg.lower().strip():
                await message.channel.send(f"{message.author.name}: {msg_en}",
                                           delete_after=60 * 60,
                                           tts=ttts)
        except Exception as err:
            logging.exception('Could not translate the message!')
示例#2
0
async def translate(ctx, *phrase):
    phrase = " ".join(phrase[:])
    detect = googletrans.Translator().detect(phrase)
    if (detect.lang == nativeLang):
        await ctx.send("Message was already in English.")
        return
    else:
        print(detect.lang)
        translated = googletrans.Translator().translate(phrase,
                                                        dest=nativeLang,
                                                        src=detect.lang)
        await ctx.channel.trigger_typing()
        await ctx.channel.send(ctx.author.name + ' said: ' + translated.text +
                               '\n' + str(languages.get(detect.lang)))
示例#3
0
def translate_twice(
    x
):  # Use Random Language Codes to Recycle English To Slightly Alter Syntax/Diction
    lang = choose_lang1()
    lang2 = choose_lang2()
    first = googletrans.Translator().translate(text=x, dest=lang,
                                               src='en').text
    second = googletrans.Translator().translate(first, dest='en',
                                                src=lang).text
    third = googletrans.Translator().translate(second, dest=lang2,
                                               src='en').text
    english_cycled = googletrans.Translator().translate(third,
                                                        dest='en',
                                                        src=lang2).text
    return english_cycled
示例#4
0
def translate_unified_text2(df):
    for row in range(len(df)):
        translator = googletrans.Translator()
        text = str(df['unified_text'].get_value(row))
        text1 = emoji.demojize(text)
        trans = translator.translate(text1, dest='en')
        df['unified_text'][row]= trans.text
示例#5
0
def trans_late_literate(input_word):
    translator = googletrans.Translator()

    for language in language_list:

        if language in ('bg', 'el', 'hy', 'ka', 'l1', 'mk', 'mn', 'ru', 'sr',
                        'uk'):
            result = translator.translate(word, dest=language,
                                          src='en').text.lower()
            result_transliterated = translit(result, language, reversed=True)
            d[language] = result_transliterated
            d[language + '.t'] = result

        elif language == 'be':
            result = translator.translate(word, dest=language,
                                          src='en').text.lower()
            result_transliterated = translit(result, 'ru', reversed=True)
            result_transliterated = result_transliterated.replace('ў', 'u')
            d[language] = result_transliterated
            d[language + '.t'] = result

        else:
            result = translator.translate(word, dest=language,
                                          src='en').text.lower()
            d[language] = result
def translateTitle(oldTitle):
    try:
        translator = googletrans.Translator()
        newTitle = translator.translate(oldTitle).text
    except:
        return oldTitle
    return newTitle
示例#7
0
def send_message():
    #socketId = request.form['socketId']
    trans = googletrans.Translator()
    message = request.form['message']
    global lang_flag

    lang = nlp(message)
    print(lang._.languages)

    if 'hi' in lang._.languages or 'bh' in lang._.languages:
        lang_flag = 1
        # print(doc._.language_scores['bh'])
        message = trans.translate(message ,src='hi', dest='en').text
    elif 'en' in lang._.languages or not lang._.languages:
        lang_flag = 0
        print('i am eng')
        
    print(message)
    project_id = os.getenv('DIALOGFLOW_PROJECT_ID')
    fulfillment_text, fulfillment_msg = detect_intent_texts(project_id, "unique", message, 'en')
    response_text = { "message":  fulfillment_text }
    
    print(fulfillment_text)
    print(fulfillment_text != "undefined")
    if(fulfillment_text != "undefined"):
        pusher_client.trigger('movie_bot', 'new_message',
                            {'human_message': message, 'bot_message': fulfillment_msg})
                            
    return jsonify(response_text)
示例#8
0
async def translate(client: AsyncClient, room_id: str, message: str):

    try:
        roomsdb = pickle.load(open(roomsfile, "rb"))
    except FileNotFoundError:
        roomsdb = {}

    if room_id in allowed_rooms and room_id in roomsdb.keys():
        # Remove special characters before translation
        message = sub('[^A-z0-9\-\.\?!:\sÄäÜüÖö]+', '', message)
        trans = googletrans.Translator()
        logger.debug(f"Detecting language for message: {message}")
        message_source_lang = trans.detect(message).lang
        if roomsdb[room_id]["bidirectional"]:
            languages = [roomsdb[room_id]["source_langs"][0], roomsdb[room_id["dest_lang"]]]
            if message_source_lang in languages:
                # there has to be a simpler way, but my brain is tired
                dest_lang = set(languages).difference([message_source_lang])
                if len(dest_lang) == 1:
                    dest_lang = dest_lang.pop()
                    translated = trans.translate(message, dest=dest_lang).text
                    await send_text_to_room(client, room_id, translated)
        else:
            if message_source_lang != roomsdb[room_id]["dest_lang"] and (roomsdb[room_id]["source_langs"] == ['any'] or message_source_lang in roomsdb[room_id]["source_langs"]):
                translated = trans.translate(message, dest=roomsdb[room_id]["dest_lang"]).text
                await send_text_to_room(client, room_id, translated)
示例#9
0
def trans(fC="Ok", src="en", dest="ru", translator=googletrans.Translator()):
    """fC - строка для перевода
    src = "en" - язык источника 
    dest = "ru" - язык назначения
    translator = googletrans.Translator() - объект библиотеки переводчика
    
    """
    isMistake = False
    translation = "n/a"
    mistakeValue = [""]
    notTranslated = ""
    tr = translator.translate(fC, src="en", dest=dest)
    if tr.extra_data["possible-mistakes"] != None:
        isMistake = True
        mistakeValue = tr.extra_data
    elif tr.origin == tr.text:
        if tr.extra_data["all-translations"] != None:
            #Библиотека не смогла определиться с вариантом перевода, берем первый из предложенных
            translation = tr.extra_data["all-translations"][0][1][
                0] + " <-> " + tr.origin + "\n"
        else:
            #Здесь какая-то фича библиотеки. То что вываливается здесь, вполне корректно переводится, если лежит в урезанном файле. Отправляем на доработку
            notTranslated = fC
    else:
        #Все перевелось без ошибок
        translation = tr.origin + " <-> " + tr.text + "\n"

    return isMistake, translation, notTranslated, mistakeValue
示例#10
0
def translate_strings(data,
                      source_language='en_EN.UTF-8',
                      destination_language='de_DE.UTF-8',
                      translator=None):
    """
    automatic translation of strings in a dict

    Args:
        data (dict or str): data to translate
        source_language (str, optional): source language. Defaults to 'en_EN.UTF-8'.
        destination_language (str, optional): destination language. Defaults to 'de_DE.UTF-8'.
        translator (googletrans.Translator, optional): for caching of the instance. Defaults to None.

    Returns:
        dict or str: translated object
    """
    if not translator:
        try:
            import googletrans
            translator = googletrans.Translator()
        except ImportError:
            logger.warning(
                'Failed to load googletans module during automatic string translation'
            )
            return data

    if type(data) == str:
        return translator.translate(data,
                                    src=source_language,
                                    dest=destination_language).text
    elif type(data) == dict:
        for k, v in data.items():
            data[k] = translate_strings(v, source_language,
                                        destination_language)
    return data
示例#11
0
    def __init__(
            self,
            # Default destination language
            dest_lang,
            nlp_download_dir = None
    ):
        # 바보 nltk is broken, https://stackoverflow.com/questions/38916452/nltk-download-ssl-certificate-verify-failed
        # TODO Write our own translator
        Ssl.disable_ssl_check()

        try:
            import nltk
            import googletrans

            # Default destination language
            self.dest_lang = Translator.map_to_correct_nltk_lang_localisation_code(
                lang_code = dest_lang
            )
            # The model data required for translation
            nltk.download('punkt', download_dir=nlp_download_dir)

            # Need to add path otherwise nltk will not find it
            nltk.data.path.append(nlp_download_dir)

            self.translator = googletrans.Translator()
        except Exception as ex:
            errmsg =\
                str(self.__class__) + ' ' + str(getframeinfo(currentframe()).lineno)\
                + ': Exception instantiating Translator object for destination language "'\
                + str(self.dest_lang) + '": ' + str(ex) + '.'
            lg.Log.error(errmsg)
            raise Exception(errmsg)
示例#12
0
    def __init__(self, **kwargs):
        model_name = kwargs['model']
        seed = kwargs['seed']
        self.length = kwargs['len']
        top_k = kwargs['top_k']
        self.lang_target = kwargs['language']

        self.enc = encoder.get_encoder(model_name)
        self.translator = googletrans.Translator()
        hparams = model.default_hparams()
        with open(os.path.join('./data/models', model_name, 'hparams.json')) as f:
            hparams.override_from_dict(json.load(f))
        self.lang_model = hparams.n_lang    #get the language of the model from Hyperparameter

        # start session
        self.sess = tf.Session()
        self.context = tf.placeholder(tf.int32, [1, None])
        np.random.seed(seed)
        tf.set_random_seed(seed)
        self.output = sample.sample_sequence(
            hparams=hparams, length=self.length,
            context=self.context,
            batch_size=1,
            temperature=1,
            top_k=top_k, top_p=0
        )

        # restore transformer model from last checkpoint
        saver = tf.train.Saver()
        ckpt = tf.train.latest_checkpoint(os.path.join('./data/models', model_name))
        saver.restore(self.sess, ckpt)
示例#13
0
def path_schwurbel(path, text):
    """
    Feeds the given text through the given path of languages. The resulting
    translation is returned.

    Args:
        path (list): List of languages to translate through.
        text (str): The text to translate.

    Returns:
        The resulting translated text as a string.

    Examples:
        Translate "My hovercraft is full of eels." from English to Japanese and
        back to English:

        .. code-block:: python

            path = 'en,ja,en'
            text = 'My hovercraft is full of eels.'
            translated = path_schwurbel(path, text)

    """
    trans = googletrans.Translator()

    translated = text
    for src, dest in zip(path, path[1:]):
        translated = trans.translate(translated, src=src, dest=dest)
        assert translated.src == src
        assert translated.dest == dest
        translated = translated.text
        sleep(COOLDOWN)

    return translated
def run_fizzbuzz(i):
    '''
    This function runs Kwame's fizzbuzz, which prints out numbers from 1 to i,
    except for each third number it prints a partying face emoji,
    every fifth number it prints a cowboy hat face emoji,
    every fifteenth number it prints a face screaming in fear emoji,
    and every other number prints as the Spanish translation of its English word.
    '''
    fizzbuzz = emojize(':face_screaming_in_fear:')
    fizz = emojize(':partying_face:')
    buzz = emojize(':cowboy_hat_face:')

    translator = googletrans.Translator()
    p = inflect.engine()

    for i in range(1, i + 1):
        if i % 3 == 0 and i % 5 == 0:
            print(fizzbuzz)
        elif i % 3 == 0:
            print(fizz)
        elif i % 5 == 0:
            print(buzz)
        else:
            numword = p.number_to_words(i)
            result = translator.translate(numword, dest='es')
            print(result.text)
示例#15
0
 def show(node):
     trans = googletrans.Translator()
     result2 = trans.translate(" ".join(node.leaves()),
                               dest="zh-cn",
                               src='en')
     # result2 = trans.translate("post ", dest="zh-cn", src='en')
     print(result2.get_text())
示例#16
0
    def __init__(self, sentence):
        en_parser = StanfordParser(
            path_to_jar=
            '../stanford-parser-full-2018-02-27/stanford-parser.jar',
            path_to_models_jar=
            '../stanford-parser-full-2018-02-27/stanford-parser-3.9.1-models.jar',
            model_path=
            '../stanford-parser-full-2018-02-27/stanford-parser-3.9.1-models/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz'
        )
        sg = StanfordTokenizer(
            path_to_jar='../stanford-parser-full-2018-02-27/stanford-parser.jar'
        )
        self.status = 0
        self.trans = googletrans.Translator()

        self.sentence = sentence.strip("\n").replace(" ", "")

        en_trans = self.trans.translate(sentence).text
        en_trans = sg.tokenize(en_trans)
        try:
            tree = list(en_parser.parse(en_trans))
            self.tree = tree[0]
            # print(self.tree)
            self.rel = []
        except:
            self.status = 1
示例#17
0
文件: Uteis.py 项目: YoungEz/Androxus
 async def _traduzir(self, ctx, dest=None, *, frase=''):
     if dest and frase:
         from googletrans.constants import LANGUAGES
         dests = []
         for lang in LANGUAGES.items():
             # vai pegar o dicionario de todas as linguas que o módulo aceita
             # e transformar em uma lista, apenas com a abreviação
             dests.append(lang[0])
         if not dest in dests:  # se o "dest" que a pessoa passou não for válido:
             return await ctx.send(
                 f'Não encontrei nenhuma lingua chamada ``{dest}``!\n' +
                 'Por favor, verifique se você digitou a abreviação certa!\n'
                 + '<a:sad:755774681008832623>')
         # anti mention:
         if ctx.message.mentions:  # se tiver alguma menção na mensagem
             for mention in ctx.message.mentions:
                 frase = frase.replace(f'<@{mention.id}>', '')
                 frase = frase.replace(f'<@!{mention.id}>', '')
         frase = frase.replace(f'@',
                               '@\uFEFF')  # quebra o @everyone e o @here
         # se após a remoção das menções, não sobrar nada, para a execução
         if len(frase.replace(' ', '')) == 0:
             return await self.bot.send_help(ctx)
         msg = googletrans.Translator().translate(frase, dest=dest).text
         await ctx.send(content=f'{ctx.author.mention} {msg}')
     else:
         await self.bot.send_help(ctx)
def test_translateChelbesOneWordENGPL():
    sentence = "England"
    translator = googletrans.Translator()
    lang_from = 'en'
    lang_to = 'pl'
    result = translateChelbes(translator, sentence, lang_from, lang_to)
    assert result.lower() == "anglia"
示例#19
0
    async def transchat(self, ctx, lang1, lang2, member: discord.Member):
        '''
            Lets you have a real-time translated chat

            Required arguments: <lang_of_the_user> <lang_of_other_user> <mention_of_other_user>
        '''
        translator = googletrans.Translator()

        while True:
            await ctx.send(f"{translator.translate('It is your turn', dest=lang1, src='en').text} {ctx.author.mention}")
            reply1 = await self.bot.wait_for('message', check=lambda message: message.author == ctx.author)
            reply1 = reply1.content

            if reply1 == "STOPPY":
                break

            await ctx.send(translator.translate(text=reply1, dest=lang2, src=lang1).text)

            await ctx.send(f"{translator.translate('It is your turn', dest=lang2, src='en').text} {member.mention}")
            reply2 = await self.bot.wait_for('message', check=lambda message: message.author == member)
            reply2 = reply2.content

            if reply2 == "STOPPY":
                break

            await ctx.send(translator.translate(text=reply2, dest=lang1, src=lang2).text)
def test_translateChelbesSentencePLENG():
    sentence = "To jest mój kot"
    translator = googletrans.Translator()
    lang_from = 'pl'
    lang_to = 'en'
    result = translateChelbes(translator, sentence, lang_from, lang_to)
    assert result.lower() == "this is my cat"
def test_translateChelbesSentenceENGPL():
    sentence = "I have a dog"
    translator = googletrans.Translator()
    lang_from = 'en'
    lang_to = 'pl'
    result = translateChelbes(translator, sentence, lang_from, lang_to)
    assert result.lower() == "mam psa"
def test_translateChelbesOneWordPLENG():
    sentence = "Polska"
    translator = googletrans.Translator()
    lang_from = 'pl'
    lang_to = 'en'
    result = translateChelbes(translator, sentence, lang_from, lang_to)
    assert result.lower() == "poland"
示例#23
0
 def __init__(self, service, testing=False):
     super().__init__(service)
     self.translator = googletrans.Translator()
     self.LANGUAGES = googletrans.LANGUAGES
     self.LANGCODES = googletrans.LANGCODES
     self.default = self.LANGCODES[service['params']
                                   ['default_language'].lower()]
示例#24
0
 def _translate():
     while True:
         try:
             # https://github.com/ssut/py-googletrans/issues/234#issuecomment-736314530
             return googletrans.Translator(service_urls=['translate.googleapis.com']).translate(text, src=src_lang, dest=dest_lang)
         except AttributeError:
             time.sleep(0.5)
示例#25
0
    async def _translate(self, ctx, text, *, langs=""):
        """: Translate things you don't understand
        """
        def convert(s: str) -> dict:
            a = s.lower().split()
            res = {
                a[i]: a[i + 1]
                for i in range(len(a)) if a[i] in ("from", "to")
            }
            res["from"] = res.get("from") or "auto"
            res["to"] = res.get("to") or "en"
            return res

        try:
            langdict = convert(langs)
        except IndexError:
            raise commands.BadArgument("Invalid language format.")
        translator = googletrans.Translator()
        tmp = functools.partial(translator.translate,
                                text,
                                src=langdict["from"],
                                dest=langdict["to"])
        try:
            async with ctx.typing():
                res = await self.bot.loop.run_in_executor(None, tmp)
        except ValueError as e:
            raise commands.BadArgument(e.args[0].capitalize())
        await ctx.send(res.text.replace("@", "@\u200b"))
示例#26
0
文件: run.py 项目: yumetov/jarxiv
def main():
    ARXIV_URL = get_arxiv_url_from_envvar()
    DEST_LANG = get_dest_lang_from_envvar()
    ARXIV_VANITY_BASE_URL = get_arxiv_vanity_base_url_from_envvar()
    SLACK_WEBHOOK_URL = get_slack_webhook_url_from_envvar()
    slack_user_info = get_slack_user_info_from_envvar()

    translator = googletrans.Translator()

    updated = ''

    while True:
        feed = feedparser.parse(ARXIV_URL)
        handling_feed_error(feed)
        if feed['updated'] == updated:
            time.sleep(10 * 60)
            continue
        updated = feed['updated']
        print(f'updated at {updated}')

        datas_to_send_to_slack = []
        for entry in feed['entries']:
            paper_info = get_paper_info_from_entry(entry, translator, DEST_LANG, ARXIV_VANITY_BASE_URL)
            if paper_info == False:
                continue
            paper_info_text = combine_paper_info_to_text(paper_info)
            data_to_send_to_slack = {'text': paper_info_text, **slack_user_info}
            datas_to_send_to_slack.append(json.dumps(data_to_send_to_slack))

        for data_to_send_to_slack in datas_to_send_to_slack:
            requests.post(SLACK_WEBHOOK_URL, data=data_to_send_to_slack)

        time.sleep(10 * 60)
示例#27
0
 def qr_gxlate(self, s):
     self.gbeg_t = time.time()
     translator = googletrans.Translator()
     res = translator.translate(s).text
     self.gend_t = time.time()
         
     return res
示例#28
0
 def __init__(self, **kwargs):
     self.kwargs = kwargs
     self.translator = None
     if self.kwargs.get('translate') in ('1', 'true'):
         self.translator = googletrans.Translator(
             service_urls=['translate.google.cn', 'translate.google.cn']
         )
示例#29
0
def get_diner() -> Diner:
    menu = Diner()
    translator = googletrans.Translator()

    with requests.Session() as session:
        reset_session(session)
        start_new_command(session)

        for category, url in [("plats", url_diner_meals),
                              ("desserts", url_diner_desserts)]:
            print("Looking for %s..." % category)

            res = session.get(url)  # Get menu
            soup_diner = make_soup(res)

            dish_diner_selects = soup_diner.find_all(
                "select", {"class": "js-item-quantity"})

            for dish_select in dish_diner_selects:
                quantity = int(dish_select.find_all("option")[-1].get_text())
                dish_diner_div = dish_select.parent.parent.parent
                dish_diner = dish_diner_div.find("h3").get_text().strip()

                dish_diner = sanitize_and_spellcheck(dish_diner)
                menu[category].append(
                    (dish_diner, translator.translate(dish_diner,
                                                      src="fr").text,
                     quantity))
    return menu
示例#30
0
    def _do_translate(text: List[str], to_lang: str) -> List[googletrans.models.Translated]:
        """
        Call google translate API to translate given text

        :param **kwargs:
        :param text: The source text(s) to be translated. Batch translation is supported via sequence input.
        :type text: UTF-8 :class:`str`; :class:`unicode`; string sequence (list, tuple, iterator, generator)

        :return: translated text in the same form it was provided
        """
        # Google API provider should allow new access every 1h, but if more translations need to be done,
        # a number of different country providers are given
        # E.g. from here https://sites.google.com/site/tech4teachlearn/googleapps/google-country-codes
        # But have to make sure the site actually loads first :)

        ending_formula = re.compile(r'translate\..*?\.(.+)$')  # for for com, co.uk, lt or others
        provider_endings = (ending_formula.search(url).group(1) for url in googletrans.constants.DEFAULT_SERVICE_URLS)
        provider_base = 'translate.googleapis'

        for ending in provider_endings:
            provider = f'{provider_base}.{ending}'
            translator = googletrans.Translator(service_urls=[provider])
            try:
                return translator.translate(text, dest=to_lang)
            except AttributeError:
                logging.info(f'Provider "{provider}" got blocked, trying another one...')
        exit('No more providers left to try, try updating the provider list or wait 1h until you get unblocked.')