You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koreader/frontend/ui/data/isolanguage.lua

343 lines
8.9 KiB
Lua

local _ = require("gettext")
local locale_lang_map = {
-- from https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3.tab
-- first chunk of names are languages present in iso-639-1
-- @translators Most of these language name have already been translated at <https://hosted.weblate.org/projects/iso-codes/iso-639-2/>. Click "Automatic suggestions" to see them below the textfield.
aar = _("Afar"),
afr = _("Afrikaans"),
ara = _("Arabic"), -- macrolanguage
asm = _("Assamese"),
aze = _("Azerbaijani"), -- macrolanguage
bak = _("Bashkir"),
bel = _("Belarusian"),
ben = _("Bengali"),
bod = _("Tibetan"),
bre = _("Breton"),
bul = _("Bulgarian"),
ces = _("Czech"),
chu = _("Church Slavic"),
cor = _("Cornish"),
cym = _("Welsh"),
dan = _("Danish"),
deu = _("German"),
div = _("Dhivehi"),
ell = _("Modern Greek"), -- (1453-)
eng = _("English"),
epo = _("Esperanto"), -- constructed language
est = _("Estonian"), -- macrolanguage
eus = _("Basque"),
fao = _("Faroese"),
fas = _("Persian"), -- macrolanguage
fin = _("Finnish"),
fra = _("French"),
fry = _("Western Frisian"),
gla = _("Scottish Gaelic"),
gle = _("Irish"),
glg = _("Galician"),
glv = _("Manx"),
guj = _("Gujarati"),
hat = _("Haitian"),
hau = _("Hausa"),
hbs = _("Serbo-Croatian"), -- macrolanguage
heb = _("Hebrew"),
hin = _("Hindi"),
hun = _("Hungarian"),
hye = _("Armenian"),
ido = _("Ido"), -- constructed language
ina = _("Interlingua"), -- (International Auxiliary Language Association) constructed language
ind = _("Indonesian"),
isl = _("Icelandic"),
ita = _("Italian"),
jav = _("Javanese"),
jpn = _("Japanese"),
kal = _("Kalaallisut"),
kan = _("Kannada"),
kas = _("Kashmiri"),
kat = _("Georgian"),
kaz = _("Kazakh"),
khm = _("Khmer"),
kik = _("Kikuyu"),
kir = _("Kirghiz"),
kor = _("Korean"),
kur = _("Kurdish"), -- macrolanguage
lao = _("Lao"),
lat = _("Latin"),
lav = _("Latvian"), -- macrolanguage
lit = _("Lithuanian"),
ltz = _("Luxembourgish"),
mah = _("Marshallese"),
mal = _("Malayalam"),
mar = _("Marathi"),
mkd = _("Macedonian"),
mlg = _("Malagasy"), -- macrolanguage
mlt = _("Maltese"),
mon = _("Mongolian"), -- macrolanguage
mri = _("Maori"),
msa = _("Malay"), -- macrolanguage
mya = _("Burmese"),
nav = _("Navajo"),
nld = _("Dutch"),
nno = _("Norwegian Nynorsk"),
nob = _("Norwegian Bokmål"),
nor = _("Norwegian"), -- macrolanguage
oci = _("Occitan"), -- (post 1500)
orm = _("Oromo"), -- macrolanguage
pan = _("Panjabi"),
pli = _("Pali"),
pol = _("Polish"),
por = _("Portuguese"),
pus = _("Pushto"), -- macrolanguage
que = _("Quechua"), -- macrolanguage
roh = _("Romansh"),
ron = _("Romanian"),
rus = _("Russian"),
san = _("Sanskrit"),
slk = _("Slovak"),
slv = _("Slovenian"),
spa = _("Spanish"),
sqi = _("Albanian"), -- macrolanguage
srp = _("Serbian"),
ssw = _("Swati"),
sun = _("Sundanese"),
swa = _("Swahili"), -- macrolanguage
swe = _("Swedish"),
tam = _("Tamil"),
tat = _("Tatar"),
tel = _("Telugu"),
tgk = _("Tajik"),
tgl = _("Tagalog"),
tha = _("Thai"),
tur = _("Turkish"),
uig = _("Uighur"),
ukr = _("Ukrainian"),
urd = _("Urdu"),
uzb = _("Uzbek"), -- macrolanguage
vie = _("Vietnamese"),
vol = _("Volapük"), -- constructed language
wln = _("Walloon"),
xho = _("Xhosa"),
yid = _("Yiddish"), -- macrolanguage
yor = _("Yoruba"),
zha = _("Zhuang"), -- macrolanguage
zho = _("Chinese"), -- macrolanguage
zul = _("Zulu"),
-- second chunk of names are languages present in iso-639-2
-- this is only as complete as it needs to be to cover the languages in dictionaries.lua
-- @translators Most of these language name have already been translated at <https://hosted.weblate.org/projects/iso-codes/iso-639-2/>. Click "Automatic suggestions" to see them below the textfield.
ady = _("Adyghe"),
alt = _("Southern Altai"),
ang = _("Old English"), -- (ca. 450-1100)
arc = _("Official Aramaic"), -- (700-300 BCE)
ast = _("Asturian"),
bik = _("Bikol"), -- macrolanguage
ceb = _("Cebuano"),
chr = _("Cherokee"),
cop = _("Coptic"),
crh = _("Crimean Tatar"),
dsb = _("Lower Sorbian"),
dum = _("Middle Dutch"), -- (ca. 1050-1350)
enm = _("Middle English"), -- (1100-1500)
frm = _("Middle French"), -- (ca. 1400-1600)
fro = _("Old French"), -- (842-ca. 1400)
fur = _("Friulian"),
goh = _("Old High German"), -- (ca. 750-1050)
got = _("Gothic"),
grc = _("Ancient Greek"), -- (to 1453)
gsw = _("Swiss German"),
haw = _("Hawaiian"),
hil = _("Hiligaynon"),
kum = _("Kumyk"),
lad = _("Ladino"),
mnc = _("Manchu"),
nds = _("Low German"),
non = _("Old Norse"),
ota = _("Ottoman Turkish"), -- (1500-1928)
rup = _("Macedo-Romanian"),
sah = _("Yakut"),
scn = _("Sicilian"),
sco = _("Scots"),
sga = _("Old Irish"), -- (to 900)
shn = _("Shan"),
sux = _("Sumerian"),
syc = _("Classical Syriac"),
tpi = _("Tok Pisin"),
-- third chunk of names are only present in iso639-3 standard
-- this is only as complete as it needs to be to cover the languages in dictionaries.lua
-- @translators Most of these language name have already been translated at <https://hosted.weblate.org/projects/iso-codes/iso-639-2/>. Click "Automatic suggestions" to see them below the textfield.
aii = _("Assyrian Neo-Aramaic"),
apc = _("Levantine Arabic"),
ary = _("Moroccan Arabic"),
bnt = _("Bantu"),
cim = _("Cimbrian"),
cmn = _("Mandarin Chinese"),
dlm = _("Dalmatian"),
hrx = _("Hunsrik"),
izh = _("Ingrian"),
jje = _("Jejueo"),
kea = _("Kabuverdianu"),
lld = _("Ladin"),
lzz = _("Laz"),
mch = _("Maquiritari"),
nch = _("Central Huasteca Nahuatl"),
nci = _("Classical Nahuatl"),
nrf = _("Jèrriais"), -- Norman
pdc = _("Pennsylvania German"),
pdt = _("Plautdietsch"),
phl = _("Phalura"),
stq = _("Saterfriesisch"), -- Saterland Frisian
tft = _("Ternate"),
txb = _("Tokharian B"),
txg = _("Tangut"),
vec = _("Venetian"),
vep = _("Veps"),
wym = _("Wymysorys"), -- Vilamovian
xcl = _("Classical Armenian"),
yol = _("Yola"),
yue = _("Yue Chinese"),
-- these are made up language codes for very specific languages which do not map to a specific ISO3 code
xxpf = _("Proto-Finnic"),
xxpg = _("Proto-Germanic"),
xxpw = _("Proto-West Germanic"),
xxps = _("Proto-Sami"),
xxsl = _("Proto-Slavic"),
}
local iso_bcp47_map = {
aar = "aa",
afr = "af",
ara = "ar",
asm = "as",
aze = "az",
bak = "ba",
bel = "be",
bul = "bg",
ben = "bn",
bod = "bo",
bre = "br",
ces = "cs",
chu = "cu",
cym = "cy",
dan = "da",
deu = "de",
div = "dv",
ell = "el",
eng = "en",
epo = "eo",
spa = "es",
est = "et",
eus = "eu",
fas = "fa",
fin = "fi",
fao = "fo",
fra = "fr",
fry = "fy",
gle = "ga",
gla = "gd",
glg = "gl",
glv = "gv",
hau = "ha",
heb = "he",
hin = "hi",
hat = "ht",
hun = "hu",
hye = "hy",
ina = "ia",
ind = "id",
ido = "io",
isl = "is",
ita = "it",
jpn = "ja",
jav = "jv",
kat = "ka",
kik = "ki",
kaz = "kk",
kal = "kl",
khm = "km",
kan = "kn",
kor = "ko",
kas = "ks",
kur = "ku",
cor = "kw",
kir = "ky",
lat = "la",
ltz = "lb",
lao = "lo",
lit = "lt",
lav = "lv",
mlg = "mg",
mah = "mh",
mri = "mi",
mkd = "mk",
mal = "ml",
mon = "mn",
mar = "mr",
msa = "ms",
mlt = "mt",
mya = "my",
nob = "nb",
nld = "nl",
nno = "nn",
nor = "no",
nav = "nv",
oci = "oc",
orm = "om",
pan = "pa",
pli = "pi",
pol = "pl",
pus = "ps",
por = "pt",
que = "qu",
roh = "rm",
ron = "ro",
rus = "ru",
san = "sa",
hbs = "sh",
slk = "sk",
slv = "sl",
sqi = "sq",
srp = "sr",
ssw = "ss",
sun = "su",
swe = "sv",
swa = "sw",
tam = "ta",
tel = "te",
tgk = "tg",
tha = "th",
tgl = "tl",
tur = "tr",
tat = "tt",
uig = "ug",
ukr = "uk",
urd = "ur",
uzb = "uz",
vie = "vi",
vol = "vo",
wln = "wa",
xho = "xh",
yid = "yi",
yor = "yo",
zha = "za",
zho = "zh",
zul = "zu",
}
local IsoLanguage = {}
function IsoLanguage:getLocalizedLanguage(iso3_language)
local language = locale_lang_map[iso3_language]
return language or iso3_language
end
function IsoLanguage:getBCPLanguageTag(iso3_language)
-- BCP47 language tag is either the ISO2 code, or ISO3 if no ISO2 exists for it
return iso_bcp47_map[iso3_language] or iso3_language
end
return IsoLanguage