import tiktoken

def count_tokens(text, model="gpt-4o-mini"):
    encoding = tiktoken.encoding_for_model(model)
    return len(encoding.encode(text))



from langdetect import detect, DetectorFactory
from langdetect.lang_detect_exception import LangDetectException

# Optional: make detection deterministic
DetectorFactory.seed = 0


def detect_message_language(text: str) -> str:
    """
    Detect language of a given text.
    Returns ISO 639-1 language code (e.g. 'en', 'fa', 'de').
    """
    try:
        if not text or len(text.strip()) < 3:
            return "un"

        detected_lang = detect(text)
        
        # Convert Urdu to Persian/Farsi
        if detected_lang == 'ur':
            return 'fa'
        
        # Return 'un' if language is not fa, en, or turkey
        if detected_lang not in ['fa', 'en', 'tr']:
            return "un"
            
        return detected_lang

    except LangDetectException:
        return "un"


if __name__=='__main__':
    a = detect_message_language("a")   # 'en'
    print(a)
    a =detect_message_language("Hallo Welt")    # 'de'
    print(a)

    a = detect_message_language("امروز هوا خیلی خوب است و من برای پیاده روی بیرون رفتم")
    # معمولاً 'fa' برمی‌گرده
    print(a)


    a =detect_message_language("سلام دنیا")      # 'fa'

    print(a)
    a =detect_message_language("Bonjour")       # 'fr'
    print(a)


    a =detect_message_language("Merhaba dünya")   # 'tr'
    print(a)
    
    a =detect_message_language("Bugün hava çok güzel")  # 'tr'

    print(a)
