"""
This is a general constants file in which we
want to keep different constants in a general
context so we can use these ones to pass them
to any other library we create in order to
obtain it corresponding value.

For example, we have a Language constant in
which we store the different languages 
available in the world. But, of course, Google
will treat those languages in one way and 
other libraries will do it different. We, when
creating our own libraries, will create a 
method that allows us passing this general
constant to obtain its corresponding of that
specific library. Why? Because if we have a
frontend that interacts with 3 different 
libraries, we cannot let the user choose 
between 3 different type of language constants,
we need only one and then it is turned into
its specific value.
"""
from yta_general_utils.programming.enum import YTAEnum as Enum


class Language(Enum):
    """
    All the languages of the world in a general
    context. Use this enum class to convert it
    to your library-specific language.

    This is based on the ISO-639 language code
    standard: https://pypi.org/project/iso639-lang/

    Maybe I should import the library and let it
    be used like 'Lang("es")' to autodetect it and
    transform to our Enum values (?).
    """

    ABKHAZIAN = 'ab'
    AFAR = 'aa'
    AFRIKAANS = 'af'
    AKAN = 'ak'
    ALBANIAN = 'sq'
    AMHARIC = 'am'
    ARABIC = 'ar'
    ARAGONESE = 'an'
    ARMENIAN = 'hy'
    ASSAMESE = 'as'
    AVARIC = 'av'
    AVESTAN = 'ae'
    AYMARA = 'ay'
    AZERBAIJANI = 'az'
    BAMBARA = 'bm'
    BASHKIR = 'ba'
    BASQUE = 'eu'
    BELARUSIAN = 'be'
    BENGALI = 'bn'
    BISLAMA = 'bi'
    BOSNIAN = 'bs'
    BRETON = 'br'
    BULGARIAN = 'bg'
    BURMESE = 'my'
    CATALAN = 'ca'
    CHAMORRO = 'ch'
    CHECHEN = 'ce'
    CHICHEWA = 'ny'
    CHINESE = 'zh'
    CHINESE_TRADITIONAL = 'zh-Hans'
    # TODO: I think there are more languages like
    # this missing
    CHURCH_SLAVONIC = 'cu'
    CHUVASH = 'cv'
    CORNISH = 'kw'
    CORSICAN = 'co'
    CREE = 'cr'
    CROATIAN = 'hr'
    CZECH = 'cs'
    DANISH = 'da'
    DIVEHI = 'dv'
    DUTCH = 'nl'
    DZONGKHA = 'dz'
    ENGLISH = 'en'
    ESPERANTO = 'eo'
    ESTONIAN = 'et'
    EWE = 'ee'
    FAROESE = 'fo'
    FIJIAN = 'fj'
    FINNISH = 'fi'
    FRENCH = 'fr'
    WESTERN_FRISIAN = 'fy'
    FULAH = 'ff'
    GAELIC = 'gd'
    GALICIAN = 'gl'
    GANDA = 'lg'
    GEORGIAN = 'ka'
    GERMAN = 'de'
    GREEK = 'el'
    KALAALLISUT = 'kl'
    GUARANI = 'gn'
    GUJARATI = 'gu'
    HAITIAN = 'ht'
    HAUSA = 'ha'
    HEBREW = 'he'
    HERERO = 'hz'
    HINDI = 'hi'
    HIRI_MOTU = 'ho'
    HUNGARIAN = 'hu'
    ICELANDIC = 'is'
    IDO = 'io'
    IGBO = 'ig'
    INDONESIAN = 'id'
    INTERLINGUA = 'ia'
    INTERLINGUE = 'ie'
    INUKTITUT = 'iu'
    INUPIAQ = 'ik'
    IRISH = 'ga'
    ITALIAN = 'it'
    JAPANESE = 'ja'
    JAVANESE = 'jv'
    KANNADA = 'kn'
    KANURI = 'kr'
    KASHMIRI = 'ks'
    KAZAKH = 'kk'
    CENTRAL_KHMER = 'km'
    KIKUYU = 'ki'
    KINYARWANDA = 'rw'
    KYRGYZ = 'ky'
    KOMI = 'kv'
    KONGO = 'kg'
    KOREAN = 'ko'
    KUANYAMA = 'kj'
    KURDISH = 'ku'
    LAO = 'lo'
    LATIN = 'la'
    LATVIAN = 'lv'
    LIMBURGAN = 'li'
    LINGALA = 'ln'
    LITHUANIAN = 'lt'
    LUBA_KATANGA = 'lu'
    LUXEMBOURGISH = 'lb'
    MACEDONIAN = 'mk'
    MALAGASY = 'mg'
    MALAY = 'ms'
    MALAYALAM = 'ml'
    MALTESE = 'mt'
    MANX = 'gv'
    MAORI = 'mi'
    MARATHI = 'mr'
    MARSHALLESE = 'mh'
    MONGOLIAN = 'mn'
    NAURU = 'na'
    NAVAJO = 'nv'
    NORTH_NDEBELE = 'nd'
    SOUTH_NDEBELE = 'nr'
    NDONGA = 'ng'
    NEPALI = 'ne'
    NORWEGIAN = 'no'
    NORWEGIAN_BOKMAL = 'nb'
    NORWEGIAN_NYNORSK = 'nn'
    OCCITAN = 'oc'
    OJIBWA = 'oj'
    ORIYA = 'or'
    OROMO = 'om'
    OSSETIAN = 'os'
    PALI = 'pi'
    PASHTO = 'ps'
    PERSIAN = 'fa'
    POLISH = 'pl'
    PORTUGUESE = 'pt'
    PUNJABI = 'pa'
    QUECHUA = 'qu'
    ROMANIAN = 'ro'
    ROMANSH = 'rm'
    RUNDI = 'rn'
    RUSSIAN = 'ru'
    NORTHERN_SAMI = 'se'
    SAMOAN = 'sm'
    SANGO = 'sg'
    SANSKRIT = 'sa'
    SARDINIAN = 'sc'
    SERBIAN = 'sr'
    SHONA = 'sn'
    SINDHI = 'sd'
    SINHALA = 'si'
    SLOVAK = 'sk'
    SLOVENIAN = 'sl'
    SOMALI = 'so'
    SOUTHERN_SOTHO = 'st'
    SPANISH = 'es'
    SUNDANESE = 'su'
    SWAHILI = 'sw'
    SWATI = 'ss'
    SWEDISH = 'sv'
    TAGALOG = 'tl'
    TAHITIAN = 'ty'
    TAJIK = 'tg'
    TAMIL = 'ta'
    TATAR = 'tt'
    TELUGU = 'te'
    THAI = 'th'
    TIBETAN = 'bo'
    TIGRINYA = 'ti'
    TONGA = 'to'
    TSONGA = 'ts'
    TSWANA = 'tn'
    TURKISH = 'tr'
    TURKMEN = 'tk'
    TWI = 'tw'
    UIGHUR = 'ug'
    UKRAINIAN = 'uk'
    URDU = 'ur'
    UZBEK = 'uz'
    VENDA = 've'
    VIETNAMESE = 'vi'
    VOLAPUK = 'vo'
    WALLOON = 'wa'
    WELSH = 'cy'
    WOLOF = 'wo'
    XHOSA = 'xh'
    SICHUAN_YI = 'ii'
    YIDDISH = 'yi'
    YORUBA = 'yo'
    ZHUANG = 'za'
    ZULU = 'zu'
