Spaces:
Build error
Build error
| import json | |
| import urllib.request | |
| from pageparse.config import settings | |
| INDIAN_LANGUAGES = { | |
| "English": "en", | |
| "Assamese": "as", | |
| "Bengali": "bn", | |
| "Bodo": "brx", | |
| "Dogri": "doi", | |
| "Gujarati": "gu", | |
| "Hindi": "hi", | |
| "Kannada": "kn", | |
| "Kashmiri": "ks", | |
| "Konkani": "kok", | |
| "Maithili": "mai", | |
| "Malayalam": "ml", | |
| "Manipuri": "mni", | |
| "Marathi": "mr", | |
| "Nepali": "ne", | |
| "Odia": "or", | |
| "Punjabi": "pa", | |
| "Sanskrit": "sa", | |
| "Santali": "sat", | |
| "Sindhi": "sd", | |
| "Tamil": "ta", | |
| "Telugu": "te", | |
| "Urdu": "ur", | |
| } | |
| def translate_via_ollama(text: str, target_lang: str) -> str: | |
| prompt = ( | |
| f"Translate the following text into {target_lang}. " | |
| "Return ONLY the direct translation. Do NOT add any notes, explanations, introductory text, " | |
| "or surrounding conversational text.\n\n" | |
| f"Text:\n{text}\n\n" | |
| "Translation:" | |
| ) | |
| payload = { | |
| "model": settings.slm_model, | |
| "prompt": prompt, | |
| "stream": False, | |
| "options": {"temperature": 0.1}, | |
| } | |
| url = f"{settings.ollama_url}/api/generate" | |
| data = json.dumps(payload).encode("utf-8") | |
| req = urllib.request.Request(url, data=data, headers={"Content-Type": "application/json"}) | |
| with urllib.request.urlopen(req, timeout=30) as response: | |
| res = json.loads(response.read().decode("utf-8")) | |
| return res.get("response", "").strip() | |
| def translate_text(text: str, target_lang: str, source_lang: str = "auto") -> str: | |
| if not text or not text.strip(): | |
| return text | |
| if not all(ord(c) < 128 for c in text): | |
| return text | |
| target_lang_code = INDIAN_LANGUAGES.get(target_lang, "en") | |
| if target_lang.lower() == "english": | |
| return text | |
| try: | |
| return translate_via_ollama(text, target_lang) | |
| except Exception as e: | |
| print(f"Ollama translation failed: {e}") | |
| if target_lang_code != "en": | |
| return f"[Offline Translation to {target_lang}]: {text}" | |
| return text | |