| class Language(): |
| def __init__(self, code, name): |
| self.code = code |
| self.name = name |
|
|
| def __str__(self): |
| return "Language(code={}, name={})".format(self.code, self.name) |
|
|
| LANGUAGES = [ |
| Language('en', 'English'), |
| Language('zh', 'Chinese'), |
| Language('de', 'German'), |
| Language('es', 'Spanish'), |
| Language('ru', 'Russian'), |
| Language('ko', 'Korean'), |
| Language('fr', 'French'), |
| Language('ja', 'Japanese'), |
| Language('pt', 'Portuguese'), |
| Language('tr', 'Turkish'), |
| Language('pl', 'Polish'), |
| Language('ca', 'Catalan'), |
| Language('nl', 'Dutch'), |
| Language('ar', 'Arabic'), |
| Language('sv', 'Swedish'), |
| Language('it', 'Italian'), |
| Language('id', 'Indonesian'), |
| Language('hi', 'Hindi'), |
| Language('fi', 'Finnish'), |
| Language('vi', 'Vietnamese'), |
| Language('he', 'Hebrew'), |
| Language('uk', 'Ukrainian'), |
| Language('el', 'Greek'), |
| Language('ms', 'Malay'), |
| Language('cs', 'Czech'), |
| Language('ro', 'Romanian'), |
| Language('da', 'Danish'), |
| Language('hu', 'Hungarian'), |
| Language('ta', 'Tamil'), |
| Language('no', 'Norwegian'), |
| Language('th', 'Thai'), |
| Language('ur', 'Urdu'), |
| Language('hr', 'Croatian'), |
| Language('bg', 'Bulgarian'), |
| Language('lt', 'Lithuanian'), |
| Language('la', 'Latin'), |
| Language('mi', 'Maori'), |
| Language('ml', 'Malayalam'), |
| Language('cy', 'Welsh'), |
| Language('sk', 'Slovak'), |
| Language('te', 'Telugu'), |
| Language('fa', 'Persian'), |
| Language('lv', 'Latvian'), |
| Language('bn', 'Bengali'), |
| Language('sr', 'Serbian'), |
| Language('az', 'Azerbaijani'), |
| Language('sl', 'Slovenian'), |
| Language('kn', 'Kannada'), |
| Language('et', 'Estonian'), |
| Language('mk', 'Macedonian'), |
| Language('br', 'Breton'), |
| Language('eu', 'Basque'), |
| Language('is', 'Icelandic'), |
| Language('hy', 'Armenian'), |
| Language('ne', 'Nepali'), |
| Language('mn', 'Mongolian'), |
| Language('bs', 'Bosnian'), |
| Language('kk', 'Kazakh'), |
| Language('sq', 'Albanian'), |
| Language('sw', 'Swahili'), |
| Language('gl', 'Galician'), |
| Language('mr', 'Marathi'), |
| Language('pa', 'Punjabi'), |
| Language('si', 'Sinhala'), |
| Language('km', 'Khmer'), |
| Language('sn', 'Shona'), |
| Language('yo', 'Yoruba'), |
| Language('so', 'Somali'), |
| Language('af', 'Afrikaans'), |
| Language('oc', 'Occitan'), |
| Language('ka', 'Georgian'), |
| Language('be', 'Belarusian'), |
| Language('tg', 'Tajik'), |
| Language('sd', 'Sindhi'), |
| Language('gu', 'Gujarati'), |
| Language('am', 'Amharic'), |
| Language('yi', 'Yiddish'), |
| Language('lo', 'Lao'), |
| Language('uz', 'Uzbek'), |
| Language('fo', 'Faroese'), |
| Language('ht', 'Haitian creole'), |
| Language('ps', 'Pashto'), |
| Language('tk', 'Turkmen'), |
| Language('nn', 'Nynorsk'), |
| Language('mt', 'Maltese'), |
| Language('sa', 'Sanskrit'), |
| Language('lb', 'Luxembourgish'), |
| Language('my', 'Myanmar'), |
| Language('bo', 'Tibetan'), |
| Language('tl', 'Tagalog'), |
| Language('mg', 'Malagasy'), |
| Language('as', 'Assamese'), |
| Language('tt', 'Tatar'), |
| Language('haw', 'Hawaiian'), |
| Language('ln', 'Lingala'), |
| Language('ha', 'Hausa'), |
| Language('ba', 'Bashkir'), |
| Language('jw', 'Javanese'), |
| Language('su', 'Sundanese') |
| ] |
|
|
| _TO_LANGUAGE_CODE = { |
| **{language.code: language for language in LANGUAGES}, |
| "burmese": "my", |
| "valencian": "ca", |
| "flemish": "nl", |
| "haitian": "ht", |
| "letzeburgesch": "lb", |
| "pushto": "ps", |
| "panjabi": "pa", |
| "moldavian": "ro", |
| "moldovan": "ro", |
| "sinhalese": "si", |
| "castilian": "es", |
| } |
| |
| _FROM_LANGUAGE_NAME = { |
| **{language.name.lower(): language for language in LANGUAGES} |
| } |
|
|
| def get_language_from_code(language_code, default=None) -> Language: |
| """Return the language name from the language code.""" |
| return _TO_LANGUAGE_CODE.get(language_code, default) |
|
|
| def get_language_from_name(language, default=None) -> Language: |
| """Return the language code from the language name.""" |
| return _FROM_LANGUAGE_NAME.get(language.lower() if language else None, default) |
|
|
| def get_language_names(): |
| """Return a list of language names.""" |
| return [language.name for language in LANGUAGES] |
|
|
| if __name__ == "__main__": |
| |
| print(get_language_from_code('en')) |
| print(get_language_from_name('English')) |
| print(get_language_names()) |