atlan-collect / translator / translate_logic / translate.py
translate.py
Raw
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