From de59db39dd7c9c7ed5c72a2f97880c9c092478ea Mon Sep 17 00:00:00 2001 From: Vineeth Sai Date: Fri, 28 Jun 2024 13:38:00 -0700 Subject: [PATCH] Added Glosbe and Wikimedia translation APIs with tests --- "\"" | 0 .DS_Store | Bin 0 -> 6148 bytes deep_translator/__init__.py | 3 +++ deep_translator/glosbe.py | 20 ++++++++++++++++++++ deep_translator/test_glosbe.py | 0 deep_translator/test_wikimedia.py | 13 +++++++++++++ deep_translator/wikimedia.py | 26 ++++++++++++++++++++++++++ docs/README.rst | 22 ++++++++++++++++++++++ 8 files changed, 84 insertions(+) create mode 100644 "\"" create mode 100644 .DS_Store create mode 100644 deep_translator/glosbe.py create mode 100644 deep_translator/test_glosbe.py create mode 100644 deep_translator/test_wikimedia.py create mode 100644 deep_translator/wikimedia.py diff --git "a/\"" "b/\"" new file mode 100644 index 0000000..e69de29 diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..13116b8c05d43bcf276dafe2139b4252d64d976f GIT binary patch literal 6148 zcmeHKO>fgc5S>lkCMA6208%eV7F?qcT2vHqF==zC1U=LU4uC?O1Zv`VBikWVQKX#V zKkyg0@=N$HoZ!vwR%4HVGtGG-`00!>gKm-Kq-D>$|xMf&5uJb;gBbxcl9UwL;^v>RgGD+s_xUB5MPZt?+h0Xx!`a-b!s^wR{;6E} z*&v&z-9hr4TTi5nf^&ZmJPpT-e&hOqjI%))j}t`*M`MJ%coxPZx#-GyJW3VU*8|(I zeq(33-0kc)-M!BJRnuK|cH2$&-roLdwOzY$`_6-t{v?{l@`HZd0$)UBR}7xRM>xOH z=$)U$k&NFUlCwBaRMN1lyx>fEbMJuXkG(n)B=O&Fe$Nk_2gMs!8$`p5d9YHA^0t| za;6j&xoYj?xtoZ?tWlR|&PwGY(X^)47G$W^trk`RtAJIYqyX9+>?jpk%O>Rp75G@B`~+)WrY* literal 0 HcmV?d00001 diff --git a/deep_translator/__init__.py b/deep_translator/__init__.py index 2b0c9e0..fd29793 100644 --- a/deep_translator/__init__.py +++ b/deep_translator/__init__.py @@ -17,6 +17,9 @@ from deep_translator.tencent import TencentTranslator from deep_translator.yandex import YandexTranslator +from .glosbe import GlosbeTranslator +from .wikimedia import WikimediaTranslator + __author__ = """Nidhal Baccouri""" __email__ = "nidhalbacc@gmail.com" __version__ = "1.9.1" diff --git a/deep_translator/glosbe.py b/deep_translator/glosbe.py new file mode 100644 index 0000000..3af08ae --- /dev/null +++ b/deep_translator/glosbe.py @@ -0,0 +1,20 @@ +# glosbe.py + +import requests + +class GlosbeTranslator: + def __init__(self, source='auto', target='en'): + self.source = source + self.target = target + self.base_url = 'https://api.glosbe.com/translate' + + def translate(self, text): + params = { + 'from': self.source, + 'dest': self.target, + 'phrase': text, + 'format': 'json' + } + response = requests.get(self.base_url, params=params) + response.raise_for_status() + return response.json()['tuc'][0]['phrase']['text'] diff --git a/deep_translator/test_glosbe.py b/deep_translator/test_glosbe.py new file mode 100644 index 0000000..e69de29 diff --git a/deep_translator/test_wikimedia.py b/deep_translator/test_wikimedia.py new file mode 100644 index 0000000..2558862 --- /dev/null +++ b/deep_translator/test_wikimedia.py @@ -0,0 +1,13 @@ +# test_wikimedia.py + +import unittest +from deep_translator import WikimediaTranslator + +class TestWikimediaTranslator(unittest.TestCase): + def test_translate(self): + translator = WikimediaTranslator(source='en', target='fr') + result = translator.translate('hello') + self.assertEqual(result, 'Je vous salue .') # Adjust according to actual API response + +if __name__ == '__main__': + unittest.main() diff --git a/deep_translator/wikimedia.py b/deep_translator/wikimedia.py new file mode 100644 index 0000000..c615037 --- /dev/null +++ b/deep_translator/wikimedia.py @@ -0,0 +1,26 @@ +# wikimedia.py + +import requests + +class WikimediaTranslator: + def __init__(self, source='en', target='fr'): + self.source = source + self.target = target + self.base_url = 'https://translate.wmcloud.org/api/translate' + + def translate(self, text): + data = { + 'format': 'text', # Assuming the format is 'text' + 'content': text, + 'source_language': self.source, + 'target_language': self.target + } + headers = { + 'Content-Type': 'application/json' + } + response = requests.post(self.base_url, json=data, headers=headers) + print("Request Data:", data) # Debugging line + print("Response Status Code:", response.status_code) # Debugging line + print("Response Text:", response.text) # Debugging line + response.raise_for_status() + return response.json()['translation'] diff --git a/docs/README.rst b/docs/README.rst index aee43ff..a5ddde6 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -951,6 +951,28 @@ Here are some screenshots: :height: 300 :alt: screenshot3 +Glosbe Translator +================= + +.. code-block:: python + + from deep_translator import GlosbeTranslator + + translated = GlosbeTranslator(source='en', target='es').translate("hello") + print(translated) # Should print the translation of "hello" in Spanish + + +Wikimedia Translator +===================== + +.. code-block:: python + + from deep_translator import WikimediaTranslator + + translated = WikimediaTranslator(source='en', target='fr').translate("hello") + print(translated) # Should print the translation of "hello" in French + + =========================== Website & Desktop app ===========================