""" Multilingual Support Example Demonstrates automatic language detection and bilingual responses """ from i18n import Language, detect_language, t, get_multilingual_handler, Translations def test_language_detection(): """Test automatic language detection""" print("=" * 60) print("LANGUAGE DETECTION TEST") print("=" * 60) test_cases = [ ("Tôi muốn giảm cân", Language.VIETNAMESE), ("I want to lose weight", Language.ENGLISH), ("Bạn có thể giúp tôi không?", Language.VIETNAMESE), ("Can you help me?", Language.ENGLISH), ("Tôi bị đau đầu", Language.VIETNAMESE), ("I have a headache", Language.ENGLISH), ("Làm sao để tăng cơ?", Language.VIETNAMESE), ("How to build muscle?", Language.ENGLISH), ] for text, expected in test_cases: detected = detect_language(text) status = "✅" if detected == expected else "❌" print(f"{status} '{text}' → {detected.value} (expected: {expected.value})") def test_translations(): """Test translation system""" print("\n" + "=" * 60) print("TRANSLATION TEST") print("=" * 60) keys = [ 'greeting', 'ask_age', 'ask_weight', 'bmi_normal', 'thank_you_feedback', 'error_occurred' ] print("\n🇻🇳 Vietnamese:") for key in keys: text = t(key, Language.VIETNAMESE) print(f" {key}: {text}") print("\n🇬🇧 English:") for key in keys: text = t(key, Language.ENGLISH) print(f" {key}: {text}") def test_agent_prompts(): """Test agent system prompts in both languages""" print("\n" + "=" * 60) print("AGENT PROMPTS TEST") print("=" * 60) agents = ['nutrition', 'exercise', 'symptom', 'mental_health'] for agent in agents: print(f"\n📋 {agent.upper()} Agent:") print("\n🇻🇳 Vietnamese:") prompt_vi = Translations.get_agent_prompt(agent, Language.VIETNAMESE) print(f" {prompt_vi[:100]}...") print("\n🇬🇧 English:") prompt_en = Translations.get_agent_prompt(agent, Language.ENGLISH) print(f" {prompt_en[:100]}...") def test_multilingual_handler(): """Test multilingual handler""" print("\n" + "=" * 60) print("MULTILINGUAL HANDLER TEST") print("=" * 60) handler = get_multilingual_handler() # Simulate users with different languages print("\n👤 User 1 (Vietnamese):") lang1 = handler.detect_and_set_language("user1", "Tôi muốn giảm cân") print(f" Detected: {lang1.value}") print(f" Greeting: {handler.translate_message('greeting', lang1)}") print("\n👤 User 2 (English):") lang2 = handler.detect_and_set_language("user2", "I want to lose weight") print(f" Detected: {lang2.value}") print(f" Greeting: {handler.translate_message('greeting', lang2)}") print("\n👤 User 3 (Vietnamese):") lang3 = handler.detect_and_set_language("user3", "Tôi bị đau đầu") print(f" Detected: {lang3.value}") print(f" Greeting: {handler.translate_message('greeting', lang3)}") # Get statistics print("\n📊 Language Statistics:") stats = handler.get_language_stats() print(f" Total users: {stats['total_users']}") print(f" Vietnamese: {stats['vietnamese_users']} ({stats['vietnamese_percentage']}%)") print(f" English: {stats['english_users']} ({stats['english_percentage']}%)") def test_conversation_flow(): """Test full conversation flow with language detection""" print("\n" + "=" * 60) print("CONVERSATION FLOW TEST") print("=" * 60) handler = get_multilingual_handler() # Vietnamese conversation print("\n🇻🇳 Vietnamese Conversation:") print("-" * 40) user_msg_vi = "Tôi muốn giảm cân" lang_vi = handler.detect_and_set_language("user_vi", user_msg_vi) print(f"User: {user_msg_vi}") print(f"Detected language: {lang_vi.value}") print(f"Bot: {handler.translate_message('greeting', lang_vi)}") print(f"Bot: {handler.translate_message('ask_age', lang_vi)}") # English conversation print("\n🇬🇧 English Conversation:") print("-" * 40) user_msg_en = "I want to lose weight" lang_en = handler.detect_and_set_language("user_en", user_msg_en) print(f"User: {user_msg_en}") print(f"Detected language: {lang_en.value}") print(f"Bot: {handler.translate_message('greeting', lang_en)}") print(f"Bot: {handler.translate_message('ask_age', lang_en)}") def test_mixed_language(): """Test handling of mixed language input""" print("\n" + "=" * 60) print("MIXED LANGUAGE TEST") print("=" * 60) handler = get_multilingual_handler() # User starts in Vietnamese print("\n👤 User starts in Vietnamese:") lang1 = handler.detect_and_set_language("user_mixed", "Tôi muốn giảm cân") print(f" Message: 'Tôi muốn giảm cân'") print(f" Detected: {lang1.value}") print(f" Response: {handler.translate_message('greeting', lang1)}") # User switches to English print("\n👤 User switches to English:") lang2 = handler.detect_and_set_language("user_mixed", "How many calories should I eat?") print(f" Message: 'How many calories should I eat?'") print(f" Detected: {lang2.value}") print(f" Response: {handler.translate_message('nutrition_advice', lang2)}") # User switches back to Vietnamese print("\n👤 User switches back to Vietnamese:") lang3 = handler.detect_and_set_language("user_mixed", "Cảm ơn bạn!") print(f" Message: 'Cảm ơn bạn!'") print(f" Detected: {lang3.value}") print(f" Response: {handler.translate_message('thank_you_feedback', lang3)}") def demo_real_world_usage(): """Demo real-world usage scenario""" print("\n" + "=" * 60) print("REAL-WORLD USAGE DEMO") print("=" * 60) handler = get_multilingual_handler() scenarios = [ { 'user_id': 'nguyen_van_a', 'messages': [ "Tôi 25 tuổi, 70kg, 175cm", "Tôi muốn giảm 5kg trong 2 tháng", "Tôi nên ăn bao nhiêu calo?" ] }, { 'user_id': 'john_smith', 'messages': [ "I'm 30 years old, 80kg, 180cm", "I want to build muscle", "What exercises should I do?" ] } ] for scenario in scenarios: user_id = scenario['user_id'] print(f"\n👤 User: {user_id}") print("-" * 40) for msg in scenario['messages']: lang = handler.detect_and_set_language(user_id, msg) print(f"\nUser ({lang.value}): {msg}") # Simulate bot response if "calo" in msg.lower() or "calories" in msg.lower(): response_key = 'nutrition_advice' elif "tập" in msg.lower() or "exercise" in msg.lower(): response_key = 'exercise_plan' else: response_key = 'greeting' response = handler.translate_message(response_key, lang) print(f"Bot ({lang.value}): {response}") if __name__ == '__main__': test_language_detection() test_translations() test_agent_prompts() test_multilingual_handler() test_conversation_flow() test_mixed_language() demo_real_world_usage() print("\n" + "=" * 60) print("✅ MULTILINGUAL SUPPORT DEMO COMPLETE!") print("=" * 60) print("\nKey Features:") print("✅ Automatic language detection (Vietnamese/English)") print("✅ Bilingual translations for all messages") print("✅ Language-specific agent prompts") print("✅ Seamless language switching") print("✅ User language preferences") print("✅ Language usage statistics")