import pika, json from deep_translator import GoogleTranslator import redis redis_client = redis.StrictRedis(host='host.minikube.internal', port=7779, db=0) country_region_language_mapping = { ("United States", "East"): "english", ("United States", "West"): "english", ("France", "Paris"): "french", ("India", "Andhra Pradesh"): "telugu", ("India", "Arunachal Pradesh"): "english", ("India", "Assam"): "assamese", ("India", "Bihar"): "hindi", ("India", "Chhattisgarh"): "hindi", ("India", "Goa"): "konkani", ("India", "Gujarat"): "gujarati", ("India", "Haryana"): "hindi", ("India", "Himachal Pradesh"): "hindi", ("India", "Jharkhand"): "hindi", ("India", "Karnataka"): "kannada", ("India", "Kerala"): "malayalam", ("India", "Madhya Pradesh"): "hindi", ("India", "Maharashtra"): "marathi", ("India", "Manipur"): "manipuri", ("India", "Meghalaya"): "english", ("India", "Mizoram"): "mizo", ("India", "Nagaland"): "english", ("India", "Odisha"): "odia", ("India", "Punjab"): "punjabi", ("India", "Rajasthan"): "hindi", ("India", "Sikkim"): "nepali", ("India", "Tamil Nadu"): "tamil", ("India", "Telangana"): "telugu", ("India", "Tripura"): "bengali", ("India", "Uttar Pradesh"): "hindi", ("India", "Uttarakhand"): "hindi", ("India", "West Bengal"): "bengali", } def get_source(country, region): return country_region_language_mapping.get((country, region), "Unknown") def translate_text(message, channel): message = json.loads(message) text = message["text"] country = message["country"] region = message["region"] value = redis_client.get(text) if value: value = value.decode('utf-8') return value, None else: lang = get_source(country, region) try: translated_text = GoogleTranslator(source=lang, target='en').translate(text) err = None return translated_text, err except Exception as err: err = err print(err) return "error", err