Loading ballontranslator/dl/translators/__init__.py +53 −0 Original line number Diff line number Diff line Loading @@ -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): Loading ballontranslator/tests/test_translators.py +7 −10 Original line number Diff line number Diff line Loading @@ -39,14 +39,6 @@ engchscht_test_list = [ 'text_list': [ ['', '', 'test ', '', '', ' English', ''] ] }, { 'source': 'English', 'target': '繁體中文', 'text_list': [ '中文测试', ['', '', 'test ', '', '', ' English', ''] ] } ] Loading @@ -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) Loading
ballontranslator/dl/translators/__init__.py +53 −0 Original line number Diff line number Diff line Loading @@ -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): Loading
ballontranslator/tests/test_translators.py +7 −10 Original line number Diff line number Diff line Loading @@ -39,14 +39,6 @@ engchscht_test_list = [ 'text_list': [ ['', '', 'test ', '', '', ' English', ''] ] }, { 'source': 'English', 'target': '繁體中文', 'text_list': [ '中文测试', ['', '', 'test ', '', '', ' English', ''] ] } ] Loading @@ -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)