import re SWAHILI_HINTS = { "habari", "naumwa", "nina", "nahisi", "maumivu", "maumiv", "kifua", "kichwa", "tumbo", "mgongo", "mgogo", "kiuno", "kuhara", "kikohozi", "mafua", "homa", "dawa", "mtishamba", "mitishamba", "natakiwa", "nitumie", "kunywa", "kupumua", "mjamzito", "kunyonyesha", "naskia", "nasikia", "najiskia", "najisikia", "kinaniuma", "sijambo", "hujambo", "zimeanza", "imeanza", "zimeaza", "imeaza", "meanza", "siku", "wiki", "mwezi", "miaka", "makali", "kali", "kati", "mwanaume", "mwanamke", "jinsia", "ndiyo", "hapana", "sina", "situmii", "natumia", "ugonjwa", "sugu", "presha", "kisukari", "pumu", "figo", "ini", "allergy", "ujauzito", "nane", } ENGLISH_HINTS = { "hello", "hi", "hey", "good", "morning", "afternoon", "evening", "i", "have", "feel", "pain", "cough", "flu", "fever", "chest", "stomach", "diarrhea", "diarrhoea", "medicine", "herb", "remedy", "pregnant", "breastfeeding", } def tokenize(text: str) -> set[str]: return set(re.findall(r"[a-zA-Z']+", text.lower())) def language_scores(text: str) -> tuple[int, int]: lines = [line.strip() for line in text.splitlines() if line.strip()] latest_text = lines[-1] if lines else text tokens = tokenize(latest_text) return len(tokens & SWAHILI_HINTS), len(tokens & ENGLISH_HINTS) def detect_language(text: str) -> str: sw_score, en_score = language_scores(text) if sw_score >= en_score and sw_score > 0: return "Swahili" return "English" def is_swahili(text: str) -> bool: return detect_language(text) == "Swahili"