跳转到内容

模块:Lang/data/sandbox

维基百科,自由的百科全书
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_t = (('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_t) do
			out[k:lower()] = v;													-- for variant and suppressed everything is needed
		end

	elseif 'lang' == src_type and source_t.active then							-- for ~/iana_languages (active)
		for k, v in pairs (source_t.active) do
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only
		end

	elseif 'lang_dep' == src_type and source_t.deprecated then					-- for ~/iana_languages (deprecated)
		for k, v in pairs (source_t.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_t) 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 ('Module:Lang/data/iana languages', 'lang'),
	lang_dep = key_to_lower ('Module:Lang/data/iana languages', 'lang_dep'),
	script = key_to_lower ('Module:Lang/data/iana scripts'),					-- script keys are capitalized; set to lower
	region = key_to_lower ('Module:Lang/data/iana regions'),					-- region keys are uppercase; set to lower
	variant = key_to_lower ('Module:Lang/data/iana variants', 'var_sup'),
	suppressed = key_to_lower ('Module:Lang/data/iana suppressed scripts', '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 >------------------------------------------------------------
    --显示中文及查找目录所用,必须使用繁体中文
	["aa"] = "阿法爾語",														-- Afar
	["ab"] = "阿布哈茲語",													-- Abkhazian
	["ae"] = "阿維斯陀語",													-- Avestan
	["af"] = "南非語",														-- Afrikaans
	["ak"] = "阿坎語",														-- Akan
	["am"] = "阿姆哈拉語",													-- Amharic
	["an"] = "亞拉岡語",														-- Aragonese
	["ar"] = "阿拉伯語",
	["as"] = "阿薩姆語",
	["av"] = "阿瓦爾語",														-- Avaric
	["ay"] = "艾馬拉語",														-- Aymara
	["az"] = "亞塞拜然語",													-- Azerbaijani
	["ba"] = "巴什基爾語",													-- Bashkir
	["be"] = "白俄羅斯語",													
	["bg"] = "保加利亞語",													
	["bh"] = "比哈爾語",														-- Bihari languages; collective
	["bi"] = "比斯拉馬語",
	["bm"] = "班巴拉語",														-- Bambara, Bamanankan
	["bn"] = "孟加拉語",
	["bo"] = "標準藏語",														-- Tibetan
	["br"] = "布列塔尼語",													-- Brezhoneg
	["bs"] = "波斯尼亞語",
	["bua"] = "布里亞特語",													-- Syriac
	["ca"] = "加泰隆尼亞語",
	["ce"] = "車臣語",
	["ceb"] = "宿霧語",
	["ch"] = "查莫羅語",
	["cim"] = "辛布里語",														-- Cimbrian
	["co"] = "科西嘉語",
	["cr"] = "克里語",
	["cs"] = "捷克語",
	["cu"] = "教會斯拉夫語",													-- Church Slavic, Church Slavonic, Old Bulgarian, Old Church Slavonic, Old Slavonic'
	["cv"] = "楚瓦什語",
	["cy"] = "威爾斯語",
	["da"] = "丹麥語",
	["de"] = "德語",
	["de-AT"] = "奧地利德語",
	["dv"] = "迪維希語",
	["dz"] = "不丹語",
	["ee"] = "埃維語",
	["el"] = "希臘語",														-- Modern Greek (1453-)
	["elx"] = "埃蘭語",														-- Elamite
	["en"] = "英語",
	["en-AU"] = "澳洲英語",
	["en-CA"] = "加拿大英語",
	["en-GB"] = "英國英語",
	["en-IE"] = "愛爾蘭英語",
	["en-NZ"] = "紐西蘭英語",
	["en-SA"] = "南非英語",
	["en-US"] = "美國英語",
	["eo"] = "世界語",
	["es"] = "西班牙語",
	["et"] = "愛沙尼亞語",
	["eu"] = "巴斯克語",
	["evn"] = "鄂温克语",														-- Classical Syriac
	["fa"] = "波斯語",
	["ff"] = "富拉語",														-- Fulah
	["fi"] = "芬蘭語",
	["fj"] = "斐濟語",
	["fo"] = "法羅語",
	["fr"] = "法語",
	["fy"] = "菲士蘭語",														-- Western Frisian
	["ga"] = "愛爾蘭語",
	["gd"] = "蘇格蘭蓋爾語",
	["gl"] = "加利西亞語",
	["gn"] = "瓜拉尼語",
	["gu"] = "古吉拉特語",
	["gv"] = "曼島語",
	["ha"] = "豪薩語",
	["he"] = "希伯來語",
	["hi"] = "印地語",	
	["ho"] = "希里木托語",
	["hr"] = "克羅埃西亞語",
	["ht"] = "海地克里奧爾語",												-- Haitian, Haitian Creole
	["hu"] = "匈牙利語",	
	["hy"] = "亞美尼亞語",	
	["hz"] = "赫雷羅語",														-- Herero
	["ia"] = "因特語",												    	-- Interlingua (International Auxiliary Language Association)
	["id"] = "印尼語",
	["ie"] = "西方國際語",
	["ig"] = "伊博語",													    -- Igbo
	["ii"] = "彝語北部方言",													-- Sichuan Yi, Nuosu
	["ik"] = "依努庇亞克語",	
	["io"] = "伊多語",	
	["is"] = "冰島語",	
	["it"] = "義大利語",	
	["iu"] = "伊努克提圖特語",
	["ja"] = "日語",
	["jv"] = "爪哇語",
	["ka"] = "喬治亞語",
	["kg"] = "剛果語",
	["ki"] = "基庫尤語",														-- Kikuyu, Gikuyu
	["kj"] = "寬亞瑪語",														-- Kwanyama, Oshikwanyama
	["kk"] = "哈薩克語",														-- Kazakh; same, delete?
	["kl"] = "格陵蘭語",														-- Kalaallisut, Greenlandic
	["km"] = "高棉語",														-- Central Khmer
	["kn"] = "卡納達語",														-- Kannaḍa
	["ko"] = "韓語",															-- Korean
	["ks"] = "喀什米爾語",													-- Kashmiri
	["ku"] = "庫德語",														-- Kurdish
	["kv"] = "科米語",														-- Komi
	["kw"] = "康瓦爾語",														-- Cornish, Kernowek
	["ky"] = "吉爾吉斯語",													-- Kirghiz, Kyrgyz
	["la"] = "拉丁語",
	["lb"] = "盧森堡語",
	["lg"] = "盧干達語",														-- Ganda
	["li"] = "林堡語",														-- Limburgan, Limburger, Limburgish
	["lmo"] = "倫巴第語",														-- Lombard
	["ln"] = "林格拉語",		
	["lo"] = "寮語",
	["lt"] = "立陶宛語",
	["lu"] = "盧巴卡丹加語",
	["lv"] = "拉脫維亞語",
	["mg"] = "馬達加斯加語",
	["mh"] = "馬紹爾語",
	["mi"] = "毛利語",														-- Maori
	["mk"] = "馬其頓語",
	["ml"] = "馬拉雅拉姆語",
	["mn"] = "蒙古語",
	["mo"] = "摩爾多瓦語",
	["mr"] = "馬拉提語",														-- Marathi
	["ms"] = "馬來語",														-- Malay (macrolanguage)
	["mt"] = "馬爾他語",
	["my"] = "緬甸語",
	["myv"] = "埃爾齊亞語",													-- Erzya
	["na"] = "諾魯語",														-- Nauru
	["nap"] = "那不勒斯語",													-- Neapolitan
	["nb"] = "書面挪威語",													-- Norwegian Bokmål
	["nd"] = "北恩德貝勒語",													-- North Ndebele
	["ne"] = "尼泊爾語",														-- Nepali (macrolanguage)
	["ng"] = "恩敦加語",
	["nl"] = "荷蘭語",
	["nn"] = "新挪威語",														-- Norwegian Nynorsk
	["no"] = "挪威語",	
	["nr"] = "南恩德貝勒語",													-- South Ndebele <not found in Chinese Wikipedia>
	["nv"] = "納瓦荷語",	
	["ny"] = "齊切瓦語",														-- Nyanja, Chewa, Chichewa
	["oc"] = "奧克語",														-- Occitan (post 1500)
	["oj"] = "奧吉布瓦語",													-- Ojibwa
	["om"] = "奧羅莫語",
	["or"] = "奧里亞語",														-- Oriya (macrolanguage), Odia (macrolanguage)
	["os"] = "奧塞梯語",
	["pa"] = "旁遮普語",														-- Panjabi, Punjabi
	["pag"] = "邦阿西楠語",													-- Pangasinan
	["pi"] = "巴利語",														-- Pali; same, delete?
	["pl"] = "波蘭語",
	["ps"] = "普什圖語",
	["pt"] = "葡萄牙語",
	["qu"] = "奇楚瓦語",
	["rm"] = "羅曼什語",														-- Romansh
	["rn"] = "克倫地語",														-- Rundi
	["ro"] = "羅馬尼亞語",													-- Romanian, Moldavian, Moldovan; same as first in IANA list, delete?
	["ru"] = "俄語",		
	["rw"] = "盧安達語",														-- Kinyarwanda; same, delete?
	["sa"] = "梵語",
	["sc"] = "薩丁尼亞語",
	["sd"] = "信德語",
	["se"] = "北薩米語",
	["sg"] = "桑戈語",
	["sh"] = "塞爾維亞-克羅埃西亞語",
	["si"] = "僧伽羅語",														-- Sinhala, Sinhalese
	["sk"] = "斯洛伐克語",
	["sl"] = "斯洛維尼亞語",													-- Slovenian
	["sm"] = "薩摩亞語",
	["sn"] = "紹納語",
	["so"] = "索馬利亞語",
	["sq"] = "阿爾巴尼亞語",
	["sr"] = "塞爾維亞語",
	["sr-Cyrl"] = "塞爾維亞語西里爾字母",										-- sr = Serbian; Cyrillic is the alphabet
	["ss"] = "史瓦濟語",														-- Swati
	["st"] = "索托語",														-- Southern Sotho
	["su"] = "巽他語",
	["sv"] = "瑞典語",	
	["sw"] = "斯瓦希里語",													-- Swahili (macrolanguage)
	["ta"] = "坦米爾語",
	["te"] = "泰盧固語",
	["tg"] = "塔吉克語",
	["th"] = "泰語",
	["ti"] = "提格利尼亞語",
	["tk"] = "土庫曼語",
	["tl"] = "他加祿語",
	["tn"] = "札那語",
	["to"] = "東加語",
	["tr"] = "土耳其語",
	["to"] = "東加語",														-- Tonga (Tonga Islands)
	["ts"] = "聰加語",														-- Tsonga, Xitsonga
	["tt"] = "韃靼語",														-- Tatar	
	["tw"] = "契維語",	
	["ty"] = "大溪地語",
	["ug"] = "維吾爾語",
	["uk"] = "烏克蘭語",
	["ur"] = "烏爾都語",
	["uz"] = "烏茲別克語",
	["ve"] = "文達語",
	["vi"] = "越南語",
	["vo"] = "沃拉普克語",
	["wa"] = "瓦隆語",	
	["wo"] = "沃洛夫語",	
	["xh"] = "科薩語",	
	["yi"] = "意第緒語",	
	["yo"] = "約魯巴語",	
	["za"] = "壯語",															-- Zhuang, Chuang; ; same as first in IANA list, delete?
	["zh"] = "中文",	
	["zu"] = "祖魯語",	
	
	-- ISO 639-2 codes
	["ber"] = "柏柏爾語",														-- Berber languages
	["cel"] = "原始凱爾特語",													-- Celtic languages
	["chr"] = "切羅基語",
	["cop"] = "科普特語",														-- Coptic languages
	["fil"] = "菲律賓語",
	["frs"] = "東菲士蘭下薩克森語",											-- East Frisian Low Saxon
	["gem"] = "原始日耳曼語",													-- Germanic languages
	["haw"] = "夏威夷語",
	["hit"] = "西臺語",
	["jbo"] = "邏輯語",													    -- Lojban
	["kmb"] = "姆本杜語",
	["kum"] = "庫梅克語",
	["myn"] = "瑪雅語系",														-- Mayan languages
	["nah"] = "納瓦特爾語",													-- Nahuatl languages
	["pfl"] = "普法爾茨方言",                                                 -- Palatine German language
	["pra"] = "普拉克里特諸語言",												-- Prakrit languages
	--	["roa"] = "澤西語",														-- Romance languages
	["sal"] = "薩利希語系",													-- Salishan languages
	["sat"] = "桑塔利語",	
	["sla"] = "斯拉夫語族",													-- Slavic languages
	["son"] = "桑海語族",														-- Songhai languages
	["sux"] = "蘇美語",	
	["pap"] = "帕皮阿門托語",
	["pau"] = "帕勞語",                                                       -- Palau, Palauan
	["tum"] = "通布卡語",
	["ukr"] = "烏克蘭語",
	["wen"] = "索布語",														-- Sorbian languages
	
	-- ISO 639-3 codes
	["abk"] = "阿布哈茲語",													-- not in IANA; see code ab
	["ace"] = "亞齊語",														-- Achinese
	["ady"] = "阿迪格語",														-- Adyghe language
	["aeb"] = "突尼斯阿拉伯語",
	["aec"] = "薩伊迪阿拉伯語",												-- Saidi Arabic
	["ain"] = "阿伊努語",														-- Ainu (Japan)
	["akk"] = "阿卡德語",	
	["akl"] = "阿克蘭語",														-- Aklanon
	["alr"] = "阿留特語",
	["alt"] = "阿爾泰語",														-- Southern Altai
	["ami"] = "阿美語",														-- Amis, Pangcah
	["ams"] = "南奄美大島語",
	--	["ang"] = "古英語",														-- Old English (ca. 450-1100)
	["apm"] = "梅斯卡萊羅-契利卡瓦語",										-- Mescalero-Chiricahua Apache
	["arc"] = "亞拉姆語",
	["arq"] = "阿爾及利亞阿拉伯語",
	["arz"] = "埃及阿拉伯語",													-- Egyptian Arabic
	["ast"] = "阿斯圖里亞斯語",												-- Asturian
	["atb"] = "載瓦語",
	["bal"] = "俾路支語",														-- Baluchi
	["bar"] = "巴伐利亞語",													-- Bavarian
	["bcl"] = "中比科爾語",													-- Central Bikol
	["bft"] = "巴爾蒂語",														-- Balti
	["bho"] = "博杰普爾語",													-- Bhojpuri
	["bin"] = "埃多語",														-- Bini, Edo
	["bnn"] = "布農語",														-- Bunun
	["bpy"] = "比什努普里亞-曼尼普爾語",										-- Bishnupriya, Bishnupriya Manipuri
	["brh"] = "布拉灰語",
	["brx"] = "博多語",														-- Bodo (India)
	["byq"] = "巴賽語",														-- Basay
	["chg"] = "察合台突厥語",													-- Chagatai
	["chm"] = "Mari",															-- Mari (Russia)
	["ckb"] = "中庫爾德語",													-- Sorani Kurdish, Central Kurdish
	["ckt"] = "楚科奇語",
	["ckv"] = "噶瑪蘭語",														-- Kbalan, Kavalan
	["cnr"] = "蒙特內哥羅語",													-- Montenegrin
	["cnu"] = "Shenwa",														-- Chenoua
	["coc"] = "Cocopah",														-- Cocopa
	["crh"] = "克里米亞韃靼語",												-- Crimean Tatar, Qırımtatar
	["csu"] = "卡舒比語",														
	["dag"] = "達巴尼語",														-- Dagbani
	["deu"] = "早期德語",														-- not in IANA; see code de
	["din"] = "丁卡語",														
	["diq"] = "扎扎其語",														-- Dimli (individual language)
	["dng"] = "東干語",														-- Dungan
	["dru"] = "魯凱語",														-- Drekay, Rukai
	["dsb"] = "下索布語",														-- Lower Sorbian, dolnoserbšćina
	["duu"] = "獨龍語",														-- Derung language	
	["egy"] = "埃及語",														-- Egyptian (Ancient)
	["ell"] = "現代希臘語",													-- not in IANA; see code el
	["enm"] = "中古英語",														-- Middle English (1100-1500)
	["fit"] = "梅安語",														-- Tornedalen Finnish
	["fkv"] = "克文語",														-- Kven Finnish
	["fos"] = "西拉雅語",														-- Siraya
	["frk"] = "古法蘭克語",													-- Frankish
	["frm"] = "中古法語",														-- Middle French (ca. 1400-1600)
	["fro"] = "古法語",														-- Old French (842-ca. 1400)
	["frr"] = "北弗里斯蘭語",													-- North Frisian, Frasch, Fresk, Freesk, Friisk
	["fry"] = "西菲士蘭語",													-- not in IANA; see code fy
	["gag"] = "加告茲語",														-- Gagauz
	["gcf"] = "瓜德羅普克里奧爾語",                                           -- Guadeloupean Creole
	["gcr"] = "法屬圭亞那克里奧爾語",
	["gez"] = "吉茲語",														-- Geez
	["gju"] = "古吉爾語 ",													-- Gujari
	["gmh"] = "中古高地德語",													-- Middle High German (ca. 1050-1500)
	["goh"] = "古高地德語",													-- Old High German (ca. 750-1050)
	["gos"] = "格羅寧根方言",													-- Gronings
	["got"] = "哥德語",														-- Gothic, Gutisk
	["grc"] = "古希臘語",														-- Ancient Greek (to 1453)
	["gsw"] = "阿勒曼尼語",													-- Swiss German, Alemannic, Alsatian
	["gul"] = "Gullah",														-- Sea Island Creole English
	["hak"] = "客家語",														-- Hakka Chinese
	["hbo"] = "聖經希伯來語",													-- Ancient Hebrew
	["hbs"] = "塞爾維亞-克羅埃西亞語",										-- Serbo-Croatian
	["hnd"] = "Hindko",														-- Southern Hindko
	["hoc"] = "霍語",															-- Ho, Bihar Ho, Lanka Kol
	["ikt"] = "Inuvialuk",													-- Inuinnaqtun, Western Canadian Inuktitut
	["ilo"] = "伊洛卡諾語",													-- Iloko
	["inh"] = "印古什語",														-- Ingush
	["kaa"] = "Karakalpak",													-- Kara-Kalpak
	["kae"] = "凱達格蘭語",													
	["kan"] = "康納達語",														-- Kannada
	["khb"] = "傣仂語",														-- Tai Lue, Tai Lɯ, Tai Lü, Thai Lue, Tai Le
	["kmr"] = "北庫德語",														-- Northern Kurdish
	["knn"] = "孔卡尼語",														-- Konkani (individual language)
	["kok"] = "孔卡尼語",														-- Konkani (macrolanguage)
	["kpo"] = "科普索語",														-- Kposo, Ikposo
	["kpy"] = "科里亞克語",
	["krc"] = "卡拉恰伊-巴爾卡爾語",											-- Karachay-Balkar
	["krj"] = "Kinaray-a",													-- Kinaray-A
	["ksh"] = "利普里安語",													-- Ripuarian, Kölsch;  --ksh is the code of Colognian, but ksh.wiki is the Ripuarian Wikipedia
	["ksw"] = "斯高克倫語",													-- S'gaw Karen
	["ktz"] = "Juǀ'hoan",														-- Ju/'hoan, Juǀʼhoan, Juǀʼhoansi
	["kzg"] = "喜界語",														-- Kikai	
	["lbj"] = "拉達克語",														-- Ladakhi
	["lez"] = "列茲金語",														-- Lezgian, Lezghian
	["lij"] = "利古里亚語",
	["liv"] = "立窩尼亞語",													-- Livonian, Liv
	["lkt"] = "拉科塔语",														-- Lakota
	["lng"] = "倫巴底語",														-- Lombardic, Langobardic
	["lzz"] = "拉茲語",														-- Laz
	["maz"] = "馬索維亞語",													-- Central Mazahua
	["mag"] = "摩揭陀語",														-- Magahi
	["mdf"] = "莫克沙語",														-- Moksha
	["mga"] = "中古愛爾蘭語",													-- Middle Irish (900-1200)
	["mhr"] = "Mari",															-- Eastern Mari
	["mia"] = "Miami-Illinois",												-- Miami
	["min"] = "米南佳保語",       											-- Minangkabau
	["miq"] = "Miskito",														-- Mískito
	["mix"] = "Mixtec",														-- Mixtepec Mixtec
	["mjw"] = "卡爾比語",														-- Karbi
	--	["mla"] = "中世紀拉丁語",													-- Malo; clearly a misuse of code mla;
	["mni"] = "曼尼普爾語",													-- Manipuri, Meitei
	["mol"] = "摩爾多瓦語", "摩爾達維亞語",									-- Moldavian, Moldovan (639-3, both retired)
	["mrj"] = "山地馬里語",													-- Western Mari
	["mww"] = "白苗話",														-- Hmong Daw
	["mzn"] = "馬贊德蘭語",													-- Mazanderani
	["nan"] = "閩南語",														-- Min Nan Chinese
	["naq"] = "科伊科伊語",													-- Khoekhoe, Nama (Namibia); same as first in IANA list, delete?
	--	["naz"] = "North Azeri",													-- Coatepec Nahuatl; clearly a misuse of code naz
	["nci"] = "古典納瓦特爾語",												-- Classical Nahuatl; same, delete?
	["nds"] = "低地德語",														-- Low German, Low Saxon, Plattdeutsch, Plattdüütsch
	["nds-nl"] = "荷蘭下薩克森語",											-- Dutch Low Saxon, Low German, Low Saxon; as spoken in the Netherlands; see code nsd
	["new"] = "尼瓦爾語",														-- Newari, Nepal Bhasa
	["niu"] = "紐埃語",														-- Niuean
	["non"] = "古諾斯語",	
	["nod"] = "北部泰語",														-- Northern Thai, Lanna, Kam Mueang
	 ["nrf"] = "諾曼語",														
	["nsd"] = "彝語南部方言",													-- Southern Nisu
	["nso"] = "北索托語",														-- Pedi, Northern Sotho, Sepedi
	["nwc"] = "古典尼瓦爾語",													-- Classical Newari, Classical Nepal Bhasa, Old Newari
	["oci"] = "普羅旺斯方言",													-- oc
	["okn"] = "沖永良部語",													-- Okinoerabu dialect cluster, Shimamuni	
	["oko"] = "新羅語",
	["ood"] = "O'odham",														-- Tohono O'odham
	["orv"] = "古東斯拉夫語",     											-- Old East Slavic
	["ota"] = "鄂圖曼土耳其語",												-- Ottoman Turkish (1500-1928)
	["otk"] = "古突厥語",														-- Old Turkish
	["oty"] = "古泰米爾語",		
	["owl"] = "古威爾斯語",													-- Old Welsh
	["pal"] = "中古波斯語",													-- Pahlavi
	["pam"] = "邦板牙語",														-- Pampanga, Kapampangan
	["pcd"] = "皮卡第語",
	["peo"] = "古波斯語",														-- Old Persian (ca. 600-400 B.C.)
	["phr"] = "博德瓦爾語",													-- Pahari-Potwari
	["phn"] = "腓尼基語",		                                                -- Phoenician
	["pka"] = "普拉克里特諸語言",												-- Ardhamāgadhī Prākrit
	["pms"] = "皮埃蒙特语",
	["pnb"] = "旁遮普語",														-- Western Panjabi
	["prs"] = "達利語",
	["psu"] = "索拉塞那語",													-- Sauraseni Prākrit
	["ppu"] = "拍瀑拉語", "洪雅語",											-- Papura, Hoany
	["pwn"] = "排灣語",														-- Pinayuanan, Paiwan
	["pyu"] = "卑南語",														-- Pinuyumayan, Puyuma
	["rap"] = "拉帕努伊語",													-- Rapanui
	["rar"] = "庫克群島毛利語",												-- Rarotongan, Cook Islands Maori
	["rcf"] = "留尼旺克里奧爾語",
	["rmu"] = "Scandoromani",													-- Tavringer Romani
	["rom"] = "羅姆語",														-- Romany
	["rup"] = "阿羅蒙語",														-- Macedo-Romanian, Aromanian, Arumanian
	["rus"] = "俄語",															-- not in IANA; see code ru
	["rut"] = "魯圖爾語",														-- Rutul
	["ryn"] = "北奄美大島語",
	["rys"] = "八重山語",														-- Yaeyama
	["ryu"] = "沖繩語",														-- Central Okinawan
	["sah"] = "雅庫特語",											-- Yakut
	["sco"] = "低地蘇格蘭語",													-- Scots, Lowland Scots
	["scn"] = "西西里語",
	["sdc"] = "薩沙里語",														-- Sassarese Sardinian
	["sdn"] = "加盧拉方言",													-- Gallurese Sardinian
	["sga"] = "古愛爾蘭語",													-- Old Irish (to 900)
	["sgs"] = "薩莫吉提亞語",													-- Samogitian dialect, Žemaitiu ruoda
	["shn"] = "撣語",															-- Shan
	["shp"] = "Shipibo",														-- Shipibo-Conibo
	["sip"] = "錫金語",														-- Sikkimese 
	["smj"] = "呂勒薩米語",                                                   -- Lule Sámi
	["smn"] = "伊納里薩米語",
	["sms"] = "斯科爾特薩米語",												-- Skolt Sami
	["sjd"] = "基爾丁薩米語",
	["sje"] = "皮特薩米語",
	["skr"] = "Saraiki",														-- Saraiki, Seraiki; same as first in IANA list, delete?
	["src"] = "勞古多羅方言",													-- Logudorese Sardinian
	["sro"] = "坎皮達諾方言",													-- Campidanese Sardinian
	["stq"] = "薩特菲士蘭語",
	["swg"] = "施瓦本方言",
	["sxr"] = "拉阿魯哇語",													-- Hla'alua, Saaroa
	["syc"] = "古敘利亞語",													-- Classical Syriac
	["syr"] = "敘利亞語",														-- Syriac
	["szy"] = "撒奇萊雅語",													-- Sakizaya
	["srh"] = "色勒庫爾語",
	["tab"] = "塔巴薩蘭語",													-- Tabasaran
	["tao"] = "達悟語",														-- Cizicizing No Tao、Ireriak No Tao, Yami
	["tay"] = "泰雅語",														-- Atayal, Tayal
	["tcy"] = "圖陸語",														-- Tulu, Tulu bāse
	["tdd"] = "傣那语",
	["tet"] = "德頓語",														-- Tetum
	["tkl"] = "托克勞語",														-- Tokelau
	["tkn"] = "德之島語",														-- Tokunoshima
	["tmh"] = "圖阿雷格語",													-- Tamashek
	["tpi"] = "巴布亞皮欽語",													-- Tok Pisin
	["trv"] = "太魯閣語",											-- Truku, Sejiq Truku
	["tsu"] = "鄒語",															-- Cou, Tsou
	["tvl"] = "吐瓦魯語",														-- Tuvalu
	["tyv"] = "圖瓦語",														-- Tuvinian
	["uby"] = "尤比克語",														-- Ubykh
	["uun"] = "巴宰語",														-- Pazeh, Kulon (龜崙語) is its dialect
	["vls"] = "西弗拉芒方言",													-- Vlaams
	["vec"] = "威尼斯語",												
	["war"] = "瓦瑞語",														-- Waray (Philippines)
	["wep"] = "威斯特法伦方言",                                               -- Westphalien
	["wo"] = "沃洛夫語",                                                      -- Wolof
	["xal"] = "衛拉特語",											-- Kalmyk, Oirat
	["xal-RU"] = "卡爾梅克衛拉特語",											-- Kalmyk Oirat
	["xcl"] = "古典亞美尼亞語",												-- Classical Armenian
	["xct"] = "近古藏語",														-- Classical Tibetan
	["xmf"] = "明格列爾語",													-- Mingrelian 
	["xnb"] = "卡那卡那富語",													-- Kanakanavu
	["xpp"] = "百濟語",														-- Baekje
	["xpu"] = "布匿語",														-- Punic
	["xsr"] = "夏爾巴語",														-- Sherpa
	["xsy"] = "賽夏語",														-- Saisiyat
	["xug"] = "國頭語",														-- Kunigami 
	["xwo"] = "書面瓦剌語",													-- Written Oirat
	["yoi"] = "與那國語",														-- Yonaguni 
	["yox"] = "與論語",														-- Yoron
	["yua"] = "猶加敦馬雅語",													-- Yucateco, Yucatec Maya
	["yue"] = "粵語",
	["zea"] = "西蘭語",														-- Zeêuw, Zealandic
	["zkg"] = "高句麗語",
	["zne"] = "贊德語",														-- Zande
	
	-- non-standard codes
	["bat-smg"] = "薩莫吉提亞語",												-- bat = Baltic languages (639-2); dialect of Lithuanian has it's own IANA code sgs; bat-smg
	["be-x-old"] = "白俄羅斯語傳統正寫法",									-- be = Belarusian; x-old = private use tag; be-x-old.wikipedia.org; space char in index may indicate that this code not used
	["cbk-zam"] = "查瓦卡諾語",												-- cbk = Chavacano; zam = Zamboangueño? zam is not an IANA-registered extlang; cbk-zam.wikipedia.org
	--	["cg"] = "Montenegrin", "sr-ME",											-- IANA / ISO 639-3 code is cnr
	["en-emodeng"] = "近代英語",												-- emodeng is not an IANA-registered variant
	["fiu-vro"] = "沃羅語",													-- fiu = Finno-Ugrian languages (639-2); vro = Võro (639-3); fiu-vro.wikipedia.org
	["fr-gallo"] = "加洛語",
	["gkm"] = "中世紀希臘語",
	["grc-gre"] = "希臘語",											-- grc = Ancient Greek (to 1453); gre not an IANA-registered code; used by Template:lang-grc-gre
	["gsw-fr"] = "阿爾薩斯語",
	["hbs-Cyrl"] = "塞爾維亞-克羅埃西亞語",
	["hbs-Latn"] = "塞爾維亞-克羅埃西亞語",
	["map-bms"] = "Banyumasan",												-- dialect of Javanese; map = Austronesian languages (639-2); bms is an IANA registered code not related to Javanese; map-bms.wikipedia.org
	["nrf-gg"] = "根西方言",
	["nrf-je"] = "澤西方言",
	["oc-auvern"] = "奧弗涅方言", 
	["oc-gascon"] = "加斯科涅語", 
	["oc-lemosin"] = "利穆贊方言", 
	["oc-provenc"] = "普羅旺斯方言", 
	["oc-vivaraup"] = "維瓦賴-阿爾卑斯方言", 
	["roa-rup"] = "阿羅馬尼亞語",												-- roa = Romance languages (639-2); rup = Macedo-Romanian, Aromanian, Arumanian (639-3); roa-rup.wikipedia.org
	["roa-tara"] = "塔倫蒂諾語",												-- roa = Romance languages (639-2); tara is not an IANA registered script; roa-tara.wikipedia.org
	["simple"] = "簡單英語",													-- simple is not an IANA registered variant; simple.wikipedia.org
	["zh-classical"] = "文言",												-- zh = Chinese; classical is not an IANA-registered variant; zh-classical.wikipedia.org
	["zh-min-nan"] = "閩南語",												-- zh-min-nan = Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo; granfathered in IANA, nan preferred; zh-min-nan.wikipedia.org
	["zh-yue"] = "粵語",
	["grc-x-aeolic"] = "伊歐里斯希臘語",										-- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre
	["grc-x-attic"] = "阿提卡希臘語",
	["grc-x-biblical"] = "聖經希臘語",
	["grc-x-byzant"] = "拜占庭希臘語",
	["grc-x-classic"] = "古典希臘語",
	["grc-x-doric"] = "多利亞希臘語",
	["grc-x-hellen"] = "希利尼話",
	["grc-x-ionic"] = "愛奧尼亞希臘語",
	["grc-x-koine"] = "通用希臘語",
	["grc-x-medieval"] = "中古希臘語",
	["grc-x-patris"] = "教父希臘語",
	["grk-x-proto"] = "原始希臘語",											-- grk in IANA is Greek languages
	--	["iir-x-proto"] = "原始印度-伊朗語",										-- iir in IANA is Indo-Iranian Languages
	--	["ira-x-proto"] = "原始伊朗語",											-- ira in IANA is Iranian languages
	--	["itc-x-proto"] = "原始義大利語",											-- itc in IANA is Italic languages
	--	["sla-x-proto"] = "原始斯拉夫語",											-- 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 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-mc"] = "Monégasque dialect",											-- Ligurian as spoken in Monaco
	['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)
	["snq"] = "Sangu language (Gabon)",											-- Sangu (Gabon)
	["toi"] = "Tonga language (Zambia and Zimbabwe)",                           -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page
	["vwa"] = "Awa language (China)",											-- Awa (China); to avoid Awa dab page
	["xlg"] = "Ligurian language (ancient)",									-- 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 {{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',
		['cmn'] = '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',
		},
	['yaleko'] = {
		['default'] = 'Yale romanization of Korean',
	}
};


--[[--------------------------< E N G _ V A R >----------------------------------------------------------------

Used at en.wiki so that spelling of 'romanized' (US, default) can be changed to 'romanised' to match the envar
specified by a {{Use xxx English}}.

This is accomplished by setting |engvar=gb; can, should be omitted in articles that use American English; no
need for the clutter.

]]

local engvar_sel_t = {															-- select either UK English or US English
	['au'] = 'gb_t',															-- these match IANA region codes (except in lower case)
	['ca'] = 'us_t',
	['gb'] = 'gb_t',
	['ie'] = 'gb_t',
	['in'] = 'gb_t',
	['nz'] = 'gb_t',
	['us'] = 'us_t',															-- default engvar
	['za'] = 'gb_t'
	};

local engvar_t = {
	['gb_t'] = {
		['romanisz_lc'] = 'romanisation',										-- lower case
		['romanisz_uc'] = 'Romanisation',										-- upper case
		['romanisz_pt'] = 'romanised',											-- past tense
		},
	['us_t'] = {																-- default engvar
		['romanisz_lc'] = 'romanization',										-- lower case
		['romanisz_uc'] = 'Romanization',										-- upper case
		['romanisz_pt'] = 'romanized',											-- past tense
		}
	}


--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]

return
	{
	this_wiki_lang_tag = this_wiki_lang_tag,
	this_wiki_lang_dir = lang_obj:getDir(),										-- wiki's language direction
	
	article_name = article_name,
	engvar_t = engvar_t,
	engvar_sel_t = engvar_sel_t,
	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,
	};