Module:Lang/data

--[[--< 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.

TODO: instead of returning: ["key"] = {"name"} where each table has only one name, return ["key"] = "name" requires changes in Module:Lang.

]]

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, 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 = { --< I S O _ 6 3 9 - 1 >

["ca-valencia"] = {"Valencian"}, ["cu"] = {"Church Slavonic"},												-- 2nd IANA name; ["de-at"] = {"Austrian German"},											-- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = {"Swiss Standard German"}, ["en-au"] = {"Australian English"}, ["en-ca"] = {"Canadian English"}, ["en-emodeng"] = {"Early Modern English"}, ["en-gb"] = {"British English"}, ["en-ie"] = {"Irish English"}, ["en-in"] = {"Indian English"}, ["en-nz"] = {"New Zealand English"}, ["en-us"] = {"American English"}, ["en-za"] = {"South African English"}, ["fy"] = {"West Frisian"},													-- Western Frisian ["mo"] = {"Moldovan"},														-- Moldavian (deprecated code); to match en.wiki article title ["oc-provenc"] = {"Provençal"}, ["ps"] = {"Pashto"},														-- Pushto ["tw-asante"] = {"Asante Twi"},

-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages ---- ["av"] = {"Avar"},														-- Avaric ["bo"] = {"Standard Tibetan"},											-- Tibetan ["el"] = {"Greek"},														-- Modern Greek --		["en-SA"] = {"South African English"},									-- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = {"Fula"},														-- Fulah ["ht"] = {"Haitian Creole"},											-- Haitian ["hz"] = {"Otjiherero"},												-- Herero ["ii"] = {"Yi"},														-- Sichuan Yi		["ki"] = {"Gikuyu"},													-- Kikuyu ["kl"] = {"Greenlandic"},												-- Kalaallisut ["ky"] = {"Kyrgyz"},													-- Kirghiz ["lg"] = {"Luganda"},													-- Ganda ["li"] = {"Limburgish"},												-- Limburgan ["mi"] = {"Māori"},														-- Maori ["na"] = {"Nauruan"},													-- Nauru ["nb"] = {"Bokmål"},													-- Norwegian Bokmål ["nd"] = {"Northern Ndebele"},											-- North Ndebele ["nn"] = {"Nynorsk"},													-- Norwegian Nynorsk ["nr"] = {"Southern Ndebele"},											-- South Ndebele ["ny"] = {"Chichewa"},													-- Nyanja ["oj"] = {"Ojibwe"},													-- Ojibwa ["or"] = {"Odia"},														-- Oriya ["pa"] = {"Punjabi"},													-- Panjabi ["rn"] = {"Kirundi"},													-- Rundi ["sl"] = {"Slovene"},													-- Slovenian ["ss"] = {"Swazi"},														-- Swati ["st"] = {"Sotho"},														-- Southern Sotho ["to"] = {"Tongan"},													-- Tonga ----

--< I S O _ 6 3 9 - 2,  - 3,   - 5 >--

["arc"] = {"Aramaic"},														-- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); ["art"] = {"constructed"},													-- to match en.wiki article; lowercase for category name ["bhd"] = {"Bhadarwahi"},													-- Bhadrawahi; to match en.wiki article title ["bla"] = {"Blackfoot"},													-- Siksika; to match en.wiki article title ["bua"] = {"Buryat"},														-- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = {"Mongolian Buryat"},												-- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = {"Russian Buryat"},												-- Russia Buriat; ["bxu"] = {"Chinese Buryat"},												-- China Buriat; ["byr"] = {"Yipma"},														-- Baruya, Yipma ["egy"] = {"Ancient Egyptian"},												-- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = {"Alutiiq"},														-- Pacific Gulf Yupik; to match en.wiki article title ["frr"] = {"North Frisian"},												-- Northern Frisian ["frs"] = {"East Frisian Low Saxon"},										-- Eastern Frisian ["ilo"] = {"Ilocano"},														-- Iloko; to match en.wiki article title ["jam"] = {"Jamaican Patois"},												-- Jamaican Creole English ["mhr"] = {"Meadow Mari"},													-- Eastern Mari ["mid"] = {"Modern Mandaic"},												-- Mandaic ["mla"] = {"Tamambo"},														-- Malo ['mte'] = {"Mono-Alu"},														-- Mono (Solomon Islands) ["nan-tw"] = {"Taiwanese Hokkien"},											-- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["nrf"] = {"Norman"},														-- not quite a collective - IANA name: Jèrriais; categorizes to Norman-language text ["nzi"] = {"Nzema"},														-- Nzima; to match en.wiki article title ["orv"] = {"Old East Slavic"},												-- Old Russian ["pfl"] = {"Palatine German"},												-- Pfaelzisch; to match en.wiki article ["pms"] = {"Piedmontese"},													-- Piemontese; to match en.wiki article title ["pnb"] = {"Punjabi (Western)"},											-- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name ["stq"] = {"Saterland Frisian"},											-- Saterfriesisch ["und"] = {"undetermined"},													-- capitalization to match existing category ["wrg"] = {"Warrongo"},														-- Warungu ["xal-ru"] = {"Kalmyk"},													-- to match en.wiki article title ["xgf"] = {"Tongva"},														-- ISO 639-3 is Gabrielino-Fernandeño

-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages ---- ["ace"] = {"Acehnese"},													-- Achinese ["aec"] = {"Sa'idi Arabic"},											-- Saidi Arabic ["akl"] = {"Aklan"},													-- Aklanon ["alt"] = {"Altay"},													-- Southern Altai ["apm"] = {"Mescalero-Chiricahua"},										-- Mescalero-Chiricahua Apache ["bal"] = {"Balochi"},													-- Baluchi ["bcl"] = {"Central Bicolano"},											-- Central Bikol ["bin"] = {"Edo"},														-- Bini ["bpy"] = {"Bishnupriya Manipuri"},										-- Bishnupriya ["chg"] = {"Chagatay"},													-- Chagatai ["ckb"] = {"Sorani Kurdish"},											-- Central Kurdish ["cnu"] = {"Shenwa"},													-- Chenoua ["coc"] = {"Cocopah"},													-- Cocopa ["diq"] = {"Zazaki"},													-- Dimli ["fit"] = {"Meänkieli"},												-- Tornedalen Finnish ["fkv"] = {"Kven"},														-- Kven Finnish ["frk"] = {"Old Frankish"},												-- Frankish ["gez"] = {"Ge'ez"},													-- Geez ["gju"] = {"Gujari"},													-- Gujari ["gsw"] = {"Alemannic German"},											-- Swiss German ["gul"] = {"Gullah"},													-- Sea Island Creole English ["hak"] = {"Hakka"},													-- Hakka Chinese ["hbo"] = {"Biblical Hebrew"},											-- Ancient Hebrew ["hnd"] = {"Hindko"},													-- Southern Hindko --		["ikt"] = {"Inuvialuk"},												-- Inuinnaqtun ["kaa"] = {"Karakalpak"},												-- Kara-Kalpak ["khb"] = {"Tai Lü"},													-- Lü		["kmr"] = {"Kurmanji Kurdish"},											-- Northern Kurdish ["kpo"] = {"Kposo"},													-- Ikposo ["krj"] = {"Kinaray-a"},												-- Kinaray-A ["ktz"] = {"Juǀ'hoan"},													-- Juǀʼhoan ["lez"] = {"Lezgian"},													-- Lezghian ["liv"] = {"Livonian"},													-- Liv ["lng"] = {"Lombardic"},												-- Langobardic ["mia"] = {"Miami-Illinois"},											-- Miami ["miq"] = {"Miskito"},													-- Mískito ["mix"] = {"Mixtec"},													-- Mixtepec Mixtec ["mni"] = {"Meitei"},													-- Manipuri ["mrj"] = {"Hill Mari"},												-- Western Mari ["mww"] = {"White Hmong"},												-- Hmong Daw ["nds-nl"] = {"Dutch Low Saxon"},										-- Low German ["new"] = {"Nepal Bhasa"},												-- Newari ["nso"] = {"Northern Sotho"},											-- Pedi ["nwc"] = {"Classical Nepal Bhasa"},									-- Classical Newari ["ood"] = {"O'odham"},													-- Tohono O'odham ["otk"] = {"Old Turkic"},												-- Old Turkish ["pal"] = {"Middle Persian"},											-- Pahlavi ["pam"] = {"Kapampangan"},												-- Pampanga ["phr"] = {"Potwari"},													-- Pahari-Potwari ["pka"] = {"Jain Prakrit"},												-- Ardhamāgadhī Prākrit --		["pnb"] = {"Punjabi"},													-- Western Panjabi ["psu"] = {"Shauraseni"},												-- Sauraseni Prākrit ["rap"] = {"Rapa Nui"},													-- Rapanui ["rar"] = {"Cook Islands Māori"},										-- Rarotongan ["rmu"] = {"Scandoromani"},												-- Tavringer Romani ["rom"] = {"Romani"},													-- Romany ["rup"] = {"Aromanian"},												-- Macedo-Romanian ["ryu"] = {"Okinawan"},													-- Central Okinawan ["sdc"] = {"Sassarese"},												-- Sassarese Sardinian ["sdn"] = {"Gallurese"},												-- Gallurese Sardinian ["shp"] = {"Shipibo"},													-- Shipibo-Conibo ["src"] = {"Logudorese"},												-- Logudorese Sardinian ["sro"] = {"Campidanese"},												-- Campidanese Sardinian ["tkl"] = {"Tokelauan"},												-- Tokelau ["tvl"] = {"Tuvaluan"},													-- Tuvalu ["tyv"] = {"Tuvan"},													-- Tuvinian ["vls"] = {"West Flemish"},												-- Vlaams ["wep"] = {"Westphalian"},												-- Westphalien ["xal"] = {"Oirat"},													-- Kalmyk ["xcl"] = {"Old Armenian"},												-- Classical Armenian ["yua"] = {"Yucatec Maya"},												-- Yucateco ----

--< P R I V A T E _ U S E _ T A G S >--

["cel-x-proto"] = {"Proto-Celtic"},											-- cel in IANA is Celtic languages ["gem-x-proto"] = {"Proto-Germanic"},										-- gem in IANA is Germanic languages ["gmw-x-ecg"] = {"East Central German"}, ["grc-x-aeolic"] = {"Aeolic Greek"},										-- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = {"Attic Greek"}, ["grc-x-biblical"] = {"Biblical Greek"}, ["grc-x-byzant"] = {"Byzantine Greek"}, ["grc-x-classic"] = {"Classical Greek"}, ["grc-x-doric"] = {"Doric Greek"}, ["grc-x-hellen"] = {"Hellenistic Greek"}, ["grc-x-ionic"] = {"Ionic Greek"}, ["grc-x-koine"] = {"Koinē Greek"}, ["grc-x-medieval"] = {"Medieval Greek"}, ["grc-x-patris"] = {"Patristic Greek"}, ["grk-x-proto"] = {"Proto-Greek"},											-- grk in IANA is Greek languages ["iir-x-proto"] = {"Proto-Indo-Iranian"},									-- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = {"Proto-Indo-European"}, ["ira-x-proto"] = {"Proto-Iranian"},										-- ira in IANA is Iranian languages ["itc-x-proto"] = {"Proto-Italic"},											-- itc in IANA is Italic languages ["ksh-x-colog"] = {"Colognian"},											-- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = {"Medieval Latin"}, ["mis-x-ripuar"] = {"Ripuarian"},											-- replaces improper use of ksh in wp_languages ["sem-x-proto"] = {"Proto-Semitic"}, ["sla-x-proto"] = {"Proto-Slavic"},											-- sla in IANA is Slavic languages ["yuf-x-hav"] = {"Havasupai"},												-- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = {"Walapai"}, ["yuf-x-yav"] = {"Yavapai"}, }

--[[--< 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', 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

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 templates.

These tables are more-or-less copied directly from. 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', },

['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, translit_title_table = translit_title_table, };