diff --git a/components/MiniMaxVoiceWidgetV2.tsx b/components/MiniMaxVoiceWidgetV2.tsx index aba2a42..9296c1a 100644 --- a/components/MiniMaxVoiceWidgetV2.tsx +++ b/components/MiniMaxVoiceWidgetV2.tsx @@ -131,18 +131,30 @@ export default function MiniMaxVoiceWidget({ setMessages(prev => [...prev, { role: "user", content: userText }]); setIsSpeaking(true); - // Detect language - const spanishWords = ["hola", "gracias", "por favor", "quiero", "necesito", "reserva", "precio", "dónde", "cuándo", "cómo", "cuánto", "tengo", "quiero", "busco", "necesito"]; - const englishWords = ["hello", "thanks", "please", "want", "need", "book", "price", "where", "how", "much", "have", "looking"]; - - const isSpanish = spanishWords.some(w => userText.toLowerCase().includes(w)); - const isEnglish = englishWords.some(w => userText.toLowerCase().includes(w)); + // Detect language - improved logic + // If user writes ANY English word, switch to English + const spanishPatterns = /^(hola|gracias|por| favor|quiero|necesito|reserva|precio|dónde|cuándo|cómo|cuánto|tengo|busco|qué|es|son|hay|me|puedo)\s/i; + const englishPatterns = /^(hello|thanks|please|want|need|book|price|where|how|much|have|can|i|my|your|the|a|an|is|are|do|does|what|who|when|where|why|how)\s/i; let detectedLang: Lang = language; - if (isSpanish && !isEnglish) detectedLang = "es"; - else if (isEnglish && !isSpanish) detectedLang = "en"; - else if (isSpanish && isEnglish && language === "es") detectedLang = "es"; + // Check if it's clearly English (more inclusive) + const isEnglish = englishPatterns.test(userText.toLowerCase()); + const isSpanish = spanishPatterns.test(userText.toLowerCase()); + + // If user writes in English (more than 50% English letters or explicit English words) + if (!isSpanish && (isEnglish || /[a-z]{3,}/i.test(userText))) { + // More English characters or explicit English = English + const englishChars = (userText.match(/[a-zA-Z]/g) || []).length; + const spanishChars = (userText.match(/[áéíóúñü]/gi) || []).length; + if (englishChars > spanishChars * 2 || isEnglish) { + detectedLang = "en"; + } + } else if (isSpanish) { + detectedLang = "es"; + } + + // Update language if detected differently if (detectedLang !== language) { setLanguage(detectedLang); } @@ -231,9 +243,13 @@ export default function MiniMaxVoiceWidget({ 🤖 Asistente SiteMente - - {language === "es" ? "ES" : "EN"} - + {/* Messages */}