肝不好应该吃什么| 氨基酸有什么作用| 为什么最迷人的最危险是什么歌| 什么不什么当| 甲功是什么| 肚子疼喝什么能缓解| 傍家儿是什么意思| 近视和远视有什么区别| 鼠的三合生肖是什么| 耳朵背后有痣代表什么| 腐竹配什么菜炒好吃| 儿童发育迟缓挂什么科| 罗网是什么意思| 什么样的充电宝不能带上飞机| 感受是什么意思| 归元寺求什么最灵验| 屁股里面疼是什么原因| 气管炎的症状吃什么药好得快| 脸上长白斑是什么原因引起的| 脚指甲发白是什么原因| 女人为什么会患得患失| 无私是什么意思| 女大四岁有什么说法| 脱脂是什么意思| 趋是什么意思| 食言是什么意思| 什么相照| 虾和什么食物相克| 总监是什么级别| 头晕吃什么药效果好| 胎毛什么时候剃最好| 肾虚有什么表现| 为什么会漏尿| 肺部结节吃什么药| c2驾驶证能开什么车| 什么是袖珍人| 舌头边上有锯齿状是什么原因| aids是什么病的简称| 9月27日是什么星座| 什么原因导致高血压| o2o什么意思| 蝎子吃什么| 中筋面粉是什么粉| 牙周炎吃什么消炎药| 贩子是什么意思| 什么东西越剪越大| gbs筛查是什么| 滋养细胞疾病是什么病| 枸橼酸西地那非片有什么副作用| 眼角红肿用什么药| 胸闷挂什么科室| 今日立冬吃什么| 睡觉翻白眼是什么原因| 黄麻是什么| 流鼻涕吃什么药最管用| 渣滓是什么意思| 怀孕吃什么菜最有营养| 什么是孝| 苏东坡属什么生肖| 怀孕吃什么宝宝会白| 22年什么婚| 一进去就射是什么原因| 腹部ct能检查出什么| 什么食物含牛磺酸| 喝茶为什么睡不着觉| 来姨妈为什么是黑色的血| 四物汤是什么| 生殖感染用什么消炎药效果好| 阴道发痒是什么原因| 女人为什么会来月经| 鸡飞狗跳是什么生肖| 桃李是什么意思| 尿检是检查什么的| 手术后拆线挂什么科| 什么是伪娘| 叶酸有什么作用| 嘴唇颜色深是什么原因| 猪鞭是什么| 属猴和什么属相最配| 尿道炎挂什么科| 碗打碎了预示着什么| 猪咳嗽用什么药效果好| 左肾结石的症状是什么| 大学生村官是什么编制| 乳化是什么意思| 爸爸的姐夫叫什么| 女性生活疼痛什么原因| 去痘印用什么药膏好| 自我感动是什么意思| 贲临是什么意思| 美平是什么药| 血癌是什么病| pnh是什么病| 吃什么可以健脾养胃| 吃饭的时候恶心想吐是什么原因| 癫痫是什么意思| 偶像包袱是什么意思| 胳膊麻是什么原因| 吃什么东西可以补血| 月黑见渔灯的见读什么| 沙僧头上戴的是什么| ccg是什么意思| 羯羊是什么羊| 小意思是什么意思| 12月4日是什么日子| 什么是破伤风| 美人坯子是什么意思| dcr是什么| 靶向治疗是什么意思| ct和磁共振有什么区别| 百合花什么时候开花| 金疮是什么病| 人体最大的排毒器官是什么| 谐音是什么意思| 下巴疼是什么原因| 半月板变性是什么意思| 蓝莓有什么营养价值| 血糖高能吃什么水果| 小太阳是什么牌子| 口大是什么字| 叶酸起什么作用| 发财树是什么树| 肚脐眼上面是什么部位| 氧分压低是什么原因| 女人梦见蜈蚣预兆什么| 脸上黑色的小点是什么| 喝茶叶有什么好处| 什么东西清肺止咳| 蒋字五行属什么| 山的五行属什么| 3a是什么| 玉髓是什么材质| 接待是什么意思| 炸油条用什么油最好| 肠胃炎看什么科| 湿疹是什么| 叶公好龙讽刺了什么| 三伏是什么时候| 梦到蜈蚣是什么意思| 身高别体重是什么意思| 初心是什么意思| 十月十七是什么星座| 孕妇抽筋是什么原因引起的| 基础医学是什么| 鞭长莫及是什么意思| iris是什么意思啊| 杜牧字什么号什么| 有炎症吃什么药| 最里面的牙齿叫什么牙| 很什么很什么| 枣庄古代叫什么| 最早的春联是写在什么上面的| 劳动法什么时候实施的| 茯苓有什么功效和作用| 阿修罗道是什么意思| 迷茫什么意思| mA是什么| 小便多是什么原因| 红烧肉是什么肉| 感冒去医院挂什么科| 什么邮箱最好用最安全| 1997年7月1日属什么生肖| 不一样的烟火什么意思| 火疖子是什么| 梦见着火是什么意思| 美尼尔综合症吃什么药| 什么食物吃了会胀气| 有冬瓜西瓜南瓜为什么没有北瓜| 甲状腺结节忌口什么| 睡觉起来口苦是什么原因| 腹胀便溏是什么意思| 胃反酸吃什么| 颈椎骨质增生吃什么药效果好| 同房疼痛什么原因| 子宫直肠窝积液是什么意思| 屎壳郎长什么样| 什么是签注| 保卡是什么意思| 肚脐眼上面是什么部位| 腹部彩超挂什么科| 一个火一个斤念什么| 头发少剪什么发型好看| 单纯是什么意思| 胰岛素高有什么危害| kenwood是什么牌子| 98年什么命| 寿司用什么米做好吃| 社畜是什么意思| 耳朵痒用什么药最有效| 刮宫和清宫有什么区别| 手术后吃什么水果| 孕妇待产需要准备什么| 月经不来吃什么药| 卖关子是什么意思| 石斛念什么| 早晨起床手麻是什么原因| 旁支是什么意思| 气胸是什么症状| 继发性高血压什么意思| 夏天适合喝什么养生茶| 追求完美的人什么性格| 琉璃色是什么颜色| 普洱茶有什么功效| 杨贵妃是什么生肖| 失恋是什么意思| 小儿积食吃什么药最好| 天上火是什么意思| 什么动物没有骨头| 未融资是什么意思| 为什么来月经会拉肚子| 谭字五行属什么| 阑尾炎不能吃什么| 射手座是什么星座| 造口是什么意思| 检查乳腺挂什么科| 前列腺实质回声欠均匀什么意思| 打嗝吃什么药好| 食道炎用什么药最好| 没有什么过不去| 什么是免冠照片| 梦见父母是什么意思| 什么叫五福临门| 宫后是牛身上什么部位| dha什么时候吃效果最好| 感冒头晕吃什么药| 结婚40年是什么婚| 劳烦是什么意思| 夸加包念什么| 肠胃不好吃什么水果| 窦卵泡是什么意思| 梦见蜘蛛网是什么意思| 女生右眼睛老是跳是什么原因| 出cos是什么意思| 癫痫病是什么原因引起的| 乜是什么意思| 经期能吃什么水果| 牧师是什么意思| 手麻木什么原因| 总是拉稀是什么原因| 在家做什么赚钱| 嘿嘿嘿是什么意思| 双侧基底节区腔隙灶是什么意思| 男人断眉有什么说法| 犒劳自己是什么意思| 恍然大悟是什么意思| 5月8日是什么星座| 排暖期出血是什么原因| 做梦吃面条是什么预兆| 全虫是什么中药| nike是什么牌子| 项韧带钙化是什么意思| 梦到好多蛇是什么意思| 耐受性是什么意思| 什么奶茶最贵| 孩子疱疹性咽峡炎吃什么药| ada医学上是什么意思| 中央委员什么级别| 蛇怕什么东西| 浸洗是什么意思| 阴囊瘙痒挂什么科室| 三个牛读什么字| 桀是什么意思| 三伏是什么意思| 小腿肚酸疼是什么原因| 百度K?rceni tek p?rmbajtja

全國台聯會長汪毅夫:希望台灣青年更多到大陸創業

Nga Wikipedia, enciklopedia e lir?
百度 一年多前的冬天,社区里一对相依为命的母女俩家里突发大火,损失重大。
require('strict');

local getArgs = require ('Module:Arguments').getArgs;
local override_data = mw.loadData ('Module:Language/data/ISO 639 override');
--local override_data = mw.loadData ('Module:Language/data/ISO 639 override/sandbox');
local deprecated_data = mw.loadData ('Module:Language/data/ISO 639 deprecated');
local parts = {
	{'Module:Language/data/ISO 639-1', '1'},
	{'Module:Language/data/ISO 639-2', '2'},
	{'Module:Language/data/ISO 639-2B', '2B'},
	{'Module:Language/data/ISO 639-3', '3'},
	{'Module:Language/data/ISO 639-5', '5'},
	}


--[[--------------------------< E R R O R _ M E S S A G E S >--------------------------------------------------

]]

local error_messages = {
	['err_msg'] = '<span style="font-size:100%;" class="error show_639_err_msgs">error: $1 ([[Template:ISO 639 name|help]])</span>',
	['err_text'] = {															-- error messages used only in the code to name functions
		['ietf'] = '$1 is an IETF tag',											-- $1 is the ietf tag
		['required'] = 'ISO 639$1 code is required',							-- $1 is the 639 '-1', '-2', '-3', '-5' part suffix; may be empty string

																				-- code to name functions and iso_639_name_to_code()
		['not_found'] = '$1 not found in ISO 639-$2 list',						-- $1 is code or language name; $2 is 639 part suffix(es)

																				-- iso_639_name_to_code() only
		['name'] = 'language name required',
		['not_part'] = '$1 not an ISO 639 part',								-- $1 is invalid 639 suffix (without hyphen)

		['code_name'] = 'language code or name required',						-- iso_639() only
		}
	}

local error_cat = '[[Category:ISO 639 name template errors]]';


--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------

Populates numbered arguments in a message string using an argument table.

]]

local function substitute (msg, args)
	return args and mw.message.newRawMessage (msg, args):plain() or msg;
end


--[[--------------------------< E R R O R _ M S G >------------------------------------------------------------

create an error message

]]

local function error_msg (msg, arg, hide, nocat)
	local retval = '';
	if not hide then
		retval = substitute (error_messages.err_msg, substitute (error_messages.err_text[msg], arg));
		retval = nocat and retval or (retval .. error_cat);
	end
	return retval
end


--[[--------------------------< I S _ S E T >------------------------------------------------------------------

Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.

]]

local function is_set (var)
	return not (var == nil or var == '');
end


--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------

Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.

]=]

local function make_wikilink (link, display)
	if is_set (link) then
		if is_set (display) then
			return table.concat ({'[[', link, '|', display, ']]'});
		else
			return table.concat ({'[[', link, ']]'});
		end
	else
		return '';
	end
end


--[[--------------------------< L A N G _ N A M E _ G E T >----------------------------------------------------

returns first listed language name for code from data{} table; strips parenthetical disambiguation; wikilinks to
the language article if link is true; returns nil else

]]

local function lang_name_get (code, data, link, label, raw)
	local name;
	if data[code] then
--		name = raw and data[code][1] or data[code][1]:gsub ('%s*%b()', '');		-- get the name; strip parenthetical disambiguators if any when <raw> is false
		if raw then
			name = data[code][1];
		else
			name = data[code][1]:gsub ('%s*%b()', '');							-- strip parenthetical disambiguators if any
			name = name:gsub ('([^,]-), +(.+)', '%2 %1');						-- if inverted, uninvert
		end
		if link then															-- make a link to the language article?
			if name:find ('languages') or name:find ('[Ll]anguage$') then
				name = make_wikilink (name, label);								-- simple wikilink for collective languages or langauges ending in 'Language' unless there is a label
			elseif override_data.article_name[code] then
				name = make_wikilink (override_data.article_name[code][1], label or name);	-- language name or label with wikilink from override data
			else
				name = make_wikilink (name .. ' language', label or name);		-- [[name language|name]] or [[name language|label]]
			end
		end
		return name;
	end
end


--[[--------------------------< A D D _ I E T F _ E R R O R _ M S G >------------------------------------------

assembles return-text (language code, language name, or error message) with IETF error message into properly
formatted readable text

|hide-err=yes suppresses error message and category
|cat=no supresses category

]]

local function add_ietf_error_msg (text, ietf_err, hide, nocat)
	if hide then
		ietf_err = '';
	end

	if not nocat then															-- |cat= empty or omitted -> nocat=false
		nocat = '' == ietf_err;													-- spoof; don't add cat when no error
	end

	return table.concat ({														-- tack on ietf error message if one exists
		text,																	-- code name, language name, or error message
		'' ~= ietf_err and ' ' or '',											-- needs a space when ietf_err is not empty
		ietf_err,
		nocat and '' or error_cat,												-- add error category when |cat=<aynthing but 'no'>
		});
end


--[[--------------------------< G E T _ P A R T _ I N D E X >--------------------------------------------------

gets index suitable for parts{} table from ISO 639-<part> (usually args[2])

return valid index [1] - [5]; nil else
	1   <- part ['1']
	2   <- part ['2']															-- this is part 2T
	3   <- part ['2B']
	4   <- part ['3']
	nil <- part ['4']															-- there is no part 4
	5   <- part ['5']

]]

local function get_part_index (part)
	return ({['1']=1, ['2']=2, ['2B']=3, ['3']=4, ['4']=nil, ['5']=5})[part]
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ T O _ N A M E _ C O M M O N >------------------------

this is code that is common to all of the iso_639_code_n_to_name() functions which serve only as template entry
points to provide the frame, the name of the appropriate data source, and to identify which 639 part applies.

this function returns a language name or an error message.  data is searched in this order:
	part-specific override data -> standard part data -> part-specific deprecated data

a second retval used by _iso_639_code_to_name() is true when a code is found; nil else

]]

local function iso_639_code_to_name_common (args, source, part)
	local hide = 'yes' == args['hide-err'];										-- suppress error messages and error categorization
	local nocat = 'no' == args.cat;												-- suppress error categorization (primarily for demo use)
	local raw = 'yes' == args.raw;												-- disable override and dab removal
	local data;																	-- one of the override or part tables
	local name;																	-- holds language name from data

	if not args[1] then															-- if code not provided in the template call
		return error_msg ('required', '-' .. part, hide, nocat);						-- abandon
	end

	local code;																	-- used for error messaging
	local ietf_err;																-- holds an error message when args[1] (language code) is in IETF tag form (may or may not be a valid IETF tag)
	code, ietf_err = args[1]:gsub('(.-)%-.*', '%1');							-- strip ietf subtags; ietf_err is non-zero when subtags are stripped
	ietf_err = (0 ~= ietf_err) and error_msg ('ietf', args[1], hide, nocat) or '';		-- when tags are stripped create an error message; empty string for concatenation else

	if not raw then																-- when raw is true, fetch name as is from part data; ignore override
		data = override_data['override_' .. part];								-- get override data for this part
		name = lang_name_get (code:lower(), data, args.link, args.label, raw);	-- get override language name if there is one
	end
	
	if not name then
		data = mw.loadData (source);											-- get the data for this ISO 639 part
		name = lang_name_get (code:lower(), data, args.link, args.label, raw);	-- get language name if there is one
	end

	if not name then															-- TODO: do something special to indicate when a name is fetched from deprecated data?
		data = deprecated_data['deprecated_' .. part];							-- get deprecated data for this part
		name = lang_name_get (code:lower(), data, args.link, args.label, raw);	-- get deprecated language name if there is one

		if not name then
			return error_msg ('not_found', {code, part}, hide, nocat);			-- code not found, return error message
		end
	end		
	return add_ietf_error_msg (name, ietf_err, hide, nocat), true;				-- return language name with ietf error message if any; true because we found a code
end


--[[--------------------------< _ I S O _ 6 3 9 _ C O D E _ T O _ N A M E >------------------------------------

searches through the ISO 639 language tables for a name that matches the supplied code.  on success returns first
language name that matches code from template frame perhaps with an error message and a second return value of true;
on failure returns an error message and a second return value of nil.  The second return value is a return value
used by iso_639_code_exists()

looks first in the override data and then sequentially in the 639-1, -2, -3, and -5 data

]]

local function _iso_639_code_to_name (frame)
	local args = getArgs(frame);
	local hide = 'yes' == args['hide-err'];										-- suppress error messages and error categorization
	local nocat = 'no' == args.cat;												-- suppress error categorization (primarily for demo use)
	
	if not args[1] then															-- if code not provided in the template call
		return error_msg ('required', '', hide, nocat);							-- abandon
	end

	local name;																	-- the retrieved language name and / or error message
	local found;																-- set to true when language name is found

	for _, part in ipairs (parts) do
		name, found = iso_639_code_to_name_common (args, part[1],  part[2]);
		if found then
			return name, true;													-- second retval for iso_639_name_exists()
		end
	end

	return error_msg ('not_found', {args[1], '1, -2, -2B, -3, -5'}, hide, nocat);	-- here when code (args[1]) is not found in the data tables
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ T O _ N A M E >--------------------------------------

template entry point; returns first language name that matches code from template frame or an error message
looks first in the override data and then sequentially in the 639-1, -2, -3, and -5 data

]]

local function iso_639_code_to_name (frame)
	local ret_val = _iso_639_code_to_name (frame);								-- ignore second return value
	return ret_val;																-- return language name and / or error message
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ E X I S T S >----------------------------------------

template entry point; returns true if language code maps to a language name; intended as a replacement for:
	{{#exist:Template:ISO 639 name <code>|<exists>|<doesn't exist>}}
Instead of that expensive parser function call use this function:
	{{#if:{{#invoke:ISO 639 name|iso_639_code_exists|<code>}}|<exists>|<doesn't exist>}}
on success, returns true; nil else

]]

local function iso_639_code_exists (frame)
	local _, exists;
	 _, exists = _iso_639_code_to_name (frame);									-- ignore name/error message return; <exists> is true when name found for code; nil else
	 return exists;
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ 1 _ T O _ N A M E >----------------------------------

template entry point; returns first language name that matches ISO 639-1 code from template frame or an error message

]]

local function iso_639_code_1_to_name (frame)
	local args = getArgs (frame);
	local retval = iso_639_code_to_name_common (args, parts[1][1],  parts[1][2]);	-- suppress second return value
	return retval;
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ 2 _ T O _ N A M E >----------------------------------

template entry point; returns first language name that matches ISO 639-2 code from template frame or an error message

]]

local function iso_639_code_2_to_name (frame)
	local args = getArgs (frame);
	local retval = iso_639_code_to_name_common (args, parts[2][1],  parts[2][2]);	-- suppress second return value
	return retval;
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ 2 B _ T O _ N A M E >--------------------------------

template entry point; returns first language name that matches ISO 639-2 code from template frame or an error message

]]

local function iso_639_code_2B_to_name (frame)
	local args = getArgs (frame);
	local retval = iso_639_code_to_name_common (args, parts[3][1],  parts[3][2]);	-- suppress second return value
	return retval;
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ 3 _ T O _ N A M E >----------------------------------

template entry point; returns first language name that matches ISO 639-3 code from template frame or an error message

]]

local function iso_639_code_3_to_name (frame)
	local args = getArgs (frame);
	local retval = iso_639_code_to_name_common (args, parts[4][1],  parts[4][2]);	-- suppress second return value
	return retval;
end


--[[--------------------------< I S O _ 6 3 9 _ C O D E _ 5 _ T O _ N A M E >----------------------------------

template entry point; returns first language name that matches ISO 639-5 code from template frame or an error message

]]

local function iso_639_code_5_to_name (frame)
	local args = getArgs (frame);
	local retval = iso_639_code_to_name_common (args, parts[5][1],  parts[5][2]);	-- index [4] -> part 5 because there is no part 4; suppress second return value
	return retval;
end


--[[--------------------------< N A M E _ I N _ P A R T _ C O D E _ G E T >------------------------------------

indexes into the <name_data> using <name> and extracts the language code assigned to <part> (1, 2, 2B, 3, 5).
attempts to index override data first; returns code on success, nil else

]]

local function name_in_part_code_get (name, part, part_idx, name_data)
	return name_data[name] and (
		name_data[name][part_idx+5]	or											-- see if the name exists in the part's override table
		name_data[name][part_idx] or											-- see if the name exists in the part's main table
		name_data[name][part_idx+10]											-- see if the name exists in the part's deprecated table
		);
end


--[[--------------------------< _ I S O _ 6 3 9 _ N A M E _ T O _ C O D E >------------------------------------

module entry point; returns ISO 639-1, -2, -2B, -3, or -5 code associated with language name according to part
(1, 2, 2B, 3, 5) argument; when part is not provided scans 1, 2, 2B, 3, 5 and returns first code

override data are examined first

<args> is frame arguments from getArgs(frame)

]]

local function _iso_639_name_to_code (args)
	local hide = 'yes' == args['hide-err'];										-- suppress error messages and error categorization
	local nocat = 'no' == args.cat;												-- suppress error categorization (primarily for demo use)

	if not args[1] then
		return error_msg ('name', '', hide, nocat);								-- abandon when language name missing
	end
	
	local name = args[1];														-- used in error messaging
	local lc_name = name:gsub(' +', ' '):lower();								-- lowercase version of name for indexing into the data table; strip extraneous space characters

	local part_idx;
	local part = args[2];
	if part then
		part_idx = get_part_index (part);
		if not part_idx then
			return error_msg ('not_part', part, hide, nocat);					-- abandon; args[2] is not a valid ISO 639 part
		end
	end

	local name_data = mw.loadData ('Module:Language/data/ISO 639 name to code');	-- ISO 639 language names to code table
--	local name_data = mw.loadData ('Module:Language/data/ISO 639 name to code/sandbox');	-- ISO 639 language names to code table

	local code;
	
	if part then
		code = name_in_part_code_get (lc_name, part, part_idx, name_data);		-- search the specified override table + part table
	else
		for part_idx, part_tag in ipairs ({'1', '2', '2B', '3', '5'}) do		-- no part provided, spin through all parts override first and get the first available code
			code = name_in_part_code_get (lc_name, part_tag, part_idx, name_data);
			if code then														-- nil when specified <part> does not have code for specified language <name>
				break;															-- when code is not nil, done
			end
		end
	end
	
	if code then
		return code, true;
	end
	return error_msg ('not_found', {name, part or '1, -2, -2B, -3, -5'}, hide, nocat), false;
end


--[[--------------------------< I S O _ 6 3 9 _ N A M E _ T O _ C O D E >--------------------------------------

template entry point; returns ISO 639-1, -2, -2B, -3, or -5 code associated with language name according to part
(1, 2, 2B, 3, 5) argument; when part is not provided scans 1, 2, 2B, 3, 5 and returns first code

override data are examined first

args[1] is language name
args[2] is ISO 639 part

]]

local function iso_639_name_to_code (frame)
	local args = getArgs(frame);
	local result, _ = _iso_639_name_to_code (args);								-- suppress true/false return used by iso_639_name_exists()
	return result;
end


--[[--------------------------< I S O _ 6 3 9 _ N A M E _ E X I S T S >----------------------------------------

template entry point; returns ISO 639-1, -2, -3, or -5 code associated with language name according to part (1, 2, 3, 5) argument;
when part is not provided scans 1, 2, 3 , 5 and returns first code

override data are examined first

args[1] is language name
args[2] is ISO 639 part

]]

local function iso_639_name_exists (frame)
	local args = getArgs(frame);
	local _, result = _iso_639_name_to_code (args);								-- suppress code return used by iso_639_name_to_code()
	return result and true or nil;
end


--[[--------------------------< I S O _ 6 3 9 >----------------------------------------------------------------

template entry point.
returns:
	language name if args[1] is valid language code
	language code if args[1] is valid language name

this function is constrained to the ISO 639 part specified in args[2] which must be 1, 2, 2B, 3, or 5.  When not provided
all parts are tested. The first match is found

]]

local function iso_639 (frame)
	local args = getArgs (frame);
	local hide = 'yes' == args['hide-err'];										-- suppress error messages and error categorization
	local nocat = 'no' == args.cat;												-- suppress error categorization (primarily for demo use)
	local result;
	local found;																-- set to true when language name is found

	if not args[1] then
		return error_msg ('code_name', '', hide, nocat);
	end

	local part = args[2];
	if part then																-- if ISO 639 part supplied
		local part_idx = get_part_index (part);									-- map index from <part>; anything else nil

		if not part_idx then
			return error_msg ('not_part', part, hide, nocat);					-- abandon; args[2] is not a valid ISO 639 part
		end

		result, found = iso_639_code_to_name_common (args, parts[part_idx][1], parts[part_idx][2]);		-- attempt to find a code match
		if found then
			return result;														-- found the code so return the language name
		end

		result = _iso_639_name_to_code (args);									-- might be a language name; return code if it is; error message or empty string else
		return result;															-- this way to suppress second return

	else		
		for _, part in ipairs (parts) do										-- for each of the iso 639 parts
			result, found = iso_639_code_to_name_common (args, part[1], part[2]);	-- attempt to find a code match
			if found then
				return result;													-- found the code so return the language name
			end
		end
	end	

	result = _iso_639_name_to_code (args);										-- might be a language name; return code if it is; error message or empty string else
	return result;																-- this way to suppress second return
end


--[[--------------------------< E X P O R T E D   F U N C T I O N S >------------------------------------------
]]

return {
	iso_639 = iso_639,															-- returns code when given name; returns name when given code

	iso_639_code_exists = iso_639_code_exists,
	iso_639_name_exists = iso_639_name_exists,

	iso_639_code_to_name = iso_639_code_to_name,
	iso_639_code_1_to_name = iso_639_code_1_to_name,
	iso_639_code_2_to_name = iso_639_code_2_to_name,
	iso_639_code_2B_to_name = iso_639_code_2B_to_name,
	iso_639_code_3_to_name = iso_639_code_3_to_name,
	iso_639_code_5_to_name = iso_639_code_5_to_name,

	iso_639_name_to_code = iso_639_name_to_code,
	};
血液粘稠会有什么症状 乌龟能吃什么水果 恨不相逢未嫁时什么意思 打嗝不停是什么病前兆 结石有什么症状
儿童腿疼挂什么科 1990属马的是什么命 儿童咳嗽吃什么药 球镜是什么意思 早上9点多是什么时辰
数字7的风水含义是什么 肝肾不足证是什么意思 糖尿病患者可以吃什么水果 聚字五行属什么 马来玉是什么玉
布五行属什么 宫腔积液是什么 橙色五行属什么 肺部散在小结节是什么意思 上面白下面本念什么
多梦是什么原因hcv8jop0ns8r.cn 为什么会得脑梗hcv9jop6ns0r.cn 肠胃炎看什么科hcv9jop5ns7r.cn 球镜度数是什么意思hcv7jop6ns6r.cn 属牛的跟什么属相最配hcv9jop7ns3r.cn
肠胃不好吃什么水果比较好hcv9jop1ns0r.cn 碱性土壤适合种植什么hcv9jop1ns4r.cn 做梦梦见狗咬我什么意思啊hcv8jop6ns9r.cn 包皮是什么意思hcv9jop8ns2r.cn 猫传腹是什么病hcv8jop7ns5r.cn
你说什么hcv8jop0ns0r.cn 羊后马前对是什么生肖hcv8jop6ns2r.cn 碳酸钙d3片什么时候吃最好hcv8jop0ns3r.cn 经常呛咳是什么病的征兆jingluanji.com 吃什么降血糖hcv9jop5ns2r.cn
什么是手淫hcv8jop0ns9r.cn 鹰击长空是什么意思hcv9jop7ns3r.cn 口干口苦口臭吃什么药hcv7jop7ns2r.cn 头胀痛吃什么药hcv7jop4ns7r.cn 心有余而力不足什么意思hcv9jop7ns4r.cn
百度