-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtranslator.py
More file actions
97 lines (86 loc) · 3 KB
/
translator.py
File metadata and controls
97 lines (86 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"""Google Translate API wrapper with smart language detection."""
from googletrans import Translator
class TranslationService:
"""Handles translation requests using Google Translate."""
def __init__(self, primary_language: str = 'tr'):
self.translator = Translator()
self.primary_language = primary_language
def translate(self, text: str) -> dict:
"""
Translate text with smart language detection.
- If source is primary_language → translate to English
- If source is NOT primary_language → translate to primary_language
Returns:
dict with translated text and metadata
"""
if not text or not text.strip():
return {
'translated': '',
'source_lang': '',
'target_lang': '',
'detected_lang': '',
'success': False,
'error': 'Empty text'
}
try:
# First, detect the language
detected = self.translator.detect(text)
detected_lang = detected.lang if detected else 'en'
# Smart target selection
if detected_lang == self.primary_language:
target_lang = 'en'
else:
target_lang = self.primary_language
# Perform translation
result = self.translator.translate(
text,
src=detected_lang,
dest=target_lang
)
return {
'translated': result.text,
'source_lang': detected_lang,
'target_lang': target_lang,
'detected_lang': detected_lang,
'success': True,
'error': None
}
except Exception as e:
return {
'translated': '',
'source_lang': '',
'target_lang': '',
'detected_lang': '',
'success': False,
'error': str(e)
}
def get_language_name(self, code: str) -> str:
"""Convert language code to Turkish name."""
languages = {
'en': 'İngilizce',
'tr': 'Türkçe',
'de': 'Almanca',
'fr': 'Fransızca',
'es': 'İspanyolca',
'it': 'İtalyanca',
'ru': 'Rusça',
'ar': 'Arapça',
'zh-cn': 'Çince',
'zh-tw': 'Çince',
'ja': 'Japonca',
'ko': 'Korece',
'pt': 'Portekizce',
'nl': 'Hollandaca',
'pl': 'Lehçe',
'sv': 'İsveççe',
'da': 'Danca',
'fi': 'Fince',
'no': 'Norveççe',
'el': 'Yunanca',
'cs': 'Çekçe',
'hu': 'Macarca',
'ro': 'Rumence',
'uk': 'Ukraynaca',
'ms': 'Malayca',
}
return languages.get(code, code.upper())