local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code;										-- get this wiki's language tag  --[[--------------------------< 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_t = { 	lang = key_to_lower ('মডিউল:ভাষা/উপাত্ত/আইএএনএ ভাষা', 'lang'), 	lang_dep = key_to_lower ('মডিউল:ভাষা/উপাত্ত/আইএএনএ ভাষা', 'lang_dep'), 	script = key_to_lower ('মডিউল:ভাষা/উপাত্ত/আইএএনএ লিপি'),				-- script keys are capitalized; set to lower 	region = key_to_lower ('মডিউল:ভাষা/উপাত্ত/আইএএনএ অঞ্চল'),				-- region keys are uppercase; set to lower 	variant = key_to_lower ('মডিউল:ভাষা/উপাত্ত/আইএএনএ রূপভেদ', 'var_sup'), 	suppressed = key_to_lower ('মডিউল:ভাষা/উপাত্ত/আইএএনএ অব্যক্ত লিপি', 'var_sup'),	-- script keys are capitalized; set to lower 	}  --[[--------------------------< I 1 8 N   M E D I A W I K I   O V E R R I D E >--------------------------------  For internationalization; not used at en.wiki  The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal.  MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition.  When desired, Module:Lang can use the MediaWiki  language list for the local language.  Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English).  When that happens add an appropriate entry to the override table below.  Caveat lector: the list of MediaWiki language names for your language may not be correct.  At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags.  Often it is simply spelling differences: 	bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho 	bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym 	dv: IANA: Dhivehi MW: Divehi 	el: IANA: Modern Greek MW: Greek 	ht: IANA: Haitian MW: Haitian Creole 	ky: IANA: Kirghiz MW: Kyrgyz 	li: IANA: Limburgan MW: Limburgish 	or: IANA: Oriya MW: Odia 	os: IANA: Ossetian MW: Ossetic 	"pa: IANA: Panjabi MW: Punjabi 	"ps: IANA: Pushto MW: Pashto 	"to: IANA: Tonga MW: Tongan 	"ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project  To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: 	=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language)  Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. 	 ]]  local media_wiki_override_enable = false;										-- set to true to override IANA names with MediaWiki names; always false at en.wiki 																				-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all 	if true == media_wiki_override_enable then 		local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all');	-- get a table of language tag/name pairs known to MediaWiki 		for tag, name in pairs (mw_languages_by_tag_t) do						-- loop through each tag/name pair in the MediaWiki list 			if lang_name_table_t.lang[tag] then									-- if the tag is in the main list 				lang_name_table_t.lang[tag] = name;								-- overwrite exisiting name with the name from MediaWiki 			end 		end 	end  --[[--------------------------< 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 >------------------------------------------------------------  	["ab"] = "আবখাজ",                                                          -- to match en.wiki article name 	["ca-valencia"] = "ভালেনসীয়", 	["xsc-x-sarmat"] = "সারমাতীয়", 	}  --[[--------------------------< 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 = { 	['kue'] = "Kuman language (New Guinea)",									-- Kuman (Papua New Guinea); to avoid Kuman dab page 	["lij"] = "Ligurian (Romance language)",									-- Ligurian; see Template_talk:Lang#Ligurian_dab 	['mbo'] = "Mbo language (Cameroon)",										-- Mbo (Cameroon) 	['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) 	['qwm'] = "Kuman (Russia)",													-- Kuman (Russia); to avoid Kuman dab page 	["snq"] = "Sangu language (Gabon)",											-- Sangu (Gabon) 	["toi"] = "Tonga language (Zambia and Zimbabwe)",                           -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page 	["xlg"] = "Ligurian (ancient language)",									-- see Template_talk:Lang#Ligurian_dab 	["zmw"] = "Mbo language (Congo)",											-- Mbo (Democratic Republic of Congo) 	}  --[=[-------------------------< 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  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', 		['hno'] = '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', 		['pnb'] = 'ISO 15919 Indic', 		['raj'] = 'ISO 15919 Indic', 		['sa'] = 'ISO 15919 Indic', 		['sat'] = 'ISO 15919 Indic', 		['sd'] = 'ISO 15919 Indic', 		['si'] = 'ISO 15919 Indic', 		['skr'] = '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 	{ 	this_wiki_lang_tag = this_wiki_lang_tag, 	this_wiki_lang_dir = lang_obj:getDir(),										-- wiki's language direction 	 	article_name = article_name, 	lang_name_table = lang_name_table_t, 	override = override, 	rtl_scripts = rtl_scripts, 	special_tags_table = special_tags_table, 	translit_title_table = translit_title_table, 	};