demorrha / core /converter.py
rick
patch 1.2.12
026b176 unverified
raw
history blame
4.4 kB
#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_