my-gradio-app / examples /multilingual_example.py
Nguyen Trong Lap
Recreate history without binary blobs
eeb0f9c
"""
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")