模組:Vgname/testcases
外观
![]() | 這是Module:Vgname的測試樣例頁,測試結果請見討論頁。 |
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