Commit 30bceea0 authored by Sergey Pinus's avatar Sergey Pinus
Browse files

Add DeepL Free v2, YandexFree, and Yandexv2 translators

parent bdbbae98
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
from .base import *
import httpx

@register_translator('DeepL Free v2')
class DeepLTranslatorv2(BaseTranslator):

    concate_text = False
    params: Dict = {
        'api_url': 'https://dpltrnslt.bropinesd.online/',  # EndPoint will be provided by the user
        'delay': 0.0,
    }
# Setup your endpoint api with https://github.com/OwO-Network/DeepLX

    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'
        # Add other languages here

    def _translate(self, src_list: List[str]) -> List[str]:
        tr_list = []
        for text in src_list:
            data = {
                'text': text,
                'source_lang': 'auto',  # or your source language
                'target_lang': self.lang_map[self.lang_target]
            }

            response = requests.post(self.params['api_url'], json=data)

            if response.status_code == 200:
                # Extract the translated text from the 'data' key
                translated_text = response.json().get('data', '')
                tr_list.append(translated_text)
            else:
                tr_list.append('')  # Or error handling

        return tr_list
+51 −0
Original line number Diff line number Diff line
from .base import *

@register_translator('YandexFree')
class YandexTranslatorFree(BaseTranslator):

    concate_text = False
    params: Dict = {
        'endpoint': 'https://translate.toil.cc/translate',  # Service endpoint 
        'delay': 0.0,                                       # Go to https://github.com/FOSWLY/translate-backend to setup your API backend
    }



    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'

    
    def _translate(self, src_list: List[str]) -> List[str]:
        tr_list = []
        dest_lang_code = self.lang_map[self.lang_target]  # Get the language code from lang_map

        for text in src_list:
            body = {
                "lang": dest_lang_code, 
                "text": text
            }
            response = requests.post(self.params['endpoint'], json=body)
            if response.status_code == 200:
                translated_text = response.json().get('text', [''])[0]
                tr_list.append(translated_text)
            else:
                tr_list.append('')  # Or error handling

        return tr_list
        
 No newline at end of file
+52 −0
Original line number Diff line number Diff line
from .base import *

@register_translator('Yandexv2')
class YandexTranslatorv2(BaseTranslator):

    concate_text = False
    params: Dict = {
        'api_key': '',
        'delay': 0.0,
    }

    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.yandex.net/api/v1.5/tr.json/translate"


    def _translate(self, src_list: List[str]) -> List[str]:
        tr_list = []
        for text in src_list:
            params = {
                'key': self.params['api_key'],
                'text': text,
                'lang': self.lang_map[self.lang_target],
                'format': 'plain',
                # 'options': 1, # If additional options are needed
                # 'callback': 'callback_function_name', # If callback is used
            }
            response = requests.get('https://translate.yandex.net/api/v1.5/tr.json/translate', params=params)
            if response.status_code == 200:
                translated_text = response.json().get('text', [''])[0]
                tr_list.append(translated_text)
            else:
                tr_list.append('')  # Or error handling

        return tr_list