Removed the crutch with the user's language

This commit is contained in:
Alex Root Junior 2017-06-01 22:53:29 +03:00
parent c03b836a8e
commit 93c61e9e0a
4 changed files with 13 additions and 753 deletions

View file

@ -63,6 +63,8 @@ class Deserializable:
def parent(self, value): def parent(self, value):
setattr(self, '_parent', value) setattr(self, '_parent', value)
for name, attr in self.__dict__.items(): for name, attr in self.__dict__.items():
if name.startswith('_'):
continue
if hasattr(attr, 'de_json'): if hasattr(attr, 'de_json'):
attr.parent = self attr.parent = self

View file

@ -1,5 +1,6 @@
import babel
from . import Deserializable from . import Deserializable
from ..utils.user_language import get_language
class User(Deserializable): class User(Deserializable):
@ -45,7 +46,9 @@ class User(Deserializable):
return self.full_name return self.full_name
@property @property
def language(self): def locale(self) -> babel.core.Locale or None:
if not self.language_code: if not self.language_code:
return None return None
return get_language(self.language_code) if not hasattr(self, '_locale'):
setattr(self, '_locale', babel.core.Locale.parse(self.language_code, sep='-'))
return getattr(self, '_locale')

View file

@ -1,746 +0,0 @@
class Language:
def __init__(self, language_code, territory=None, lang_type=None, title=None):
self.code = language_code
self.territory = territory
self.type = lang_type
self.title = title
def __str__(self):
s = '<Language "' + self.code + '"'
if self.title:
s += ' is "' + self.title + '"'
s += '>'
return s
LANGUAGES = (
Language(language_code='af', lang_type='af', title='Afrikaans'),
Language(language_code='af-NA', territory='NA', lang_type='af', title='Afrikaans'),
Language(language_code='af-ZA', territory='ZA', lang_type='af', title='Afrikaans'),
Language(language_code='agq', lang_type='agq'),
Language(language_code='agq-CM', territory='CM', lang_type='agq'),
Language(language_code='ak', lang_type='ak', title='Akan'),
Language(language_code='ak-GH', territory='GH', lang_type='ak', title='Akan'),
Language(language_code='am', lang_type='am', title='Amharic'),
Language(language_code='am-ET', territory='ET', lang_type='am', title='Amharic'),
Language(language_code='ar', lang_type='ar', title='Arabic'),
Language(language_code='ar-001', territory='001', lang_type='ar', title='Arabic'),
Language(language_code='ar-AE', territory='AE', lang_type='ar', title='Arabic'),
Language(language_code='ar-BH', territory='BH', lang_type='ar', title='Arabic'),
Language(language_code='ar-DJ', territory='DJ', lang_type='ar', title='Arabic'),
Language(language_code='ar-DZ', territory='DZ', lang_type='ar', title='Arabic'),
Language(language_code='ar-EG', territory='EG', lang_type='ar', title='Arabic'),
Language(language_code='ar-EH', territory='EH', lang_type='ar', title='Arabic'),
Language(language_code='ar-ER', territory='ER', lang_type='ar', title='Arabic'),
Language(language_code='ar-IL', territory='IL', lang_type='ar', title='Arabic'),
Language(language_code='ar-IQ', territory='IQ', lang_type='ar', title='Arabic'),
Language(language_code='ar-JO', territory='JO', lang_type='ar', title='Arabic'),
Language(language_code='ar-KM', territory='KM', lang_type='ar', title='Arabic'),
Language(language_code='ar-KW', territory='KW', lang_type='ar', title='Arabic'),
Language(language_code='ar-LB', territory='LB', lang_type='ar', title='Arabic'),
Language(language_code='ar-LY', territory='LY', lang_type='ar', title='Arabic'),
Language(language_code='ar-MA', territory='MA', lang_type='ar', title='Arabic'),
Language(language_code='ar-MR', territory='MR', lang_type='ar', title='Arabic'),
Language(language_code='ar-OM', territory='OM', lang_type='ar', title='Arabic'),
Language(language_code='ar-PS', territory='PS', lang_type='ar', title='Arabic'),
Language(language_code='ar-QA', territory='QA', lang_type='ar', title='Arabic'),
Language(language_code='ar-SA', territory='SA', lang_type='ar', title='Arabic'),
Language(language_code='ar-SD', territory='SD', lang_type='ar', title='Arabic'),
Language(language_code='ar-SO', territory='SO', lang_type='ar', title='Arabic'),
Language(language_code='ar-SS', territory='SS', lang_type='ar', title='Arabic'),
Language(language_code='ar-SY', territory='SY', lang_type='ar', title='Arabic'),
Language(language_code='ar-TD', territory='TD', lang_type='ar', title='Arabic'),
Language(language_code='ar-TN', territory='TN', lang_type='ar', title='Arabic'),
Language(language_code='ar-YE', territory='YE', lang_type='ar', title='Arabic'),
Language(language_code='as', lang_type='as', title='Assamese'),
Language(language_code='as-IN', territory='IN', lang_type='as', title='Assamese'),
Language(language_code='asa', lang_type='asa'),
Language(language_code='asa-TZ', territory='TZ', lang_type='asa'),
Language(language_code='ast', lang_type='ast'),
Language(language_code='ast-ES', territory='ES', lang_type='ast'),
Language(language_code='az', lang_type='az', title='Azerbaijani'),
Language(language_code='az-Cyrl', lang_type='az', title='Azerbaijani'),
Language(language_code='az-Cyrl-AZ', territory='AZ', lang_type='az', title='Azerbaijani'),
Language(language_code='az-Latn', lang_type='az', title='Azerbaijani'),
Language(language_code='az-Latn-AZ', territory='AZ', lang_type='az', title='Azerbaijani'),
Language(language_code='bas', lang_type='bas'),
Language(language_code='bas-CM', territory='CM', lang_type='bas'),
Language(language_code='be', lang_type='be', title='Belarusian'),
Language(language_code='be-BY', territory='BY', lang_type='be', title='Belarusian'),
Language(language_code='bem', lang_type='bem'),
Language(language_code='bem-ZM', territory='ZM', lang_type='bem'),
Language(language_code='bez', lang_type='bez'),
Language(language_code='bez-TZ', territory='TZ', lang_type='bez'),
Language(language_code='bg', lang_type='bg', title='Bulgarian'),
Language(language_code='bg-BG', territory='BG', lang_type='bg', title='Bulgarian'),
Language(language_code='bm', lang_type='bm', title='Bambara'),
Language(language_code='bm-ML', territory='ML', lang_type='bm', title='Bambara'),
Language(language_code='bn', lang_type='bn', title='Bengali'),
Language(language_code='bn-BD', territory='BD', lang_type='bn', title='Bengali'),
Language(language_code='bn-IN', territory='IN', lang_type='bn', title='Bengali'),
Language(language_code='bo', lang_type='bo', title='Tibetan'),
Language(language_code='bo-CN', territory='CN', lang_type='bo', title='Tibetan'),
Language(language_code='bo-IN', territory='IN', lang_type='bo', title='Tibetan'),
Language(language_code='br', lang_type='br', title='Breton'),
Language(language_code='br-FR', territory='FR', lang_type='br', title='Breton'),
Language(language_code='brx', lang_type='brx'),
Language(language_code='brx-IN', territory='IN', lang_type='brx'),
Language(language_code='bs', lang_type='bs', title='Bosnian'),
Language(language_code='bs-Cyrl', lang_type='bs', title='Bosnian'),
Language(language_code='bs-Cyrl-BA', territory='BA', lang_type='bs', title='Bosnian'),
Language(language_code='bs-Latn', lang_type='bs', title='Bosnian'),
Language(language_code='bs-Latn-BA', territory='BA', lang_type='bs', title='Bosnian'),
Language(language_code='ca', lang_type='ca', title='Catalan; Valencian'),
Language(language_code='ca-AD', territory='AD', lang_type='ca', title='Catalan; Valencian'),
Language(language_code='ca-ES', territory='ES', lang_type='ca', title='Catalan; Valencian'),
Language(language_code='ca-ES-VALENCIA', territory='ES', lang_type='ca', title='Catalan; Valencian'),
Language(language_code='ca-FR', territory='FR', lang_type='ca', title='Catalan; Valencian'),
Language(language_code='ca-IT', territory='IT', lang_type='ca', title='Catalan; Valencian'),
Language(language_code='ce', lang_type='ce', title='Chechen'),
Language(language_code='ce-RU', territory='RU', lang_type='ce', title='Chechen'),
Language(language_code='cgg', lang_type='cgg'),
Language(language_code='cgg-UG', territory='UG', lang_type='cgg'),
Language(language_code='chr', lang_type='chr'),
Language(language_code='chr-US', territory='US', lang_type='chr'),
Language(language_code='ckb', lang_type='ckb'),
Language(language_code='ckb-IQ', territory='IQ', lang_type='ckb'),
Language(language_code='ckb-IR', territory='IR', lang_type='ckb'),
Language(language_code='cs', lang_type='cs', title='Czech'),
Language(language_code='cs-CZ', territory='CZ', lang_type='cs', title='Czech'),
Language(language_code='cu', lang_type='cu',
title='Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic'),
Language(language_code='cu-RU', territory='RU', lang_type='cu',
title='Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic'),
Language(language_code='cy', lang_type='cy', title='Welsh'),
Language(language_code='cy-GB', territory='GB', lang_type='cy', title='Welsh'),
Language(language_code='da', lang_type='da', title='Danish'),
Language(language_code='da-DK', territory='DK', lang_type='da', title='Danish'),
Language(language_code='da-GL', territory='GL', lang_type='da', title='Danish'),
Language(language_code='dav', lang_type='dav'),
Language(language_code='dav-KE', territory='KE', lang_type='dav'),
Language(language_code='de', lang_type='de', title='German'),
Language(language_code='de-AT', territory='AT', lang_type='de', title='German'),
Language(language_code='de-BE', territory='BE', lang_type='de', title='German'),
Language(language_code='de-CH', territory='CH', lang_type='de', title='German'),
Language(language_code='de-DE', territory='DE', lang_type='de', title='German'),
Language(language_code='de-IT', territory='IT', lang_type='de', title='German'),
Language(language_code='de-LI', territory='LI', lang_type='de', title='German'),
Language(language_code='de-LU', territory='LU', lang_type='de', title='German'),
Language(language_code='dje', lang_type='dje'),
Language(language_code='dje-NE', territory='NE', lang_type='dje'),
Language(language_code='dsb', lang_type='dsb'),
Language(language_code='dsb-DE', territory='DE', lang_type='dsb'),
Language(language_code='dua', lang_type='dua'),
Language(language_code='dua-CM', territory='CM', lang_type='dua'),
Language(language_code='dyo', lang_type='dyo'),
Language(language_code='dyo-SN', territory='SN', lang_type='dyo'),
Language(language_code='dz', lang_type='dz', title='Dzongkha'),
Language(language_code='dz-BT', territory='BT', lang_type='dz', title='Dzongkha'),
Language(language_code='ebu', lang_type='ebu'),
Language(language_code='ebu-KE', territory='KE', lang_type='ebu'),
Language(language_code='ee', lang_type='ee', title='Ewe'),
Language(language_code='ee-GH', territory='GH', lang_type='ee', title='Ewe'),
Language(language_code='ee-TG', territory='TG', lang_type='ee', title='Ewe'),
Language(language_code='el', lang_type='el', title='Greek, Modern (1453-)'),
Language(language_code='el-CY', territory='CY', lang_type='el', title='Greek, Modern (1453-)'),
Language(language_code='el-GR', territory='GR', lang_type='el', title='Greek, Modern (1453-)'),
Language(language_code='en', lang_type='en', title='English'),
Language(language_code='en-001', territory='001', lang_type='en', title='English'),
Language(language_code='en-150', territory='150', lang_type='en', title='English'),
Language(language_code='en-AG', territory='AG', lang_type='en', title='English'),
Language(language_code='en-AI', territory='AI', lang_type='en', title='English'),
Language(language_code='en-AS', territory='AS', lang_type='en', title='English'),
Language(language_code='en-AT', territory='AT', lang_type='en', title='English'),
Language(language_code='en-AU', territory='AU', lang_type='en', title='English'),
Language(language_code='en-BB', territory='BB', lang_type='en', title='English'),
Language(language_code='en-BE', territory='BE', lang_type='en', title='English'),
Language(language_code='en-BI', territory='BI', lang_type='en', title='English'),
Language(language_code='en-BM', territory='BM', lang_type='en', title='English'),
Language(language_code='en-BS', territory='BS', lang_type='en', title='English'),
Language(language_code='en-BW', territory='BW', lang_type='en', title='English'),
Language(language_code='en-BZ', territory='BZ', lang_type='en', title='English'),
Language(language_code='en-CA', territory='CA', lang_type='en', title='English'),
Language(language_code='en-CC', territory='CC', lang_type='en', title='English'),
Language(language_code='en-CH', territory='CH', lang_type='en', title='English'),
Language(language_code='en-CK', territory='CK', lang_type='en', title='English'),
Language(language_code='en-CM', territory='CM', lang_type='en', title='English'),
Language(language_code='en-CX', territory='CX', lang_type='en', title='English'),
Language(language_code='en-CY', territory='CY', lang_type='en', title='English'),
Language(language_code='en-DE', territory='DE', lang_type='en', title='English'),
Language(language_code='en-DG', territory='DG', lang_type='en', title='English'),
Language(language_code='en-DK', territory='DK', lang_type='en', title='English'),
Language(language_code='en-DM', territory='DM', lang_type='en', title='English'),
Language(language_code='en-ER', territory='ER', lang_type='en', title='English'),
Language(language_code='en-FI', territory='FI', lang_type='en', title='English'),
Language(language_code='en-FJ', territory='FJ', lang_type='en', title='English'),
Language(language_code='en-FK', territory='FK', lang_type='en', title='English'),
Language(language_code='en-FM', territory='FM', lang_type='en', title='English'),
Language(language_code='en-GB', territory='GB', lang_type='en', title='English'),
Language(language_code='en-GD', territory='GD', lang_type='en', title='English'),
Language(language_code='en-GG', territory='GG', lang_type='en', title='English'),
Language(language_code='en-GH', territory='GH', lang_type='en', title='English'),
Language(language_code='en-GI', territory='GI', lang_type='en', title='English'),
Language(language_code='en-GM', territory='GM', lang_type='en', title='English'),
Language(language_code='en-GU', territory='GU', lang_type='en', title='English'),
Language(language_code='en-GY', territory='GY', lang_type='en', title='English'),
Language(language_code='en-HK', territory='HK', lang_type='en', title='English'),
Language(language_code='en-IE', territory='IE', lang_type='en', title='English'),
Language(language_code='en-IL', territory='IL', lang_type='en', title='English'),
Language(language_code='en-IM', territory='IM', lang_type='en', title='English'),
Language(language_code='en-IN', territory='IN', lang_type='en', title='English'),
Language(language_code='en-IO', territory='IO', lang_type='en', title='English'),
Language(language_code='en-JE', territory='JE', lang_type='en', title='English'),
Language(language_code='en-JM', territory='JM', lang_type='en', title='English'),
Language(language_code='en-KE', territory='KE', lang_type='en', title='English'),
Language(language_code='en-KI', territory='KI', lang_type='en', title='English'),
Language(language_code='en-KN', territory='KN', lang_type='en', title='English'),
Language(language_code='en-KY', territory='KY', lang_type='en', title='English'),
Language(language_code='en-LC', territory='LC', lang_type='en', title='English'),
Language(language_code='en-LR', territory='LR', lang_type='en', title='English'),
Language(language_code='en-LS', territory='LS', lang_type='en', title='English'),
Language(language_code='en-MG', territory='MG', lang_type='en', title='English'),
Language(language_code='en-MH', territory='MH', lang_type='en', title='English'),
Language(language_code='en-MO', territory='MO', lang_type='en', title='English'),
Language(language_code='en-MP', territory='MP', lang_type='en', title='English'),
Language(language_code='en-MS', territory='MS', lang_type='en', title='English'),
Language(language_code='en-MT', territory='MT', lang_type='en', title='English'),
Language(language_code='en-MU', territory='MU', lang_type='en', title='English'),
Language(language_code='en-MW', territory='MW', lang_type='en', title='English'),
Language(language_code='en-MY', territory='MY', lang_type='en', title='English'),
Language(language_code='en-NA', territory='NA', lang_type='en', title='English'),
Language(language_code='en-NF', territory='NF', lang_type='en', title='English'),
Language(language_code='en-NG', territory='NG', lang_type='en', title='English'),
Language(language_code='en-NL', territory='NL', lang_type='en', title='English'),
Language(language_code='en-NR', territory='NR', lang_type='en', title='English'),
Language(language_code='en-NU', territory='NU', lang_type='en', title='English'),
Language(language_code='en-NZ', territory='NZ', lang_type='en', title='English'),
Language(language_code='en-PG', territory='PG', lang_type='en', title='English'),
Language(language_code='en-PH', territory='PH', lang_type='en', title='English'),
Language(language_code='en-PK', territory='PK', lang_type='en', title='English'),
Language(language_code='en-PN', territory='PN', lang_type='en', title='English'),
Language(language_code='en-PR', territory='PR', lang_type='en', title='English'),
Language(language_code='en-PW', territory='PW', lang_type='en', title='English'),
Language(language_code='en-RW', territory='RW', lang_type='en', title='English'),
Language(language_code='en-SB', territory='SB', lang_type='en', title='English'),
Language(language_code='en-SC', territory='SC', lang_type='en', title='English'),
Language(language_code='en-SD', territory='SD', lang_type='en', title='English'),
Language(language_code='en-SE', territory='SE', lang_type='en', title='English'),
Language(language_code='en-SG', territory='SG', lang_type='en', title='English'),
Language(language_code='en-SH', territory='SH', lang_type='en', title='English'),
Language(language_code='en-SI', territory='SI', lang_type='en', title='English'),
Language(language_code='en-SL', territory='SL', lang_type='en', title='English'),
Language(language_code='en-SS', territory='SS', lang_type='en', title='English'),
Language(language_code='en-SX', territory='SX', lang_type='en', title='English'),
Language(language_code='en-SZ', territory='SZ', lang_type='en', title='English'),
Language(language_code='en-TC', territory='TC', lang_type='en', title='English'),
Language(language_code='en-TK', territory='TK', lang_type='en', title='English'),
Language(language_code='en-TO', territory='TO', lang_type='en', title='English'),
Language(language_code='en-TT', territory='TT', lang_type='en', title='English'),
Language(language_code='en-TV', territory='TV', lang_type='en', title='English'),
Language(language_code='en-TZ', territory='TZ', lang_type='en', title='English'),
Language(language_code='en-UG', territory='UG', lang_type='en', title='English'),
Language(language_code='en-UM', territory='UM', lang_type='en', title='English'),
Language(language_code='en-US', territory='US', lang_type='en', title='English'),
Language(language_code='en-US-POSIX', territory='US', lang_type='en', title='English'),
Language(language_code='en-VC', territory='VC', lang_type='en', title='English'),
Language(language_code='en-VG', territory='VG', lang_type='en', title='English'),
Language(language_code='en-VI', territory='VI', lang_type='en', title='English'),
Language(language_code='en-VU', territory='VU', lang_type='en', title='English'),
Language(language_code='en-WS', territory='WS', lang_type='en', title='English'),
Language(language_code='en-ZA', territory='ZA', lang_type='en', title='English'),
Language(language_code='en-ZM', territory='ZM', lang_type='en', title='English'),
Language(language_code='en-ZW', territory='ZW', lang_type='en', title='English'),
Language(language_code='eo', lang_type='eo', title='Esperanto'),
Language(language_code='eo-001', territory='001', lang_type='eo', title='Esperanto'),
Language(language_code='es', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-419', territory='419', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-AR', territory='AR', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-BO', territory='BO', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-BR', territory='BR', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-BZ', territory='BZ', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-CL', territory='CL', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-CO', territory='CO', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-CR', territory='CR', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-CU', territory='CU', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-DO', territory='DO', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-EA', territory='EA', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-EC', territory='EC', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-ES', territory='ES', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-GQ', territory='GQ', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-GT', territory='GT', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-HN', territory='HN', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-IC', territory='IC', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-MX', territory='MX', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-NI', territory='NI', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-PA', territory='PA', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-PE', territory='PE', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-PH', territory='PH', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-PR', territory='PR', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-PY', territory='PY', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-SV', territory='SV', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-US', territory='US', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-UY', territory='UY', lang_type='es', title='Spanish; Castilian'),
Language(language_code='es-VE', territory='VE', lang_type='es', title='Spanish; Castilian'),
Language(language_code='et', lang_type='et', title='Estonian'),
Language(language_code='et-EE', territory='EE', lang_type='et', title='Estonian'),
Language(language_code='eu', lang_type='eu', title='Basque'),
Language(language_code='eu-ES', territory='ES', lang_type='eu', title='Basque'),
Language(language_code='ewo', lang_type='ewo'),
Language(language_code='ewo-CM', territory='CM', lang_type='ewo'),
Language(language_code='fa', lang_type='fa', title='Persian'),
Language(language_code='fa-AF', territory='AF', lang_type='fa', title='Persian'),
Language(language_code='fa-IR', territory='IR', lang_type='fa', title='Persian'),
Language(language_code='ff', lang_type='ff', title='Fulah'),
Language(language_code='ff-CM', territory='CM', lang_type='ff', title='Fulah'),
Language(language_code='ff-GN', territory='GN', lang_type='ff', title='Fulah'),
Language(language_code='ff-MR', territory='MR', lang_type='ff', title='Fulah'),
Language(language_code='ff-SN', territory='SN', lang_type='ff', title='Fulah'),
Language(language_code='fi', lang_type='fi', title='Finnish'),
Language(language_code='fi-FI', territory='FI', lang_type='fi', title='Finnish'),
Language(language_code='fil', lang_type='fil'),
Language(language_code='fil-PH', territory='PH', lang_type='fil'),
Language(language_code='fo', lang_type='fo', title='Faroese'),
Language(language_code='fo-DK', territory='DK', lang_type='fo', title='Faroese'),
Language(language_code='fo-FO', territory='FO', lang_type='fo', title='Faroese'),
Language(language_code='fr', lang_type='fr', title='French'),
Language(language_code='fr-BE', territory='BE', lang_type='fr', title='French'),
Language(language_code='fr-BF', territory='BF', lang_type='fr', title='French'),
Language(language_code='fr-BI', territory='BI', lang_type='fr', title='French'),
Language(language_code='fr-BJ', territory='BJ', lang_type='fr', title='French'),
Language(language_code='fr-BL', territory='BL', lang_type='fr', title='French'),
Language(language_code='fr-CA', territory='CA', lang_type='fr', title='French'),
Language(language_code='fr-CD', territory='CD', lang_type='fr', title='French'),
Language(language_code='fr-CF', territory='CF', lang_type='fr', title='French'),
Language(language_code='fr-CG', territory='CG', lang_type='fr', title='French'),
Language(language_code='fr-CH', territory='CH', lang_type='fr', title='French'),
Language(language_code='fr-CI', territory='CI', lang_type='fr', title='French'),
Language(language_code='fr-CM', territory='CM', lang_type='fr', title='French'),
Language(language_code='fr-DJ', territory='DJ', lang_type='fr', title='French'),
Language(language_code='fr-DZ', territory='DZ', lang_type='fr', title='French'),
Language(language_code='fr-FR', territory='FR', lang_type='fr', title='French'),
Language(language_code='fr-GA', territory='GA', lang_type='fr', title='French'),
Language(language_code='fr-GF', territory='GF', lang_type='fr', title='French'),
Language(language_code='fr-GN', territory='GN', lang_type='fr', title='French'),
Language(language_code='fr-GP', territory='GP', lang_type='fr', title='French'),
Language(language_code='fr-GQ', territory='GQ', lang_type='fr', title='French'),
Language(language_code='fr-HT', territory='HT', lang_type='fr', title='French'),
Language(language_code='fr-KM', territory='KM', lang_type='fr', title='French'),
Language(language_code='fr-LU', territory='LU', lang_type='fr', title='French'),
Language(language_code='fr-MA', territory='MA', lang_type='fr', title='French'),
Language(language_code='fr-MC', territory='MC', lang_type='fr', title='French'),
Language(language_code='fr-MF', territory='MF', lang_type='fr', title='French'),
Language(language_code='fr-MG', territory='MG', lang_type='fr', title='French'),
Language(language_code='fr-ML', territory='ML', lang_type='fr', title='French'),
Language(language_code='fr-MQ', territory='MQ', lang_type='fr', title='French'),
Language(language_code='fr-MR', territory='MR', lang_type='fr', title='French'),
Language(language_code='fr-MU', territory='MU', lang_type='fr', title='French'),
Language(language_code='fr-NC', territory='NC', lang_type='fr', title='French'),
Language(language_code='fr-NE', territory='NE', lang_type='fr', title='French'),
Language(language_code='fr-PF', territory='PF', lang_type='fr', title='French'),
Language(language_code='fr-PM', territory='PM', lang_type='fr', title='French'),
Language(language_code='fr-RE', territory='RE', lang_type='fr', title='French'),
Language(language_code='fr-RW', territory='RW', lang_type='fr', title='French'),
Language(language_code='fr-SC', territory='SC', lang_type='fr', title='French'),
Language(language_code='fr-SN', territory='SN', lang_type='fr', title='French'),
Language(language_code='fr-SY', territory='SY', lang_type='fr', title='French'),
Language(language_code='fr-TD', territory='TD', lang_type='fr', title='French'),
Language(language_code='fr-TG', territory='TG', lang_type='fr', title='French'),
Language(language_code='fr-TN', territory='TN', lang_type='fr', title='French'),
Language(language_code='fr-VU', territory='VU', lang_type='fr', title='French'),
Language(language_code='fr-WF', territory='WF', lang_type='fr', title='French'),
Language(language_code='fr-YT', territory='YT', lang_type='fr', title='French'),
Language(language_code='fur', lang_type='fur'),
Language(language_code='fur-IT', territory='IT', lang_type='fur'),
Language(language_code='fy', lang_type='fy', title='Western Frisian'),
Language(language_code='fy-NL', territory='NL', lang_type='fy', title='Western Frisian'),
Language(language_code='ga', lang_type='ga', title='Irish'),
Language(language_code='ga-IE', territory='IE', lang_type='ga', title='Irish'),
Language(language_code='gd', lang_type='gd', title='Gaelic; Scottish Gaelic'),
Language(language_code='gd-GB', territory='GB', lang_type='gd', title='Gaelic; Scottish Gaelic'),
Language(language_code='gl', lang_type='gl', title='Galician'),
Language(language_code='gl-ES', territory='ES', lang_type='gl', title='Galician'),
Language(language_code='gsw', lang_type='gsw'),
Language(language_code='gsw-CH', territory='CH', lang_type='gsw'),
Language(language_code='gsw-FR', territory='FR', lang_type='gsw'),
Language(language_code='gsw-LI', territory='LI', lang_type='gsw'),
Language(language_code='gu', lang_type='gu', title='Gujarati'),
Language(language_code='gu-IN', territory='IN', lang_type='gu', title='Gujarati'),
Language(language_code='guz', lang_type='guz'),
Language(language_code='guz-KE', territory='KE', lang_type='guz'),
Language(language_code='gv', lang_type='gv', title='Manx'),
Language(language_code='gv-IM', territory='IM', lang_type='gv', title='Manx'),
Language(language_code='ha', lang_type='ha', title='Hausa'),
Language(language_code='ha-GH', territory='GH', lang_type='ha', title='Hausa'),
Language(language_code='ha-NE', territory='NE', lang_type='ha', title='Hausa'),
Language(language_code='ha-NG', territory='NG', lang_type='ha', title='Hausa'),
Language(language_code='haw', lang_type='haw'),
Language(language_code='haw-US', territory='US', lang_type='haw'),
Language(language_code='he', lang_type='he', title='Hebrew'),
Language(language_code='he-IL', territory='IL', lang_type='he', title='Hebrew'),
Language(language_code='hi', lang_type='hi', title='Hindi'),
Language(language_code='hi-IN', territory='IN', lang_type='hi', title='Hindi'),
Language(language_code='hr', lang_type='hr', title='Croatian'),
Language(language_code='hr-BA', territory='BA', lang_type='hr', title='Croatian'),
Language(language_code='hr-HR', territory='HR', lang_type='hr', title='Croatian'),
Language(language_code='hsb', lang_type='hsb'),
Language(language_code='hsb-DE', territory='DE', lang_type='hsb'),
Language(language_code='hu', lang_type='hu', title='Hungarian'),
Language(language_code='hu-HU', territory='HU', lang_type='hu', title='Hungarian'),
Language(language_code='hy', lang_type='hy', title='Armenian'),
Language(language_code='hy-AM', territory='AM', lang_type='hy', title='Armenian'),
Language(language_code='id', lang_type='id', title='Indonesian'),
Language(language_code='id-ID', territory='ID', lang_type='id', title='Indonesian'),
Language(language_code='ig', lang_type='ig', title='Igbo'),
Language(language_code='ig-NG', territory='NG', lang_type='ig', title='Igbo'),
Language(language_code='ii', lang_type='ii', title='Sichuan Yi; Nuosu'),
Language(language_code='ii-CN', territory='CN', lang_type='ii', title='Sichuan Yi; Nuosu'),
Language(language_code='is', lang_type='is', title='Icelandic'),
Language(language_code='is-IS', territory='IS', lang_type='is', title='Icelandic'),
Language(language_code='it', lang_type='it', title='Italian'),
Language(language_code='it-CH', territory='CH', lang_type='it', title='Italian'),
Language(language_code='it-IT', territory='IT', lang_type='it', title='Italian'),
Language(language_code='it-SM', territory='SM', lang_type='it', title='Italian'),
Language(language_code='it-VA', territory='VA', lang_type='it', title='Italian'),
Language(language_code='ja', lang_type='ja', title='Japanese'),
Language(language_code='ja-JP', territory='JP', lang_type='ja', title='Japanese'),
Language(language_code='jgo', lang_type='jgo'),
Language(language_code='jgo-CM', territory='CM', lang_type='jgo'),
Language(language_code='jmc', lang_type='jmc'),
Language(language_code='jmc-TZ', territory='TZ', lang_type='jmc'),
Language(language_code='ka', lang_type='ka', title='Georgian'),
Language(language_code='ka-GE', territory='GE', lang_type='ka', title='Georgian'),
Language(language_code='kab', lang_type='kab'),
Language(language_code='kab-DZ', territory='DZ', lang_type='kab'),
Language(language_code='kam', lang_type='kam'),
Language(language_code='kam-KE', territory='KE', lang_type='kam'),
Language(language_code='kde', lang_type='kde'),
Language(language_code='kde-TZ', territory='TZ', lang_type='kde'),
Language(language_code='kea', lang_type='kea'),
Language(language_code='kea-CV', territory='CV', lang_type='kea'),
Language(language_code='khq', lang_type='khq'),
Language(language_code='khq-ML', territory='ML', lang_type='khq'),
Language(language_code='ki', lang_type='ki', title='Kikuyu; Gikuyu'),
Language(language_code='ki-KE', territory='KE', lang_type='ki', title='Kikuyu; Gikuyu'),
Language(language_code='kk', lang_type='kk', title='Kazakh'),
Language(language_code='kk-KZ', territory='KZ', lang_type='kk', title='Kazakh'),
Language(language_code='kkj', lang_type='kkj'),
Language(language_code='kkj-CM', territory='CM', lang_type='kkj'),
Language(language_code='kl', lang_type='kl', title='Kalaallisut; Greenlandic'),
Language(language_code='kl-GL', territory='GL', lang_type='kl', title='Kalaallisut; Greenlandic'),
Language(language_code='kln', lang_type='kln'),
Language(language_code='kln-KE', territory='KE', lang_type='kln'),
Language(language_code='km', lang_type='km', title='Central Khmer'),
Language(language_code='km-KH', territory='KH', lang_type='km', title='Central Khmer'),
Language(language_code='kn', lang_type='kn', title='Kannada'),
Language(language_code='kn-IN', territory='IN', lang_type='kn', title='Kannada'),
Language(language_code='ko', lang_type='ko', title='Korean'),
Language(language_code='ko-KP', territory='KP', lang_type='ko', title='Korean'),
Language(language_code='ko-KR', territory='KR', lang_type='ko', title='Korean'),
Language(language_code='kok', lang_type='kok'),
Language(language_code='kok-IN', territory='IN', lang_type='kok'),
Language(language_code='ks', lang_type='ks', title='Kashmiri'),
Language(language_code='ks-IN', territory='IN', lang_type='ks', title='Kashmiri'),
Language(language_code='ksb', lang_type='ksb'),
Language(language_code='ksb-TZ', territory='TZ', lang_type='ksb'),
Language(language_code='ksf', lang_type='ksf'),
Language(language_code='ksf-CM', territory='CM', lang_type='ksf'),
Language(language_code='ksh', lang_type='ksh'),
Language(language_code='ksh-DE', territory='DE', lang_type='ksh'),
Language(language_code='kw', lang_type='kw', title='Cornish'),
Language(language_code='kw-GB', territory='GB', lang_type='kw', title='Cornish'),
Language(language_code='ky', lang_type='ky', title='Kirghiz; Kyrgyz'),
Language(language_code='ky-KG', territory='KG', lang_type='ky', title='Kirghiz; Kyrgyz'),
Language(language_code='lag', lang_type='lag'),
Language(language_code='lag-TZ', territory='TZ', lang_type='lag'),
Language(language_code='lb', lang_type='lb', title='Luxembourgish; Letzeburgesch'),
Language(language_code='lb-LU', territory='LU', lang_type='lb', title='Luxembourgish; Letzeburgesch'),
Language(language_code='lg', lang_type='lg', title='Ganda'),
Language(language_code='lg-UG', territory='UG', lang_type='lg', title='Ganda'),
Language(language_code='lkt', lang_type='lkt'),
Language(language_code='lkt-US', territory='US', lang_type='lkt'),
Language(language_code='ln', lang_type='ln', title='Lingala'),
Language(language_code='ln-AO', territory='AO', lang_type='ln', title='Lingala'),
Language(language_code='ln-CD', territory='CD', lang_type='ln', title='Lingala'),
Language(language_code='ln-CF', territory='CF', lang_type='ln', title='Lingala'),
Language(language_code='ln-CG', territory='CG', lang_type='ln', title='Lingala'),
Language(language_code='lo', lang_type='lo', title='Lao'),
Language(language_code='lo-LA', territory='LA', lang_type='lo', title='Lao'),
Language(language_code='lrc', lang_type='lrc'),
Language(language_code='lrc-IQ', territory='IQ', lang_type='lrc'),
Language(language_code='lrc-IR', territory='IR', lang_type='lrc'),
Language(language_code='lt', lang_type='lt', title='Lithuanian'),
Language(language_code='lt-LT', territory='LT', lang_type='lt', title='Lithuanian'),
Language(language_code='lu', lang_type='lu', title='Luba-Katanga'),
Language(language_code='lu-CD', territory='CD', lang_type='lu', title='Luba-Katanga'),
Language(language_code='luo', lang_type='luo'),
Language(language_code='luo-KE', territory='KE', lang_type='luo'),
Language(language_code='luy', lang_type='luy'),
Language(language_code='luy-KE', territory='KE', lang_type='luy'),
Language(language_code='lv', lang_type='lv', title='Latvian'),
Language(language_code='lv-LV', territory='LV', lang_type='lv', title='Latvian'),
Language(language_code='mas', lang_type='mas'),
Language(language_code='mas-KE', territory='KE', lang_type='mas'),
Language(language_code='mas-TZ', territory='TZ', lang_type='mas'),
Language(language_code='mer', lang_type='mer'),
Language(language_code='mer-KE', territory='KE', lang_type='mer'),
Language(language_code='mfe', lang_type='mfe'),
Language(language_code='mfe-MU', territory='MU', lang_type='mfe'),
Language(language_code='mg', lang_type='mg', title='Malagasy'),
Language(language_code='mg-MG', territory='MG', lang_type='mg', title='Malagasy'),
Language(language_code='mgh', lang_type='mgh'),
Language(language_code='mgh-MZ', territory='MZ', lang_type='mgh'),
Language(language_code='mgo', lang_type='mgo'),
Language(language_code='mgo-CM', territory='CM', lang_type='mgo'),
Language(language_code='mk', lang_type='mk', title='Macedonian'),
Language(language_code='mk-MK', territory='MK', lang_type='mk', title='Macedonian'),
Language(language_code='ml', lang_type='ml', title='Malayalam'),
Language(language_code='ml-IN', territory='IN', lang_type='ml', title='Malayalam'),
Language(language_code='mn', lang_type='mn', title='Mongolian'),
Language(language_code='mn-MN', territory='MN', lang_type='mn', title='Mongolian'),
Language(language_code='mr', lang_type='mr', title='Marathi'),
Language(language_code='mr-IN', territory='IN', lang_type='mr', title='Marathi'),
Language(language_code='ms', lang_type='ms', title='Malay'),
Language(language_code='ms-BN', territory='BN', lang_type='ms', title='Malay'),
Language(language_code='ms-MY', territory='MY', lang_type='ms', title='Malay'),
Language(language_code='ms-SG', territory='SG', lang_type='ms', title='Malay'),
Language(language_code='mt', lang_type='mt', title='Maltese'),
Language(language_code='mt-MT', territory='MT', lang_type='mt', title='Maltese'),
Language(language_code='mua', lang_type='mua'),
Language(language_code='mua-CM', territory='CM', lang_type='mua'),
Language(language_code='my', lang_type='my', title='Burmese'),
Language(language_code='my-MM', territory='MM', lang_type='my', title='Burmese'),
Language(language_code='mzn', lang_type='mzn'),
Language(language_code='mzn-IR', territory='IR', lang_type='mzn'),
Language(language_code='naq', lang_type='naq'),
Language(language_code='naq-NA', territory='NA', lang_type='naq'),
Language(language_code='nb', lang_type='nb', title='Bokmål, Norwegian; Norwegian Bokmål'),
Language(language_code='nb-NO', territory='NO', lang_type='nb', title='Bokmål, Norwegian; Norwegian Bokmål'),
Language(language_code='nb-SJ', territory='SJ', lang_type='nb', title='Bokmål, Norwegian; Norwegian Bokmål'),
Language(language_code='nd', lang_type='nd', title='Ndebele, North; North Ndebele'),
Language(language_code='nd-ZW', territory='ZW', lang_type='nd', title='Ndebele, North; North Ndebele'),
Language(language_code='nds', lang_type='nds'),
Language(language_code='nds-DE', territory='DE', lang_type='nds'),
Language(language_code='nds-NL', territory='NL', lang_type='nds'),
Language(language_code='ne', lang_type='ne', title='Nepali'),
Language(language_code='ne-IN', territory='IN', lang_type='ne', title='Nepali'),
Language(language_code='ne-NP', territory='NP', lang_type='ne', title='Nepali'),
Language(language_code='nl', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-AW', territory='AW', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-BE', territory='BE', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-BQ', territory='BQ', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-CW', territory='CW', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-NL', territory='NL', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-SR', territory='SR', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nl-SX', territory='SX', lang_type='nl', title='Dutch; Flemish'),
Language(language_code='nmg', lang_type='nmg'),
Language(language_code='nmg-CM', territory='CM', lang_type='nmg'),
Language(language_code='nn', lang_type='nn', title='Norwegian Nynorsk; Nynorsk, Norwegian'),
Language(language_code='nn-NO', territory='NO', lang_type='nn', title='Norwegian Nynorsk; Nynorsk, Norwegian'),
Language(language_code='nnh', lang_type='nnh'),
Language(language_code='nnh-CM', territory='CM', lang_type='nnh'),
Language(language_code='nus', lang_type='nus'),
Language(language_code='nus-SS', territory='SS', lang_type='nus'),
Language(language_code='nyn', lang_type='nyn'),
Language(language_code='nyn-UG', territory='UG', lang_type='nyn'),
Language(language_code='om', lang_type='om', title='Oromo'),
Language(language_code='om-ET', territory='ET', lang_type='om', title='Oromo'),
Language(language_code='om-KE', territory='KE', lang_type='om', title='Oromo'),
Language(language_code='or', lang_type='or', title='Oriya'),
Language(language_code='or-IN', territory='IN', lang_type='or', title='Oriya'),
Language(language_code='os', lang_type='os', title='Ossetian; Ossetic'),
Language(language_code='os-GE', territory='GE', lang_type='os', title='Ossetian; Ossetic'),
Language(language_code='os-RU', territory='RU', lang_type='os', title='Ossetian; Ossetic'),
Language(language_code='pa', lang_type='pa', title='Panjabi; Punjabi'),
Language(language_code='pa-Arab', lang_type='pa', title='Panjabi; Punjabi'),
Language(language_code='pa-Arab-PK', territory='PK', lang_type='pa', title='Panjabi; Punjabi'),
Language(language_code='pa-Guru', lang_type='pa', title='Panjabi; Punjabi'),
Language(language_code='pa-Guru-IN', territory='IN', lang_type='pa', title='Panjabi; Punjabi'),
Language(language_code='pl', lang_type='pl', title='Polish'),
Language(language_code='pl-PL', territory='PL', lang_type='pl', title='Polish'),
Language(language_code='prg', lang_type='prg'),
Language(language_code='prg-001', territory='001', lang_type='prg'),
Language(language_code='ps', lang_type='ps', title='Pushto; Pashto'),
Language(language_code='ps-AF', territory='AF', lang_type='ps', title='Pushto; Pashto'),
Language(language_code='pt', lang_type='pt', title='Portuguese'),
Language(language_code='pt-AO', territory='AO', lang_type='pt', title='Portuguese'),
Language(language_code='pt-BR', territory='BR', lang_type='pt', title='Portuguese'),
Language(language_code='pt-CH', territory='CH', lang_type='pt', title='Portuguese'),
Language(language_code='pt-CV', territory='CV', lang_type='pt', title='Portuguese'),
Language(language_code='pt-GQ', territory='GQ', lang_type='pt', title='Portuguese'),
Language(language_code='pt-GW', territory='GW', lang_type='pt', title='Portuguese'),
Language(language_code='pt-LU', territory='LU', lang_type='pt', title='Portuguese'),
Language(language_code='pt-MO', territory='MO', lang_type='pt', title='Portuguese'),
Language(language_code='pt-MZ', territory='MZ', lang_type='pt', title='Portuguese'),
Language(language_code='pt-PT', territory='PT', lang_type='pt', title='Portuguese'),
Language(language_code='pt-ST', territory='ST', lang_type='pt', title='Portuguese'),
Language(language_code='pt-TL', territory='TL', lang_type='pt', title='Portuguese'),
Language(language_code='qu', lang_type='qu', title='Quechua'),
Language(language_code='qu-BO', territory='BO', lang_type='qu', title='Quechua'),
Language(language_code='qu-EC', territory='EC', lang_type='qu', title='Quechua'),
Language(language_code='qu-PE', territory='PE', lang_type='qu', title='Quechua'),
Language(language_code='rm', lang_type='rm', title='Romansh'),
Language(language_code='rm-CH', territory='CH', lang_type='rm', title='Romansh'),
Language(language_code='rn', lang_type='rn', title='Rundi'),
Language(language_code='rn-BI', territory='BI', lang_type='rn', title='Rundi'),
Language(language_code='ro', lang_type='ro', title='Romanian; Moldavian; Moldovan'),
Language(language_code='ro-MD', territory='MD', lang_type='ro', title='Romanian; Moldavian; Moldovan'),
Language(language_code='ro-RO', territory='RO', lang_type='ro', title='Romanian; Moldavian; Moldovan'),
Language(language_code='rof', lang_type='rof'),
Language(language_code='rof-TZ', territory='TZ', lang_type='rof'),
Language(language_code='root', lang_type='root'),
Language(language_code='ru', lang_type='ru', title='Russian'),
Language(language_code='ru-BY', territory='BY', lang_type='ru', title='Russian'),
Language(language_code='ru-KG', territory='KG', lang_type='ru', title='Russian'),
Language(language_code='ru-KZ', territory='KZ', lang_type='ru', title='Russian'),
Language(language_code='ru-MD', territory='MD', lang_type='ru', title='Russian'),
Language(language_code='ru-RU', territory='RU', lang_type='ru', title='Russian'),
Language(language_code='ru-UA', territory='UA', lang_type='ru', title='Russian'),
Language(language_code='rw', lang_type='rw', title='Kinyarwanda'),
Language(language_code='rw-RW', territory='RW', lang_type='rw', title='Kinyarwanda'),
Language(language_code='rwk', lang_type='rwk'),
Language(language_code='rwk-TZ', territory='TZ', lang_type='rwk'),
Language(language_code='sah', lang_type='sah'),
Language(language_code='sah-RU', territory='RU', lang_type='sah'),
Language(language_code='saq', lang_type='saq'),
Language(language_code='saq-KE', territory='KE', lang_type='saq'),
Language(language_code='sbp', lang_type='sbp'),
Language(language_code='sbp-TZ', territory='TZ', lang_type='sbp'),
Language(language_code='se', lang_type='se', title='Northern Sami'),
Language(language_code='se-FI', territory='FI', lang_type='se', title='Northern Sami'),
Language(language_code='se-NO', territory='NO', lang_type='se', title='Northern Sami'),
Language(language_code='se-SE', territory='SE', lang_type='se', title='Northern Sami'),
Language(language_code='seh', lang_type='seh'),
Language(language_code='seh-MZ', territory='MZ', lang_type='seh'),
Language(language_code='ses', lang_type='ses'),
Language(language_code='ses-ML', territory='ML', lang_type='ses'),
Language(language_code='sg', lang_type='sg', title='Sango'),
Language(language_code='sg-CF', territory='CF', lang_type='sg', title='Sango'),
Language(language_code='shi', lang_type='shi'),
Language(language_code='shi-Latn', lang_type='shi'),
Language(language_code='shi-Latn-MA', territory='MA', lang_type='shi'),
Language(language_code='shi-Tfng', lang_type='shi'),
Language(language_code='shi-Tfng-MA', territory='MA', lang_type='shi'),
Language(language_code='si', lang_type='si', title='Sinhala; Sinhalese'),
Language(language_code='si-LK', territory='LK', lang_type='si', title='Sinhala; Sinhalese'),
Language(language_code='sk', lang_type='sk', title='Slovak'),
Language(language_code='sk-SK', territory='SK', lang_type='sk', title='Slovak'),
Language(language_code='sl', lang_type='sl', title='Slovenian'),
Language(language_code='sl-SI', territory='SI', lang_type='sl', title='Slovenian'),
Language(language_code='smn', lang_type='smn'),
Language(language_code='smn-FI', territory='FI', lang_type='smn'),
Language(language_code='sn', lang_type='sn', title='Shona'),
Language(language_code='sn-ZW', territory='ZW', lang_type='sn', title='Shona'),
Language(language_code='so', lang_type='so', title='Somali'),
Language(language_code='so-DJ', territory='DJ', lang_type='so', title='Somali'),
Language(language_code='so-ET', territory='ET', lang_type='so', title='Somali'),
Language(language_code='so-KE', territory='KE', lang_type='so', title='Somali'),
Language(language_code='so-SO', territory='SO', lang_type='so', title='Somali'),
Language(language_code='sq', lang_type='sq', title='Albanian'),
Language(language_code='sq-AL', territory='AL', lang_type='sq', title='Albanian'),
Language(language_code='sq-MK', territory='MK', lang_type='sq', title='Albanian'),
Language(language_code='sq-XK', territory='XK', lang_type='sq', title='Albanian'),
Language(language_code='sr', lang_type='sr', title='Serbian'),
Language(language_code='sr-Cyrl', lang_type='sr', title='Serbian'),
Language(language_code='sr-Cyrl-BA', territory='BA', lang_type='sr', title='Serbian'),
Language(language_code='sr-Cyrl-ME', territory='ME', lang_type='sr', title='Serbian'),
Language(language_code='sr-Cyrl-RS', territory='RS', lang_type='sr', title='Serbian'),
Language(language_code='sr-Cyrl-XK', territory='XK', lang_type='sr', title='Serbian'),
Language(language_code='sr-Latn', lang_type='sr', title='Serbian'),
Language(language_code='sr-Latn-BA', territory='BA', lang_type='sr', title='Serbian'),
Language(language_code='sr-Latn-ME', territory='ME', lang_type='sr', title='Serbian'),
Language(language_code='sr-Latn-RS', territory='RS', lang_type='sr', title='Serbian'),
Language(language_code='sr-Latn-XK', territory='XK', lang_type='sr', title='Serbian'),
Language(language_code='sv', lang_type='sv', title='Swedish'),
Language(language_code='sv-AX', territory='AX', lang_type='sv', title='Swedish'),
Language(language_code='sv-FI', territory='FI', lang_type='sv', title='Swedish'),
Language(language_code='sv-SE', territory='SE', lang_type='sv', title='Swedish'),
Language(language_code='sw', lang_type='sw', title='Swahili'),
Language(language_code='sw-CD', territory='CD', lang_type='sw', title='Swahili'),
Language(language_code='sw-KE', territory='KE', lang_type='sw', title='Swahili'),
Language(language_code='sw-TZ', territory='TZ', lang_type='sw', title='Swahili'),
Language(language_code='sw-UG', territory='UG', lang_type='sw', title='Swahili'),
Language(language_code='ta', lang_type='ta', title='Tamil'),
Language(language_code='ta-IN', territory='IN', lang_type='ta', title='Tamil'),
Language(language_code='ta-LK', territory='LK', lang_type='ta', title='Tamil'),
Language(language_code='ta-MY', territory='MY', lang_type='ta', title='Tamil'),
Language(language_code='ta-SG', territory='SG', lang_type='ta', title='Tamil'),
Language(language_code='te', lang_type='te', title='Telugu'),
Language(language_code='te-IN', territory='IN', lang_type='te', title='Telugu'),
Language(language_code='teo', lang_type='teo'),
Language(language_code='teo-KE', territory='KE', lang_type='teo'),
Language(language_code='teo-UG', territory='UG', lang_type='teo'),
Language(language_code='th', lang_type='th', title='Thai'),
Language(language_code='th-TH', territory='TH', lang_type='th', title='Thai'),
Language(language_code='ti', lang_type='ti', title='Tigrinya'),
Language(language_code='ti-ER', territory='ER', lang_type='ti', title='Tigrinya'),
Language(language_code='ti-ET', territory='ET', lang_type='ti', title='Tigrinya'),
Language(language_code='tk', lang_type='tk', title='Turkmen'),
Language(language_code='tk-TM', territory='TM', lang_type='tk', title='Turkmen'),
Language(language_code='to', lang_type='to', title='Tonga (Tonga Islands)'),
Language(language_code='to-TO', territory='TO', lang_type='to', title='Tonga (Tonga Islands)'),
Language(language_code='tr', lang_type='tr', title='Turkish'),
Language(language_code='tr-CY', territory='CY', lang_type='tr', title='Turkish'),
Language(language_code='tr-TR', territory='TR', lang_type='tr', title='Turkish'),
Language(language_code='twq', lang_type='twq'),
Language(language_code='twq-NE', territory='NE', lang_type='twq'),
Language(language_code='tzm', lang_type='tzm'),
Language(language_code='tzm-MA', territory='MA', lang_type='tzm'),
Language(language_code='ug', lang_type='ug', title='Uighur; Uyghur'),
Language(language_code='ug-CN', territory='CN', lang_type='ug', title='Uighur; Uyghur'),
Language(language_code='uk', lang_type='uk', title='Ukrainian'),
Language(language_code='uk-UA', territory='UA', lang_type='uk', title='Ukrainian'),
Language(language_code='ur', lang_type='ur', title='Urdu'),
Language(language_code='ur-IN', territory='IN', lang_type='ur', title='Urdu'),
Language(language_code='ur-PK', territory='PK', lang_type='ur', title='Urdu'),
Language(language_code='uz', lang_type='uz', title='Uzbek'),
Language(language_code='uz-Arab', lang_type='uz', title='Uzbek'),
Language(language_code='uz-Arab-AF', territory='AF', lang_type='uz', title='Uzbek'),
Language(language_code='uz-Cyrl', lang_type='uz', title='Uzbek'),
Language(language_code='uz-Cyrl-UZ', territory='UZ', lang_type='uz', title='Uzbek'),
Language(language_code='uz-Latn', lang_type='uz', title='Uzbek'),
Language(language_code='uz-Latn-UZ', territory='UZ', lang_type='uz', title='Uzbek'),
Language(language_code='vai', lang_type='vai'),
Language(language_code='vai-Latn', lang_type='vai'),
Language(language_code='vai-Latn-LR', territory='LR', lang_type='vai'),
Language(language_code='vai-Vaii', lang_type='vai'),
Language(language_code='vai-Vaii-LR', territory='LR', lang_type='vai'),
Language(language_code='vi', lang_type='vi', title='Vietnamese'),
Language(language_code='vi-VN', territory='VN', lang_type='vi', title='Vietnamese'),
Language(language_code='vo', lang_type='vo', title='Volapük'),
Language(language_code='vo-001', territory='001', lang_type='vo', title='Volapük'),
Language(language_code='vun', lang_type='vun'),
Language(language_code='vun-TZ', territory='TZ', lang_type='vun'),
Language(language_code='wae', lang_type='wae'),
Language(language_code='wae-CH', territory='CH', lang_type='wae'),
Language(language_code='xog', lang_type='xog'),
Language(language_code='xog-UG', territory='UG', lang_type='xog'),
Language(language_code='yav', lang_type='yav'),
Language(language_code='yav-CM', territory='CM', lang_type='yav'),
Language(language_code='yi', lang_type='yi', title='Yiddish'),
Language(language_code='yi-001', territory='001', lang_type='yi', title='Yiddish'),
Language(language_code='yo', lang_type='yo', title='Yoruba'),
Language(language_code='yo-BJ', territory='BJ', lang_type='yo', title='Yoruba'),
Language(language_code='yo-NG', territory='NG', lang_type='yo', title='Yoruba'),
Language(language_code='yue', lang_type='yue'),
Language(language_code='yue-HK', territory='HK', lang_type='yue'),
Language(language_code='zgh', lang_type='zgh'),
Language(language_code='zgh-MA', territory='MA', lang_type='zgh'),
Language(language_code='zh', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hans', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hans-CN', territory='CN', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hans-HK', territory='HK', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hans-MO', territory='MO', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hans-SG', territory='SG', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hant', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hant-HK', territory='HK', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hant-MO', territory='MO', lang_type='zh', title='Chinese'),
Language(language_code='zh-Hant-TW', territory='TW', lang_type='zh', title='Chinese'),
Language(language_code='zu', lang_type='zu', title='Zulu'),
Language(language_code='zu-ZA', territory='ZA', lang_type='zu', title='Zulu')
)
def get_language(language_code):
for language in LANGUAGES:
if language.code == language_code:
return language

View file

@ -17,13 +17,14 @@ dp = Dispatcher(bot)
@dp.message_handler() @dp.message_handler()
async def check_language(message): async def check_language(message):
language = message.from_user.language locale = message.from_user.locale
await message.reply(text( await message.reply(text(
bold('Info about your language:'), bold('Info about your language:'),
text(' 🔸', bold('Code:'), italic(language.code)), text(' 🔸', bold('Code:'), italic(locale.locale)),
text(' 🔸', bold('Type:'), italic(language.type)), text(' 🔸', bold('Territory:'), italic(locale.territory or 'Unknown')),
text(' 🔸', bold('Title:'), italic(language.title)), text(' 🔸', bold('Language name:'), italic(locale.language_name)),
text(' 🔸', bold('English language name:'), italic(locale.english_name)),
sep='\n'), parse_mode=ParseMode.MARKDOWN) sep='\n'), parse_mode=ParseMode.MARKDOWN)