import logging

logger = logging.getLogger("lang-detector")


class LangDetector:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    def detect(self, text: str) -> dict:
        """
        Detectează limba unui text.
        Folosește langdetect cu fallback la 'en'.
        """
        text = text.strip()
        if not text or len(text) < 3:
            return {"language": "en", "confidence": 0.0}

        try:
            from langdetect import detect_langs
            results = detect_langs(text)
            if results:
                best = results[0]
                return {
                    "language":   best.lang,
                    "confidence": round(best.prob, 4),
                }
        except Exception as e:
            logger.warning(f"langdetect failed: {e}")

        # Fallback
        return {"language": "en", "confidence": 0.0}
