155 lines
4.3 KiB
Python
155 lines
4.3 KiB
Python
import enum
|
||
from collections import OrderedDict
|
||
from typing import Dict
|
||
|
||
from lingua import Language
|
||
|
||
|
||
class Locale(enum.Enum):
|
||
"""Maps {language}_{country} to the name of the langage in said language."""
|
||
|
||
en_GB = "English"
|
||
af_ZA = "Afrikaans"
|
||
an_ES = "Aragonés"
|
||
ar_SA = "العربية"
|
||
as_IN = "অসমীয়া"
|
||
av_DA = "авар мацӀ"
|
||
az_AZ = "Azərbaycanca"
|
||
be_BY = "Беларуская"
|
||
bg_BG = "български език"
|
||
bn_BD = "বাংলা"
|
||
br_FR = "Brezhoneg"
|
||
bs_BA = "Bosanski"
|
||
ca_ES = "Català, valencià"
|
||
ckb_IR = "کوردی سۆرانی"
|
||
co_FR = "Corsu"
|
||
cs_CZ = "Čeština"
|
||
cv_CU = "чӑваш чӗлхи"
|
||
cy_GB = "Cymraeg"
|
||
da_DK = "Dansk"
|
||
de_DE = "Deutsch"
|
||
el_GR = "Ελληνικά"
|
||
en_US = "English (US)"
|
||
eo_UY = "Esperanto"
|
||
es_ES = "Español"
|
||
et_EE = "Eesti keel"
|
||
eu_ES = "Euskara"
|
||
fa_IR = "فارسی"
|
||
fi_FI = "Suomen kieli"
|
||
fo_FO = "Føroyskt"
|
||
fr_FR = "Français"
|
||
frp_IT = "Arpitan"
|
||
fy_NL = "Frysk"
|
||
ga_IE = "Gaeilge"
|
||
gd_GB = "Gàidhlig"
|
||
gl_ES = "Galego"
|
||
gsw_CH = "Schwizerdütsch"
|
||
gu_IN = "ગુજરાતી"
|
||
he_IL = "עִבְרִית"
|
||
hi_IN = "हिन्दी, हिंदी"
|
||
hr_HR = "Hrvatski"
|
||
hu_HU = "Magyar"
|
||
hy_AM = "Հայերեն"
|
||
ia_IA = "Interlingua"
|
||
id_ID = "Bahasa Indonesia"
|
||
io_EN = "Ido"
|
||
is_IS = "Íslenska"
|
||
it_IT = "Italiano"
|
||
ja_JP = "日本語"
|
||
jbo_EN = "Lojban"
|
||
jv_ID = "Basa Jawa"
|
||
ka_GE = "ქართული"
|
||
kab_DZ = "Taqvaylit"
|
||
kk_KZ = "қазақша"
|
||
kmr_TR = "Kurdî (Kurmancî)"
|
||
kn_IN = "ಕನ್ನಡ"
|
||
ko_KR = "한국어"
|
||
ky_KG = "кыргызча"
|
||
la_LA = "Lingua Latina"
|
||
lb_LU = "Lëtzebuergesch"
|
||
lt_LT = "Lietuvių kalba"
|
||
lv_LV = "Latviešu valoda"
|
||
mg_MG = "Fiteny malagasy"
|
||
mk_MK = "македонски јази"
|
||
ml_IN = "മലയാളം"
|
||
mn_MN = "монгол"
|
||
mr_IN = "मराठी"
|
||
ms_MY = "Melayu"
|
||
nb_NO = "Norsk bokmål"
|
||
ne_NP = "नेपाली"
|
||
nl_NL = "Nederlands"
|
||
nn_NO = "Norsk nynorsk"
|
||
pi_IN = "पालि"
|
||
pl_PL = "Polski"
|
||
ps_AF = "پښتو"
|
||
pt_PT = "Português"
|
||
pt_BR = "Português (BR)"
|
||
ro_RO = "Română"
|
||
ru_RU = "русский язык"
|
||
ry_UA = "Русинська бисїда"
|
||
sa_IN = "संस्कृत"
|
||
sk_SK = "Slovenčina"
|
||
sl_SI = "Slovenščina"
|
||
sq_AL = "Shqip"
|
||
sr_SP = "Српски језик"
|
||
sv_SE = "Svenska"
|
||
sw_KE = "Kiswahili"
|
||
ta_IN = "தமிழ்"
|
||
tg_TJ = "тоҷикӣ"
|
||
th_TH = "ไทย"
|
||
tk_TM = "Türkmençe"
|
||
tl_PH = "Tagalog"
|
||
tp_TP = "Toki pona"
|
||
tr_TR = "Türkçe"
|
||
uk_UA = "українська"
|
||
ur_PK = "اُردُو"
|
||
uz_UZ = "oʻzbekcha"
|
||
vi_VN = "Tiếng Việt"
|
||
yo_NG = "Yorùbá"
|
||
zh_CN = "中文"
|
||
zh_TW = "繁體中文"
|
||
zu_ZA = "isiZulu"
|
||
|
||
|
||
def locale_to_str(loc: Locale) -> str:
|
||
return loc.name.replace("_", "-")
|
||
|
||
|
||
# Uses the name of the language (in said language) as the key.
|
||
native_to_locale: OrderedDict[str, Locale] = OrderedDict(
|
||
[(loc.value, loc) for loc in Locale]
|
||
)
|
||
|
||
# Uses an inferred/detected language as the key. Mapping was manually created
|
||
# using https://github.com/pemistahl/lingua-rs/blob/main/src/isocode.rs#L40 as
|
||
# a reference.
|
||
lang_to_locale: Dict[Language, Locale] = {
|
||
Language.CHINESE: Locale.zh_CN,
|
||
Language.CROATIAN: Locale.hr_HR,
|
||
Language.DANISH: Locale.da_DK,
|
||
Language.DUTCH: Locale.nl_NL,
|
||
Language.ENGLISH: Locale.en_GB,
|
||
Language.FINNISH: Locale.fi_FI,
|
||
Language.FRENCH: Locale.fr_FR,
|
||
Language.GERMAN: Locale.de_DE,
|
||
Language.HUNGARIAN: Locale.hu_HU,
|
||
Language.ITALIAN: Locale.it_IT,
|
||
Language.KOREAN: Locale.ko_KR,
|
||
Language.LATIN: Locale.la_LA,
|
||
Language.MALAY: Locale.ms_MY,
|
||
Language.PERSIAN: Locale.fa_IR,
|
||
Language.POLISH: Locale.pl_PL,
|
||
Language.PORTUGUESE: Locale.pt_PT,
|
||
Language.ROMANIAN: Locale.ro_RO,
|
||
Language.RUSSIAN: Locale.ru_RU,
|
||
Language.SLOVENE: Locale.sl_SI,
|
||
Language.SPANISH: Locale.es_ES,
|
||
Language.SWAHILI: Locale.sw_KE,
|
||
Language.SWEDISH: Locale.sv_SE,
|
||
Language.TAGALOG: Locale.tl_PH,
|
||
Language.TURKISH: Locale.tr_TR,
|
||
Language.UKRAINIAN: Locale.uk_UA,
|
||
Language.VIETNAMESE: Locale.vi_VN,
|
||
Language.YORUBA: Locale.yo_NG,
|
||
}
|