Skip to content

Commit 280c26a

Browse files
authored
py-trans, pypi release
1 parent f481e93 commit 280c26a

File tree

3 files changed

+96
-1
lines changed

3 files changed

+96
-1
lines changed

py_trans/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright (c) 2021 - Itz-fork
2+
# Project: py_trans
3+
4+
from .translator import PyTranslator
5+
6+
__version__ = "v0.2"

py_trans/translator.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Project: py-trans
2+
# Author: itz-fork
3+
import requests
4+
5+
class PyTranslator:
6+
"""
7+
PyTranslator Class
8+
9+
Note:
10+
Before Trying to Translate Create an instance of this with provider (Default provider is google)
11+
12+
Providers:
13+
google - Google Translate
14+
bing - Bing Translate
15+
translate.com - translate.com Translate
16+
17+
Argument(s):
18+
provider - Provider of Translator. (Must be a supported provider)
19+
20+
Example(s):
21+
pytranslator = PyTranslator(provider="google")
22+
"""
23+
def __init__(self, provider="google"):
24+
self.providers = ["google", "libre", "translate.com"]
25+
if provider in self.providers:
26+
self.provider = provider
27+
else:
28+
self.provider = "google"
29+
# Headers
30+
self.gheader = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
31+
self.lheader = {"Origin": "https://libretranslate.com", "Host": "libretranslate.com", "Referer": "https://libretranslate.com/"}
32+
33+
def translate(self, text, dest_lang="en"):
34+
"""
35+
Translator Function
36+
37+
Argument(s):
38+
text - Source Text (Text that need to be translated)
39+
dest_lang - Destination Language
40+
41+
Example(s):
42+
pytranslator.translate(text="Hi, How are you?", dest_lang="si")
43+
"""
44+
if self.provider == "google":
45+
return self.google_translate(text, dest_lang)
46+
elif self.provider == "libre":
47+
return self.libre_translate(text, dest_lang)
48+
elif self.provider == "translate.com":
49+
return self.translate_com(text, dest_lang)
50+
else:
51+
return
52+
53+
# Google Translate
54+
def google_translate(self, text, dest_lang):
55+
r_url = f"https://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=auto&tl={dest_lang}&q={text}"
56+
try:
57+
request_resp = requests.get(r_url, headers=self.gheader).json()
58+
translation = request_resp['sentences'][0]['trans']
59+
origin_text = request_resp['sentences'][0]['orig']
60+
origin_lang = request_resp['src']
61+
tr_dict = {"status": "success", "engine": "google", "translation": translation, "dest_lang": dest_lang, "orgin_text": origin_text, "origin_lang": origin_lang}
62+
return tr_dict
63+
except Exception as e:
64+
return {"status": "failed", "error": e}
65+
66+
# LibreTranslate
67+
def _detect_lang(self, text):
68+
r_url = requests.post("https://libretranslate.com/detect", data={"q": str(text)}, headers=self.lheader).json()
69+
return r_url[0]["language"]
70+
71+
def libre_translate(self, text, dest_lang):
72+
try:
73+
origin_lang = self._detect_lang(text=text)
74+
r_url = requests.post("https://libretranslate.com/translate", data={"q": str(text), "source": origin_lang, "target": dest_lang}, headers=self.lheader).json()
75+
translation = r_url["translatedText"]
76+
tr_dict = {"status": "success", "engine": "libre", "translation": translation, "dest_lang": dest_lang, "orgin_text": str(text), "origin_lang": origin_lang}
77+
return tr_dict
78+
except Exception as e:
79+
return {"status": "failed", "error": e}
80+
81+
# Translate.com
82+
def translate_com(self, text, dest_lang):
83+
try:
84+
r_url = requests.post("https://www.translate.com/translator/ajax_translate", data={"text_to_translate": str(text), "translated_lang": dest_lang}).json()
85+
translation = r_url["translated_text"]
86+
tr_dict = {"status": "success", "engine": "translate.com", "translation": translation, "dest_lang": dest_lang, "orgin_text": str(text), "origin_lang": "Not supported by engine"}
87+
return tr_dict
88+
except Exception as e:
89+
return {"status": "failed", "error": e}

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
big_description = "py_trans is a free python library to translate text to different languages."
2424

2525

26-
setup(name='py_trans',
26+
setup(name='py-trans',
2727
version='0.2',
2828
description='Free python library to translate text to different languages.',
2929
url='https://github.com/Itz-fork/py-trans',

0 commit comments

Comments
 (0)