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.

]]

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 = { --< 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 ["nl-be"] = "Flemish",														-- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto",															-- Pushto ["pt-br"] = "Brazilian Portuguese",											-- match MediaWiki ["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 >--

["alv"] = "Atlantic–Congo languages",										-- to match en.wiki article title (endash) ["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 ["esx"] = "Eskimo–Aleut languages",											-- to match en.wiki article title (endash) ["frr"] = "North Frisian",													-- Northern Frisian ["frs"] = "East Frisian Low Saxon",											-- Eastern Frisian ["gsw-fr"] = "Alsatian",													-- match MediaWiki ["hmx"] = "Hmong–Mien languages",											-- to match en.wiki article title (endash) ["ilo"] = "Ilocano",														-- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois",												-- Jamaican Creole English ["luo"] = "Dholuo",															-- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari",													-- Eastern Mari ["mid"] = "Modern Mandaic",													-- Mandaic ["mkh"] = "Mon–Khmer languages",											-- to match en.wiki article title (endash) ["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 ["new"] = "Newar",															-- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages",										-- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages",											-- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman",															-- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais",													-- match MediaWiki ["nrf-je"] = "Jèrriais",													-- match MediaWiki ["nzi"] = "Nzema",															-- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca",													-- to match en.wiki article title (endash) ["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 ["sdo"] = "Bukar–Sadong",													-- Bukar-Sadung Bidayuh; to match en.wiki article title ["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 ["yuf"] = "Havasupai–Hualapai",												-- Havasupai-Walapai-Yavapai; to match en.wiki article title

-- 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, Classical Nepal Bhasa, Old 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, };