diff --git a/botdiscord/translate.py b/botdiscord/translate.py index 3aaab68..bee5fb0 100644 --- a/botdiscord/translate.py +++ b/botdiscord/translate.py @@ -129,10 +129,10 @@ async def translate_text(text: str, target_lang: str) -> str: translated_segments = await asyncio.gather(*tasks) result = "".join(translated_segments) - # Guardar en Redis por 24 horas - if result != text: + # No cachear mensajes de error + if result and result != text and "mantenimiento" not in result: cache_set(redis_key, result, ttl=86400) - return result + return result if result else text except Exception: return text diff --git a/panel/main.py b/panel/main.py index 7ca0b46..b492f91 100644 --- a/panel/main.py +++ b/panel/main.py @@ -51,20 +51,28 @@ def translate_filter(text, lang="es"): if not text: return "" cache_key = f"ui:{lang}:{text}" + _BAD = "mantenimiento" # Patron de respuesta de error a ignorar # 1. Redis (compartido y persistente entre reinicios) redis_val = cache_get(cache_key) - if redis_val: + if redis_val and _BAD not in redis_val: _ui_memory_cache[cache_key] = redis_val return redis_val + elif redis_val and _BAD in redis_val: + # Valor contaminado: eliminarlo del caché + from utils.cache import cache_delete + cache_delete(cache_key) # 2. RAM local (ultra rápida, temporal) - if cache_key in _ui_memory_cache: - return _ui_memory_cache[cache_key] + ram_val = _ui_memory_cache.get(cache_key) + if ram_val and _BAD not in ram_val: + return ram_val + elif cache_key in _ui_memory_cache: + del _ui_memory_cache[cache_key] # 3. Base de datos MySQL cached = get_ui_translation(text, lang) - if cached: + if cached and _BAD not in cached: _ui_memory_cache[cache_key] = cached cache_set(cache_key, cached, ttl=604800) # 7 días return cached @@ -73,12 +81,13 @@ def translate_filter(text, lang="es"): from botdiscord.translate import translate_text_sync translated = translate_text_sync(text, lang) - if translated and translated != text: + if translated and translated != text and _BAD not in translated: save_ui_translation(text, lang, translated) _ui_memory_cache[cache_key] = translated cache_set(cache_key, translated, ttl=604800) # 7 días + return translated - return translated + return text # Fallback: devolver el texto original si todo falla templates.env.filters["translate"] = translate_filter