import nltk
from nltk import wordpunct_tokenize
from nltk import download
from collections import Counter

def detect_language(text):
    words = wordpunct_tokenize(text.lower())
    
    # Définir des ensembles de lettres fréquentes dans différentes langues
    letter_sets = {
        'en': set('etaoinshrdlcumwfgypbvkjxqz'),
        'fr': set('esaitnruoldcmpévqfbghàxjèyêëçâîôûùü'),
        'es': set('eaosrnidluctmpévqfbghñyáíóúü'),
        'de': set('ensriahdtulcömgebpvfküzäßyjqx')
    }
    
    # Compter la fréquence des lettres dans le texte
    letter_count = Counter(''.join(words))
    
    # Calculer les ratios de lettres pour chaque langue
    lang_ratios = {}
    for lang, lang_set in letter_sets.items():
        common_letters = lang_set.intersection(letter_count.keys())
        lang_ratios[lang] = sum(letter_count[letter] for letter in common_letters)
    
    # Détecter la langue avec la fréquence des lettres
    detected_language = max(lang_ratios, key=lang_ratios.get)
    
    return detected_language

# Exemple de texte dans différentes langues
texte_en = "Hello, how are you today?"  # Anglais
texte_fr = "Bonjour, comment ça va aujourd'hui?"  # Français
texte_es = "Hola, ¿cómo estás hoy?"  # Espagnol
texte_de = "Hallo, wie geht es Ihnen heute?"  # Allemand

# Détecter la langue pour chaque texte
langue_en = detect_language(texte_en)
langue_fr = detect_language(texte_fr)
langue_es = detect_language(texte_es)
langue_de = detect_language(texte_de)

print(f"Langue détectée pour le texte en anglais : {langue_en}")
print(f"Langue détectée pour le texte en français : {langue_fr}")
print(f"Langue détectée pour le texte en espagnol : {langue_es}")
print(f"Langue détectée pour le texte en allemand : {langue_de}")
