Spaces:
Sleeping
Sleeping
File size: 2,351 Bytes
85c18a5 |
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 |
"""
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 |