#coding: utf-8 from typing import Optional from typing import Union from typing import Dict from typing import Any from typing import List def convert_language_name_to_iso6391(language_data: Union[str, Dict[str, str]]) -> str: """ Convertit un nom de langue en son code ISO 639-1. Args: language_data (Union[str, Dict[str, str]]): Le nom de la langue ou un dictionnaire contenant le nom de la langue. Returns: str: Le code ISO 639-1 pour la langue donnée, ou 'en' si non trouvé. """ # Dictionnaire associant les noms de langues aux codes ISO 639-1 language_to_iso: Dict[str, str] = { "Afrikaans": "af", "Arabic": "ar", "Armenian": "hy", "Azerbaijani": "az", "Belarusian": "be", "Bosnian": "bs", "Bulgarian": "bg", "Catalan": "ca", "Chinese": "zh", "Croatian": "hr", "Czech": "cs", "Danish": "da", "Dutch": "nl", "English": "en", "Estonian": "et", "Finnish": "fi", "French": "fr", "Galician": "gl", "German": "de", "Greek": "el", "Hebrew": "he", "Hindi": "hi", "Hungarian": "hu", "Icelandic": "is", "Indonesian": "id", "Italian": "it", "Japanese": "ja", "Kannada": "kn", "Kazakh": "kk", "Korean": "ko", "Latvian": "lv", "Lithuanian": "lt", "Macedonian": "mk", "Malay": "ms", "Marathi": "mr", "Maori": "mi", "Nepali": "ne", "Norwegian": "no", "Persian": "fa", "Polish": "pl", "Portuguese": "pt", "Romanian": "ro", "Russian": "ru", "Serbian": "sr", "Slovak": "sk", "Slovenian": "sl", "Spanish": "es", "Swahili": "sw", "Swedish": "sv", "Tagalog": "tl", "Tamil": "ta", "Thai": "th", "Turkish": "tr", "Ukrainian": "uk", "Urdu": "ur", "Vietnamese": "vi", "Welsh": "cy" } default_ = "en" # Vérifier si language_data est un dictionnaire if isinstance(language_data, dict): language_name = language_data.get('language', '') else: language_name = language_data try: # Retourner le code ISO 639-1 correspondant au nom de la langue return language_to_iso[language_name] except KeyError: if f"{language_name}" in language_to_iso.values(): return language_name else: # Gérer spécifiquement l'exception KeyError print(f"Langue non trouvée : {language_name}") return default_ def convert_iso6391_to_language_name(language_code: str, filter_mode=True) -> str: """ Convertit un code ISO 639-1 en nom de langue. Args: language_code (str): Le code ISO 639-1 de la langue. Returns: str: Le nom de la langue correspondant au code ISO 639-1, ou 'English' si non trouvé. """ # Dictionnaire associant les codes ISO 639-1 aux noms de langues iso_to_language: Dict[str, str] = { "af": "Afrikaans", "ar": "Arabic", "hy": "Armenian", "az": "Azerbaijani", "be": "Belarusian", "bs": "Bosnian", "bg": "Bulgarian", "ca": "Catalan", "zh": "Chinese", "hr": "Croatian", "cs": "Czech", "da": "Danish", "nl": "Dutch", "en": "English", "et": "Estonian", "fi": "Finnish", "fr": "French", "gl": "Galician", "de": "German", "el": "Greek", "he": "Hebrew", "hi": "Hindi", "hu": "Hungarian", "is": "Icelandic", "id": "Indonesian", "it": "Italian", "ja": "Japanese", "kn": "Kannada", "kk": "Kazakh", "ko": "Korean", "lv": "Latvian", "lt": "Lithuanian", "mk": "Macedonian", "ms": "Malay", "mr": "Marathi", "mi": "Maori", "ne": "Nepali", "no": "Norwegian", "fa": "Persian", "pl": "Polish", "pt": "Portuguese", "ro": "Romanian", "ru": "Russian", "sr": "Serbian", "sk": "Slovak", "sl": "Slovenian", "es": "Spanish", "sw": "Swahili", "sv": "Swedish", "tl": "Tagalog", "ta": "Tamil", "th": "Thai", "tr": "Turkish", "uk": "Ukrainian", "ur": "Urdu", "vi": "Vietnamese", "cy": "Welsh" } default_ = "English" try: # Retourner le nom de la langue correspondant au code ISO 639-1 return iso_to_language[language_code] except KeyError: if f"{language_code}" in iso_to_language.values(): return language_code else: # Gérer spécifiquement l'exception KeyError print(f"Code de langue non trouvé : {language_code}") return default_