Unverified Commit c8a4f2aa authored by dmMaze's avatar dmMaze Committed by GitHub
Browse files

Merge pull request #3 from Snowad14/master

Add Deepl translator & fix requirements
parents 32c0facb f311d021
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ from ..textdetector.textblock import TextBlock
from ..moduleparamparser import ModuleParamParser, DEFAULT_DEVICE
from utils.registry import Registry
from utils.io_utils import text_is_empty
import deepl

TRANSLATORS = Registry('translators')
register_translator = TRANSLATORS.register_module
@@ -299,6 +300,52 @@ class CaiyunTranslator(TranslatorBase):

        return translations

@register_translator('Deepl')
class DeeplTranslator(TranslatorBase):

    concate_text = True
    setup_params: Dict = {
        'api_key': '', 
        'device': {
            'type': 'selector',
            'options': ['cpu', 'cuda'],
            'select': 'cpu'
        }
    }

    def _setup_translator(self):
        self.lang_map['简体中文'] = 'zh'
        self.lang_map['日本語'] = 'ja'
        self.lang_map['English'] = 'en'
        self.lang_map['français'] = 'fr'
        self.lang_map['Deutsch'] = 'de'
        self.lang_map['italiano'] = 'it'
        self.lang_map['português'] = 'pt'
        self.lang_map['русский язык'] = 'ru'
        self.lang_map['español'] = 'es'
        self.lang_map['български език'] = 'bg'
        self.lang_map['Český Jazyk'] = 'cs'
        self.lang_map['Dansk'] = 'da'
        self.lang_map['Ελληνικά'] = 'el'
        self.lang_map['Eesti'] = 'et'
        self.lang_map['Suomi'] = 'fi'
        self.lang_map['Magyar'] = 'hu'
        self.lang_map['Lietuvių'] = 'lt'
        self.lang_map['latviešu'] = 'lv'
        self.lang_map['Nederlands'] = 'nl'
        self.lang_map['Język polski'] = 'pl'
        self.lang_map['Română'] = 'ro'
        self.lang_map['Slovenčina'] = 'sk'
        self.lang_map['Slovenščina'] = 'sl'
        self.lang_map['Svenska'] = 'sv' 
        
    def _translate(self, text: Union[str, List]) -> Union[str, List]:
        api_key = self.setup_params['api_key']
        translator = deepl.Translator(api_key)
        source = self.lang_map[self.lang_source]
        target = self.lang_map[self.lang_target]
        result = translator.translate_text(text, source_lang=source, target_lang=target)
        return result.text
    
# # "dummy translator" is the name showed in the app
# @register_translator('dummy translator')
+8 −1
Original line number Diff line number Diff line
@@ -6,3 +6,10 @@ fugashi
unidic_lite
tqdm
opencv-python>=4.5.4
PyQt5
shapely
pyclipper
einops
termcolor
bs4
deepl
+2 −1
Original line number Diff line number Diff line
import sys, os
sys.path.append(os.getcwd())
from dl.translators import TranslatorBase, GoogleTranslator, PapagoTranslator, TRANSLATORS, CaiyunTranslator
from dl.translators import TranslatorBase, GoogleTranslator, PapagoTranslator, TRANSLATORS, CaiyunTranslator, DeeplTranslator

def test_translator(translator: TranslatorBase, test_list):
    for test_dict in test_list:
@@ -49,5 +49,6 @@ if __name__ == '__main__':
    ptranslator = PapagoTranslator('简体中文', 'English')
    ptranslator = PapagoTranslator('简体中文', 'English')
    gtranslator = GoogleTranslator('简体中文', 'English')
    dtranslator = DeeplTranslator('简体中文', 'English')
    test_translator(ptranslator, engchscht_test_list)