Translator / utils /translator.py
nihun's picture
Upload 19 files
85c18a5 verified
"""
Translation Module
==================
Handles text translation between English and Hindi using deep-translator.
Functions:
- detect_language: Auto-detect if text is English or Hindi
- translate_text: Translate text between languages
"""
from deep_translator import GoogleTranslator
from typing import Literal
def detect_language(text: str) -> Literal["en", "hi"]:
"""
Detect if the input text is English or Hindi.
Uses Unicode range detection for Devanagari script (Hindi).
Args:
text: Input text string to analyze
Returns:
'hi' if Hindi/Devanagari characters found, 'en' otherwise
Example:
>>> detect_language("Hello World")
'en'
>>> detect_language("नमस्ते")
'hi'
"""
# Check for Devanagari Unicode range (U+0900 to U+097F)
for char in text:
if '\u0900' <= char <= '\u097F':
return "hi"
return "en"
def translate_text(
text: str,
source_lang: Literal["auto", "en", "hi"],
target_lang: Literal["en", "hi"]
) -> str:
"""
Translate text from source language to target language.
Uses Google Translator via deep-translator library for accurate
translations between English and Hindi.
Args:
text: The text to translate
source_lang: Source language code ('auto', 'en', or 'hi')
target_lang: Target language code ('en' or 'hi')
Returns:
Translated text string
Raises:
ValueError: If text is empty
Example:
>>> translate_text("Hello", "en", "hi")
'नमस्ते'
>>> translate_text("नमस्ते", "auto", "en")
'Hello'
"""
# Validate input
if not text or not text.strip():
return ""
# Auto-detect source language if needed
if source_lang == "auto":
source_lang = detect_language(text)
# Skip translation if source and target are the same
if source_lang == target_lang:
return text
# Perform translation using Google Translator
translator = GoogleTranslator(source=source_lang, target=target_lang)
translated = translator.translate(text)
return translated