コード例 #1
0
    def __init__(self, source_language: str, target_language: str):
        super(BestEffortTranslator, self).__init__(source_language=source_language, target_language=target_language)

        lang_config = dict(
            source_language=source_language,
            target_language=target_language
        )

        # Google Translator WITH context
        t = GoogleTranslatorFactory.build_with_context(**lang_config)
        t.quality = 80
        self.add_translator(t)

        # Microsoft Translator WITH context
        t = MicrosoftTranslatorFactory.build_with_context(**lang_config)
        t.quality = 75
        self.add_translator(t)

        # Google Translator WITHOUT context
        t = GoogleTranslatorFactory.build_contextless(**lang_config)
        t.quality = 70
        self.add_translator(t)

        # Microsoft Translator without context
        t = MicrosoftTranslatorFactory.build_contextless(**lang_config)
        t.quality = 60
        self.add_translator(t)

        # Glosbe Translator without context
        t = GlosbeTranslator(**lang_config)
        t.quality = 50
        self.add_translator(t)

        self.set_cache(MemoryCache(translator_type='best_effort_translator'))
コード例 #2
0
    def test_de2de(self):

        self.translator = GlosbeTranslator(source_language='de',
                                           target_language='de')

        response = self.translator.translate(
            TranslationQuery(query="Wunder", max_translations=20))

        self.assertIn("Mirakel",
                      [each['translation'] for each in response.translations])
コード例 #3
0
    def test_en2en(self):

        self.translator = GlosbeTranslator(source_language='en',
                                           target_language='en')

        response = self.translator.translate(
            TranslationQuery(query="mogul", max_translations=20))

        self.assertIn("A wealthy and powerful business person",
                      [each['translation'] for each in response.translations])
コード例 #4
0
    def setUp(self):
        self.translator = CompositeTranslator(source_language='nl',
                                              target_language='en')

        self.translator.add_translator(
            GoogleTranslatorFactory.build_with_context(source_language='nl',
                                                       target_language='en'))
        self.translator.add_translator(
            GlosbeTranslator(source_language='nl', target_language='en'))
コード例 #5
0
class TestGlosbeTranslator(TestCase):
    def setUp(self):
        self.translator = GlosbeTranslator(source_language='es',
                                           target_language='en')

    def testNumberOfTranslationsWorks(self):

        response = self.translator.translate(
            TranslationQuery(query="cama", max_translations=5))

        self.assertEqual(response.translations[0]['translation'], 'bed')
        self.assertEqual(len(response.translations), 5)

        response = self.translator.translate(
            TranslationQuery(query="cama", max_translations=3))

        self.assertEqual(response.translations[0]['translation'], 'bed')
        self.assertEqual(len(response.translations), 3)
コード例 #6
0
class TestGlosbeTranslator(TestCase):
    def setUp(self):
        self.translator = GlosbeTranslator(source_language='es',
                                           target_language='en')

    # NOTE: Test disabled since Glosbe seems to not work at the moment
    def _testNumberOfTranslationsWorks(self):

        response = self.translator.translate(
            TranslationQuery(query="cama", max_translations=5))

        self.assertIn('bed',
                      [each['translation'] for each in response.translations])
        self.assertEqual(len(response.translations), 5)

        response = self.translator.translate(
            TranslationQuery(query="cama", max_translations=3))

        self.assertEqual(response.translations[0]['translation'], 'bed')
        self.assertEqual(len(response.translations), 3)

    # NOTE: Test disabled since Glosbe seems to not work at the moment
    def _test_en2en(self):

        self.translator = GlosbeTranslator(source_language='en',
                                           target_language='en')

        response = self.translator.translate(
            TranslationQuery(query="mogul", max_translations=20))

        self.assertIn("A wealthy and powerful business person",
                      [each['translation'] for each in response.translations])

    # NOTE: Test disabled since Glosbe seems to not work at the moment
    def _test_de2de(self):

        self.translator = GlosbeTranslator(source_language='de',
                                           target_language='de')

        response = self.translator.translate(
            TranslationQuery(query="Wunder", max_translations=20))

        self.assertIn("Mirakel",
                      [each['translation'] for each in response.translations])
コード例 #7
0
    def _translate(self, query: TranslationQuery) -> TranslationResponse:
        """

        :param query:
        :return:
        """

        # Construct url
        api_url = GlosbeTranslator.build_url(query.query, self.source_language,
                                             self.target_language)

        # Send request
        response = requests.get(api_url).json()

        # Attempt request each 5 seconds
        while response['result'] == 'error':
            print('awaiting reset')
            sleep(5)
            #print('new_connection: ', self.tr.get('http://ipecho.net/plain').text)
            response = requests.get(api_url).json()

        response = response['tuc']

        # Extract the translations
        translations = []
        try:
            for translation in response[:query.max_translations]:
                translations.append(
                    self.make_translation(translation['phrase']['text']))

        except KeyError:
            pass

        return TranslationResponse(
            translations=translations,
            costs=TranslationCosts(money=0  # API is free
                                   ))
コード例 #8
0
 def setUp(self):
     self.translator = GlosbeTranslator(source_language='es',
                                        target_language='en')