Modulus:Lang/data
Documentation for this module may be created at Modulus:Lang/data/doc
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------
primary table of tables that decode:
lang -> language tags and names
script -> ISO 15924 script tags
region -> ISO 3166 region tags
variant -> iana registered variant tags
suppressed -> map of scripts tags and their associated language tags
all of these data come from separate modules that are derived from the IANA language-subtag-registry file
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches
the first name.
]]
local function key_to_lower (module, src_type)
local out = {};
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data
if 'var_sup' == src_type then
for k, v in pairs (source) do
out[k:lower()] = v; -- for variant and suppressed everything is needed
end
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)
for k, v in pairs (source.active) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)
for k, v in pairs (source.deprecated) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
else -- here for all other sources
for k, v in pairs (source) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
end
return out;
end
local lang_name_table = {
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower
}
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------
Language codes and names in this table override the BCP47 names in lang_name_table.
indexes in this table shall always be lower case
]]
local override = {
["aa"] = "Afarice",
["ab"] = "Abasgice",
["ady"] = "Adygeice",
["ae"] = "Avestane",
["af"] = "lingua Batava Capitensi",
["ak"] = "linguis Akan",
["akk"] = "Accadice",
["am"] = "Amharice",
["an"] = "lingua Aragonensi",
["ang"] = "Anglosaxonice",
["ar"] = "Arabice",
["arc"] = "Aramaice",
["as"] = "Assamice",
["av"] = "Avarice",
["ay"] = "Aymarice",
["az"] = "Atropatenice",
["ba"] = "Baschkirice",
["be"] = "Albaruthenice",
["bg"] = "Bulgarice",
["bh"] = "lingua Bihari",
["bi"] = "Bislama",
["bm"] = "Bambara",
["bn"] = "Bengalice",
["bo"] = "Tibetane",
["br"] = "Britonice",
["bs"] = "Bosnice",
["ca"] = "Catalane",
["ce"] = "Tsetsenice",
["ch"] = "Chamoruane",
["co"] = "Corsice",
["cop"] = "Coptice",
["cr"] = "lingua Cree",
["crh"] = "Tatarice Taurice",
["cs"] = "Cechice",
["cu"] = "lingua Slavica ecclesiastica",
["cv"] = "Tschuwaschice",
["cy"] = "Cambrice",
["da"] = "Danice",
["de"] = "Theodisce",
["dv"] = "lingua Dhivehi",
["dz"] = "lingua Dzongkha",
["ee"] = "lingua Ewe",
["el"] = "Neograece",
["en"] = "Anglice",
["eo"] = "Esperantice",
["es"] = "Hispanice",
["et"] = "Estonice",
["eu"] = "Vasconice",
["fa"] = "Persice",
["ff"] = "lingua Fula",
["fi"] = "Finnice",
["fj"] = "lingua Vitiensi",
["fo"] = "lingua Faeroensi",
["fr"] = "Francogallice",
["fy"] = "lingua Frisica occidentali",
["ga"] = "Hibernice",
["gd"] = "Gadelice",
["gez"] = "Aethiopice",
["gl"] = "Gallaice",
["gn"] = "Guaranice",
["got"] = "Gothice",
["grc"]= "Graece",
["gu"] = "lingua Gujaratensi",
["gv"] = "lingua Monensi",
["ha"] = "Haussane",
["haw"] = "Havaiane",
["he"] = "Hebraice",
["hi"] = "Hindice",
["hno"] = "lingua Hindko",
["ho"] = "lingua Hiri Motu",
["hr"] = "Croatice",
["ht"] = "Haitiane",
["hu"] = "Hungarice",
["hy"] = "Armenice",
["hz"] = "lingua Herero",
["ia"] = "lingua Interlingua",
["id"] = "Indonesice",
["ie"] = "Interlingue",
["ig"] = "lingua Igbo",
["ii"] = "lingua Yi Sichuanensi",
["ik"] = "lingua Inupiaq",
["io"] = "lingua Ido",
["is"] = "Islandice",
["it"] = "Italiane",
["iu"] = "lingua Inuktitut",
["ja"] = "Iaponice",
["jv"] = "Iavanice",
["ka"] = "Georgiane",
["kg"] = "lingua Kongo",
["ki"] = "lingua Kikuyu",
["kj"] = "lingua Kuanyama",
["kk"] = "Casachice",
["kl"] = "Groenlandice",
["km"] = "Chmerice",
["kn"] = "Cannadice",
["ko"] = "Coreane",
["kr"] = "lingua Kanuri",
["ks"] = "Casmirice",
["ku"] = "Curdice",
["kv"] = "lingua Komiensi",
["kw"] = "Cornubice",
["ky"] = "Kyrgyzice",
["la"] = "Latine",
["lb"] = "Luxemburgice",
["lg"] = "lingua Luganda",
["li"] = "Limburgice",
["ln"] = "lingua Lingala",
["lo"] = "lingua Lao",
["lt"] = "Lituane",
["lu"] = "lingua Luba-Katanga",
["lv"] = "Lettonice",
["mg"] = "lingua Malagasiensi",
["mh"] = "lingua Marsaliensi",
["mi"] = "Maoriane",
["mk"] = "Macedonice",
["ml"] = "Malabarice",
["mn"] = "Mongolice",
["mnc"] = "Mandshurice",
["mr"] = "Marathice",
["ms"] = "Malaice",
["mt"] = "lingua Melitensi",
["my"] = "Birmanice",
["na"] = "Nauruanice",
["nb"] = "lingua Norvegica libraria",
["nd"] = "lingua Ndebele boreali",
["ne"] = "macrolingua Nepalensi",
["ng"] = "lingua Ndonga",
["nl"] = "Batavice",
["nn"] = "lingua Norvegica novella",
["no"] = "Norvegice",
["nr"] = "lingua Ndebele australi",
["nv"] = "lingua Navajo",
["ny"] = "lingua Nyanja",
["oc"] = "Occitane",
["oj"] = "lingua Ojibwayensi",
["om"] = "lingua Oromo",
["or"] = "lingua Orissensi",
["orv"] = "lingua Russica antiqua",
["os"] = "Ossetice",
["pa"] = "Pengabice",
["peo"] = "lingua Persica antiqua",
["phn"] = "Phoenicice",
["pi"] = "Palice",
["pl"] = "Polonice",
["pmt"] = "Tuamotuane",
["pnb"] = "lingua Pengabica occidentali",
["ps"] = "Afganice",
["pt"] = "Lusitane",
["qu"] = "lingua Quechua",
["rm"] = "Rhaetice",
["rn"] = "lingua Rundi",
["ro"] = "Dacoromanice",
["ru"] = "Russice",
["rw"] = "lingua Rwanda",
["sa"] = "Sanscritice",
["sc"] = "Sarde",
["scn"] = "Sicule",
["sd"] = "Sindhuice",
["se"] = "lingua Lapponica septentrionali",
["sg"] = "lingua Sango",
["sh"] = "Serbocroatice",
["si"] = "lingua Singhalensi",
["sk"] = "Moravice",
["sl"] = "Slovene",
["sm"] = "Samoane",
["sn"] = "lingua Shona",
["so"] = "Somalice",
["sq"] = "Albanice",
["sr"] = "Serbice",
["ss"] = "lingua Swati",
["st"] = "lingua Sotho australi",
["su"] = "lingua Sundanensi",
["sux"] = "Sumerice",
["sv"] = "Suedice",
["sw"] = "Suahelice",
["syr"] = "Syriace",
["ta"] = "Tamulice",
["te"] = "Telingane",
["tg"] = "Tadiciane",
["th"] = "lingua Thai",
["ti"] = "lingua Tigrinya",
["tk"] = "Turcomannice",
["tl"] = "lingua Tagalog",
["tli"] = "Tlingitice",
["tn"] = "lingua Tswana",
["to"] = "Tongane",
["tr"] = "Turcice",
["ts"] = "lingua Tsonga",
["tt"] = "Tatarice",
["tw"] = "lingua Twi",
["ty"] = "Tahitiane",
["ug"] = "Uigurice",
["uk"] = "Ucrainice",
["ur"] = "lingua Urdu",
["uz"] = "Uzbecice",
["ve"] = "lingua Venda",
["vi"] = "Vietnamice",
["vo"] = "lingua Volapük",
["wa"] = "Vallonice",
["wo"] = "lingua Wolof",
["xh"] = "Xosane",
["xmf"] = "Mingrelice",
["xpu"] = "Punice",
["yi"] = "Iudaeogermanice",
["yo"] = "lingua Yoruba",
["za"] = "lingua Zhuang",
["zh"] = "Sinice",
["zu"] = "Zuluane"
}
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as
that is the long-standing method of handling article names that don't fit with the normal pattern
]]
local article_name = {
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages
['mnr'] = "Mono language (California)", -- Mono (USA)
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab
}
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]
last update to this list: 2017-12-24
]=]
local rtl_scripts = {
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',
};
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------
This is a table of tables of transliteration standards and the language codes or language scripts that apply to
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed
by some of the {{lang-??}} templates.
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for
the cases when no |std= parameter value is provided.
]]
local translit_title_table = {
['ahl'] = {
['default'] = 'Academy of the Hebrew Language transliteration',
},
['ala'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['ala-lc'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['batr'] = {
['default'] = 'Bikdash Arabic Transliteration Rules',
},
['bgn/pcgn'] = {
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',
},
['din'] = {
['ar'] = 'DIN 31635 Arabic',
['fa'] = 'DIN 31635 Arabic',
['ku'] = 'DIN 31635 Arabic',
['ps'] = 'DIN 31635 Arabic',
['tg'] = 'DIN 31635 Arabic',
['ug'] = 'DIN 31635 Arabic',
['ur'] = 'DIN 31635 Arabic',
['arab'] = 'DIN 31635 Arabic',
['default'] = 'DIN transliteration',
},
['eae'] = {
['default'] = 'Encyclopaedia Aethiopica transliteration',
},
['hepburn'] = {
['default'] = 'Hepburn transliteration',
},
['hunterian'] = {
['default'] = 'Hunterian transliteration',
},
['iast'] = {
['default'] = 'International Alphabet of Sanskrit transliteration',
},
['iso'] = { -- when a transliteration standard is supplied
['ab'] = 'ISO 9 Cyrillic',
['ba'] = 'ISO 9 Cyrillic',
['be'] = 'ISO 9 Cyrillic',
['bg'] = 'ISO 9 Cyrillic',
['kk'] = 'ISO 9 Cyrillic',
['ky'] = 'ISO 9 Cyrillic',
['mn'] = 'ISO 9 Cyrillic',
['ru'] = 'ISO 9 Cyrillic',
['tg'] = 'ISO 9 Cyrillic',
['uk'] = 'ISO 9 Cyrillic',
['bua'] = 'ISO 9 Cyrillic',
['sah'] = 'ISO 9 Cyrillic',
['tut'] = 'ISO 9 Cyrillic',
['xal'] = 'ISO 9 Cyrillic',
['cyrl'] = 'ISO 9 Cyrillic',
['ar'] = 'ISO 233 Arabic',
['ku'] = 'ISO 233 Arabic',
['ps'] = 'ISO 233 Arabic',
['ug'] = 'ISO 233 Arabic',
['ur'] = 'ISO 233 Arabic',
['arab'] = 'ISO 233 Arabic',
['he'] = 'ISO 259 Hebrew',
['yi'] = 'ISO 259 Hebrew',
['hebr'] = 'ISO 259 Hebrew',
['el'] = 'ISO 843 Greek',
['grc'] = 'ISO 843 Greek',
['ja'] = 'ISO 3602 Japanese',
['hira'] = 'ISO 3602 Japanese',
['hrkt'] = 'ISO 3602 Japanese',
['jpan'] = 'ISO 3602 Japanese',
['kana'] = 'ISO 3602 Japanese',
['zh'] = 'ISO 7098 Chinese',
['chi'] = 'ISO 7098 Chinese',
['pny'] = 'ISO 7098 Chinese',
['zho'] = 'ISO 7098 Chinese',
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?
['hans'] = 'ISO 7098 Chinese',
['hant'] = 'ISO 7098 Chinese',
['ka'] = 'ISO 9984 Georgian',
['kat'] = 'ISO 9984 Georgian',
['arm'] = 'ISO 9985 Armenian',
['hy'] = 'ISO 9985 Armenian',
['th'] = 'ISO 11940 Thai',
['tha'] = 'ISO 11940 Thai',
['ko'] = 'ISO 11941 Korean',
['kor'] = 'ISO 11941 Korean',
['awa'] = 'ISO 15919 Indic',
['bho'] = 'ISO 15919 Indic',
['bn'] = 'ISO 15919 Indic',
['bra'] = 'ISO 15919 Indic',
['doi'] = 'ISO 15919 Indic',
['dra'] = 'ISO 15919 Indic',
['gon'] = 'ISO 15919 Indic',
['gu'] = 'ISO 15919 Indic',
['hi'] = 'ISO 15919 Indic',
['inc'] = 'ISO 15919 Indic',
['kn'] = 'ISO 15919 Indic',
['kok'] = 'ISO 15919 Indic',
['ks'] = 'ISO 15919 Indic',
['mag'] = 'ISO 15919 Indic',
['mai'] = 'ISO 15919 Indic',
['ml'] = 'ISO 15919 Indic',
['mr'] = 'ISO 15919 Indic',
['ne'] = 'ISO 15919 Indic',
['new'] = 'ISO 15919 Indic',
['or'] = 'ISO 15919 Indic',
['pa'] = 'ISO 15919 Indic',
['raj'] = 'ISO 15919 Indic',
['sa'] = 'ISO 15919 Indic',
['sat'] = 'ISO 15919 Indic',
['sd'] = 'ISO 15919 Indic',
['si'] = 'ISO 15919 Indic',
['ta'] = 'ISO 15919 Indic',
['tcy'] = 'ISO 15919 Indic',
['te'] = 'ISO 15919 Indic',
['beng'] = 'ISO 15919 Indic',
['brah'] = 'ISO 15919 Indic',
['deva'] = 'ISO 15919 Indic',
['gujr'] = 'ISO 15919 Indic',
['guru'] = 'ISO 15919 Indic',
['knda'] = 'ISO 15919 Indic',
['mlym'] = 'ISO 15919 Indic',
['orya'] = 'ISO 15919 Indic',
['sinh'] = 'ISO 15919 Indic',
['taml'] = 'ISO 15919 Indic',
['telu'] = 'ISO 15919 Indic',
['default'] = 'ISO transliteration',
},
['jyutping'] = {
['default'] = 'Jyutping transliteration',
},
['mlcts'] = {
['default'] = 'Myanmar Language Commission Transcription System',
},
['mr'] = {
['default'] = 'McCune–Reischauer transliteration',
},
['nihon-shiki'] = {
['default'] = 'Nihon-shiki transliteration',
},
['no_std'] = { -- when no transliteration standard is supplied
['akk'] = 'Semitic transliteration',
['sem'] = 'Semitic transliteration',
['phnx'] = 'Semitic transliteration',
['xsux'] = 'Cuneiform transliteration',
},
['pinyin'] = {
['default'] = 'Pinyin transliteration',
},
['rr'] = {
['default'] = 'Revised Romanization of Korean transliteration',
},
['rtgs'] = {
['default'] = 'Royal Thai General System of Transcription',
},
['satts'] = {
['default'] = 'Standard Arabic Technical Transliteration System transliteration',
},
['scientific'] = {
['default'] = 'scientific transliteration',
},
['ukrainian'] = {
['default'] = 'Ukrainian National system of romanization',
},
['ungegn'] = {
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',
},
['wadegile'] = {
['default'] = 'Wade–Giles transliteration',
},
['wehr'] = {
['default'] = 'Hans Wehr transliteration',
},
};
return
{
article_name = article_name,
lang_name_table = lang_name_table,
override = override,
rtl_scripts = rtl_scripts,
special_tags_table = special_tags_table,
translit_title_table = translit_title_table,
};