File size: 4,395 Bytes
026b176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#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_