Commit 01bfb98a authored by dmMaze's avatar dmMaze
Browse files

add yandex translator

parent b8923c42
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -405,6 +405,59 @@ class SugoiTranslator(TranslatorBase):
        return ['日本語']


@register_translator('Yandex')
class YandexTranslator(TranslatorBase):

    concate_text = False
    setup_params: Dict = {
        'api_key': ''
    }

    def _setup_translator(self):
        self.lang_map['简体中文'] = 'zh'
        self.lang_map['日本語'] = 'ja'
        self.lang_map['English'] = 'en'
        self.lang_map['한국어'] = 'ko'
        self.lang_map['Tiếng Việt'] = 'vi'
        self.lang_map['čeština'] = 'cs'
        self.lang_map['Nederlands'] = 'nl'
        self.lang_map['français'] = 'fr'
        self.lang_map['Deutsch'] = 'de'
        self.lang_map['magyar nyelv'] = 'hu'
        self.lang_map['italiano'] = 'it'
        self.lang_map['polski'] = 'pl'
        self.lang_map['português'] = 'pt'
        self.lang_map['limba română'] = 'ro'
        self.lang_map['русский язык'] = 'ru'
        self.lang_map['español'] = 'es'
        self.lang_map['Türk dili'] = 'tr'

        self.api_url = 'https://translate.api.cloud.yandex.net/translate/v2/translate'

    def _translate(self, text: Union[str, List]) -> Union[str, List]:

        body = {
            "targetLanguageCode": self.lang_map[self.lang_target],
            "texts": text,
            "folderId": '',
        }

        headers = {
            "Content-Type": "application/json",
            "Authorization": "Api-Key {0}".format(self.setup_params['api_key'])
        }

        translations = requests.post(self.api_url, json=body, headers=headers).json()['translations']
        if isinstance(text, str):
            return translations[0]['text']
        tr_list = []
        for tr in translations:
            if 'text' in tr:
                tr_list.append(tr['text'])
            else:
                tr_list.append('')
        return tr_list

# # "dummy translator" is the name showed in the app
# @register_translator('dummy translator')
# class DummyTranslator(TranslatorBase):
+7 −10
Original line number Diff line number Diff line
@@ -39,14 +39,6 @@ engchscht_test_list = [
        'text_list': [
            ['', '', 'test ', '', '', ' English', '']
        ]
    },
    {
        'source': 'English',
        'target': '繁體中文',
        'text_list': [
            '中文测试',
            ['', '', 'test ', '', '', ' English', '']
        ]
    }
]

@@ -72,6 +64,11 @@ if __name__ == '__main__':
    # ptranslator = PapagoTranslator('简体中文', 'English')
    # gtranslator = GoogleTranslator('简体中文', 'English')
    # dtranslator = DeeplTranslator('简体中文', 'English')
    sugoi_translator = SugoiTranslator('日本語', 'English', device= {'select': device})
    test_translator(sugoi_translator, jaeng_test_list)
    # sugoi_translator = SugoiTranslator('日本語', 'English', device= {'select': device})

    yandex_setup_params = {
        'api_key': 'invalidtoken'
    }
    yandex_translator = YandexTranslator('日本語', 'English', **yandex_setup_params)
    test_translator(yandex_translator, engchscht_test_list)