Skip to content

Commit

Permalink
Add DeepL provider
Browse files Browse the repository at this point in the history
  • Loading branch information
Azin Zahraei committed Apr 25, 2021
1 parent 737afc4 commit 3e78df0
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
3 changes: 2 additions & 1 deletion translate/providers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@

from .mymemory_translated import MyMemoryProvider # noqa
from .microsoft import MicrosoftProvider # noqa
from .deepl import DeeplProvider # noqa

__all__ = ['MyMemoryProvider', 'MicrosoftProvider']
__all__ = ['MyMemoryProvider', 'MicrosoftProvider', 'DeeplProvider']
39 changes: 39 additions & 0 deletions translate/providers/deepl.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python
# encoding: utf-8
import requests
import json

from .base import BaseProvider
from ..constants import TRANSLATION_FROM_DEFAULT
from ..exceptions import TranslationError


class DeeplProvider(BaseProvider):
'''
@DeeplProvider: This is a integration with DeepL Translator API.
Website: https://www.deepl.com
Documentation: https://www.deepl.com/docs-api
'''
name = 'Deepl'
base_url = 'https://api-free.deepl.com/v2/translate'

def _make_request(self, text):
params = {
'auth_key': self.secret_access_key,
'target_lang': self.to_lang,
'text': text
}

if self.from_lang != TRANSLATION_FROM_DEFAULT:
params['source_lang'] = self.from_lang

response = requests.post(self.base_url, params=params, headers=self.headers, json=[{}])
return json.loads(response.text)

def get_translation(self, text):
data = self._make_request(text)

if "error" in data:
raise TranslationError(data["error"]["message"])

return data["translations"][0]["text"]
5 changes: 3 additions & 2 deletions translate/translate.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
from textwrap import wrap

from .exceptions import InvalidProviderError
from .providers import MyMemoryProvider, MicrosoftProvider
from .providers import MyMemoryProvider, MicrosoftProvider, DeeplProvider

DEFAULT_PROVIDER = MyMemoryProvider
TRANSLATION_API_MAX_LENGHT = 1000

PROVIDERS_CLASS = {
'mymemory': MyMemoryProvider,
'microsoft': MicrosoftProvider
'microsoft': MicrosoftProvider,
'deepl': DeeplProvider
}


Expand Down

0 comments on commit 3e78df0

Please sign in to comment.