跳转到内容

模組:Vgname/testcases

维基百科,自由的百科全书

这是本页的一个历史版本,由D2F0F5留言 | 贡献2014年7月26日 (六) 12:36 建立内容为“local p = {} local langlist = { -- 请在下方区域更新语言代码 ru = {'ru', '俄语', '俄版名'}; -- 请在上方区域更新语...”的新页面)编辑。这可能和当前版本存在着巨大的差异。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
local p = {}

local langlist = {

	-- 请在下方区域更新语言代码
	
	ru = {'ru', '俄语', '俄版名'};

	-- 请在上方区域更新语言代码
	
	ja = {'ja', '日语', '日版名'};
	ko = {'ko', '韩语', '韩版名'};
	en = {'en', '英语', '英文版名'};
	na = {'en', '英语', '美版名'};
	eu = {'en', '英语', '欧版名'};
	
}

local yesno = require('Module:Yesno')

local function boldtext(a)

	if yesno(bold) then
		a = '<b>' .. a .. '</b>'
	end
	
	return a
end

local function foreign(a, b)
	local ret
	
	if langlist[a] == nil then
		ret = '<span class="error">请检查<code>|lang=</code>参数填写的语言代码是否正确,如果正确,请手工将“' .. a .. '”登录到[[Module:Vgname]]页面中</span>'
	else
		
		if yesno(diff) == true or na ~= ''  or eu ~= '' then
			ret = langlist[a][3]
		else
			ret = langlist[a][2]
		end
			
		if langlist[a][1] == 'en' then
			b = '<i>-{' .. b .. '}-</i>'
		else
			b = '-{' .. b .. '}-'
		end
	
		ret = ret .. ':<span lang="' .. a .. '" xml:lang="' .. a .. '">' .. b .. '</span>'
	end
	
	return ret
end

local function encheck(a)
	local ret
	if a == 'en' or string.lower(a) == string.lower(en) then
		ret = true
	else
		ret = nil
	end
		
	return ret
end
	
local function chv(area, ts, a)
	local ret
	local arealist = {
		c = {'中国大陆', '中國大陸'};
		h = {'香港', '香港'};
		t = {'台湾', '台灣'};
		ch = {'中国大陆和香港', '中國大陸和香港'};
		ct = {'中国大陆和台湾', '中國大陸和台灣'};
		th = {'台港', '台港'};
	}
	local translist = {
		'译作“-{zh-hans|' .. boldtext(a) .. '}-”';
		'譯作「-{zh-hant|' .. boldtext(a) .. '}-」';
		'譯作「-{' .. boldtext(a) .. '}-」';
		'使用英文名';
	}
		
	if encheck(a) then 
		if ts == 's' then
			ret = arealist[area][1] .. translist[4]
		else
			ret = arealist[area][2] .. translist[4]
		end
	else
		if ts == 's' then
			ret = arealist[area][1] .. translist[1]
		elseif ts == 't' then
			ret = arealist[area][2] .. translist[2]
		elseif ts == 'n' then
			ret = arealist[area][2] .. translist[3]
		end
	end
		
	return ret
end

function p.vgname(frame)
	
	title = frame.args[1]
	bracket = frame.args.bracket
	bold = frame.args.bold
	diff = frame.args.diff
	ja = frame.args.ja
	ko = frame.args.ko
	lang = frame.args.lang
	original = frame.args.original
	en = frame.args.en
	na = frame.args.na
	eu = frame.args.eu
	cn = frame.args.cn
	tw = frame.args.tw
	hk = frame.args.hk
	note = frame.args[2]
	
	local name = ''
	local name_temp = ''

	-- 原生语言组

	if lang == 'ko' or lang == 'ja' or lang == 'na' or lang == 'eu' or lang == 'en' then
		name = '<span class="error">对于日语、韩语、英语请分别使用<code>|ja=</code>、<code>|ko=</code>、<code>|en=</code>参数</span>'
	elseif ko ~= '' then
		name =  foreign('ko', ko)
	elseif ja ~= '' then
		name =  foreign('ja', ja)
	elseif lang ~= '' and original ~= '' then
		name = foreign(lang, original)
	end
	
	-- 原生语言组结束
	
	
	-- 英文名组

	if na ~='' and eu ~= '' then
		name_temp = foreign('na', na) .. ',' .. foreign('eu', eu)
	elseif na ~= '' and eu == '' then
		name_temp = foreign('na', na)
	elseif eu ~= '' then
		name_temp = foreign('eu', eu)
	elseif en ~= '' then
		name_temp = foreign('en', en)
	end
	
	-- 英文名组结束
	
	
	-- 连接原生语言名和英文名
	
	if name ~= '' and name_temp ~= '' then
		name = name .. ',' .. name_temp
	elseif name == '' and name_temp ~= '' then
		name = name_temp
	end
	
	-- 连接原生语言名和英文名结束
	
	
	-- 中文译名组

	if cn ~= '' and tw ~= '' then
		if ( cn == tw and ( hk == '' or hk == 'tw' or hk == 'cn' ) ) or (( encheck(tw) and encheck(hk) and encheck(cn) ) == true) then
			name_temp = ''
	 		
		elseif hk == 'tw' or hk == '' or ( encheck(tw) and encheck(hk) ) == true then -- 香港译名同台湾译名
			if (tw == cn or tw == 'cn' or cn == 'tw') then
				name_temp = ''
			else
				name_temp = '-{' ..
					'zh:' .. chv('c', 'n', cn) .. ',' .. chv('th', 'n', tw) .. '; ' ..
					'zh-hans:' .. chv('c', 's', cn) .. ',' .. chv('th', 's', tw) .. '; ' ..
					'zh-hant:' .. chv('c', 't', cn) .. ',' .. chv('th', 't', tw) .. '; ' ..
					'zh-cn:' .. chv('th', 's', tw) .. '; ' ..
					'zh-hk:' .. chv('c', 't', cn) .. '; ' ..
					'zh-tw:' .. chv('c', 't', cn) .. ';' ..
				'}-'
			end
			
		elseif hk == 'cn' or ( encheck(cn) and encheck(hk) ) == true then -- 香港译名同大陆译名
			if (tw == cn or tw == 'cn' or cn == 'tw') then
								name_temp = ''
			else
				name_temp = '-{' ..
					'zh:' .. chv('ch', 'n', cn) .. ',' .. chv('t', 'n', tw) .. '; ' ..
					'zh-hans:' .. chv('ch', 's', cn) .. ',' .. chv('t', 's', tw) .. '; ' ..
					'zh-hant:' .. chv('ch', 't', cn) .. ',' .. chv('t', 't', tw) .. '; ' ..
					'zh-cn:' .. chv('t', 's', tw) .. '; ' ..
					'zh-hk:' .. chv('t', 't', tw) .. '; ' ..
					'zh-tw:' .. chv('ch', 't', cn) .. ';' ..
				'}-'
			end
			
		elseif tw == cn or tw == 'cn' or cn == 'tw' then -- 台湾译名同大陆译名
			if cn == 'tw' then
				cn = tw
			end
			
			name_temp = '-{' ..
				'zh:' .. chv('ct', 'n', cn) .. ',' .. chv('h', 'n', hk) .. '; ' ..
				'zh-hans:' .. chv('ct', 's', cn) .. ',' .. chv('h', 's', hk) .. '; ' ..
				'zh-hant:' .. chv('ct', 't', cn) .. ',' .. chv('h', 't', hk) .. '; ' ..
				'zh-cn:' .. chv('h', 's', hk) .. '; ' ..
				'zh-hk:' .. chv('ct', 't', cn) .. '; ' ..
				'zh-tw:' .. chv('h', 't', hk) .. ';' ..
			'}-'
		
		else -- 三地譯名皆不同
			name_temp = '-{' ..
				'zh:' .. chv('c', 'n', cn) .. ',' .. chv('h', 'n', hk) .. ',' .. chv('t', 'n', tw) .. '; ' ..
				'zh-hans:' .. chv('c', 's', cn) .. ',' .. chv('h', 's', hk) .. ',' .. chv('t', 's', tw) .. '; ' ..
				'zh-hant:' .. chv('c', 't', cn) .. ',' .. chv('h', 't', hk) .. ',' .. chv('t', 't', tw) .. '; ' ..
				'zh-cn:' .. chv('h', 's', hk) .. ',' .. chv('t', 's', tw) .. '; ' ..
				'zh-hk:' .. chv('c', 't', cn) .. ',' .. chv('t', 't', tw) .. '; ' ..
				'zh-tw:' .. chv('c', 't', cn) .. ',' .. chv('h', 't', hk) .. ';' ..
			'}-'
		end
		
	elseif (cn ~= '' or tw ~= '' or hk ~= '') and (cn == '' or tw == '') then
		name_temp = '<span class="error">必须手工指定<code>|cn=</code>和<code>|tw=</code>两个参数</span>'
		
	else
		name_temp = ''
	end
	
	 -- 中文译名组结束
	 

	 -- 连接外文名和中文译名
	 
	if name ~= '' and name_temp ~= '' then
		name = name .. ',' .. name_temp
	 end
	
	 -- 连接外文名和中文译名结束
	 
	 
	 -- 连接前述和{{{2}}}参数
	 
	 if name ~= '' and note ~= '' then
	 	name = name .. ',' .. note
	 end
	 
	 -- 连接前述和{{{2}}}参数结束
	 
	 
	 -- 全部连接
	 
	 if name == ''  then
	 	name = '<span class = "error">本模板不适用于原生中文游戏</span>'
	 elseif	yesno(bracket) then
		 name = '《' .. boldtext(title) .. '》' .. '(' .. name ..  ')'
	 else
		 name = boldtext(title) .. '(' .. name ..  ')'
	 end
	
	-- 全部连接完毕

	return name 
end

return p