Модуль:Npc names
Перейти к навигации
Перейти к поиску
Документация Документация, указанная ниже, находится на странице «Модуль:Npc names/док». (править | история)
См. также этот модуль на английском языке: Module:Npc names. В нём может содержаться более полная или подробная информация.
Модуль для работы шаблона {{npc names}}.
local gameText = require('Module:GameText')
local tr = require('Module:Tr').translate
local currentFrame
local lang
-- l10n + extra data
local extra = mw.loadData('Module:Npc names/data')
local function l10n(key, lang, args)
local result = extra.l10n[lang][key] or extra.l10n['en'][key] or ''
-- replace keys in the string with args
if args and args ~= {} then
for k,v in pairs(args) do
result = string.gsub(result, k, v)
end
end
return result
end
local function getKeysList(id, _rootname)
local rootname = extra.rootnames[id] or _rootname
local sections = gameText.getSections()
local result = {}
for _,k in pairs(sections) do
if string.match(k, rootname .. '_') or k == rootname then
result[#result + 1] = k
end
end
return result
end
local function getNamesList(key)
local temp = {}
local result = {}
local data = gameText.getData(key, lang)
for k,v in pairs(data) do
local _v = v
if extra.version[key] then
_v = _v .. ' ' .. (extra.version[key][k] or '') -- add eicons
end
temp[#temp + 1] = { k, _v }
end
if extra.append[key] then
temp[#temp + 1] = {'', l10n('append_' .. key, lang)}
end
table.sort(temp, function(a, b) return a[2] < b[2] end)
for _,v in ipairs(temp) do
result[#result + 1] = v[2]
end
result[1] = '*' .. result[1]
return table.concat(result, '\n*')
end
local function printList(id, internalName)
local rootname = internalName .. 'Names'
local listOfEntries = getKeysList(id, rootname)
local result = {}
if #listOfEntries > 1 then
for _,v in pairs(listOfEntries) do
result[#result + 1] = '<h3>' .. l10n('heading_' .. v, lang) .. '</h3>'
result[#result + 1] = currentFrame:expandTemplate{ title = 'names list', args = { getNamesList(v)}}
end
else
result[#result + 1] = currentFrame:expandTemplate{ title = 'names list', args = { getNamesList(listOfEntries[1])}}
end
return table.concat(result, '\n')
end
local p = {
main = function(frame)
currentFrame = frame
lang = frame.args.lang ~= '' and frame.args.lang or currentFrame:expandTemplate{ title = 'lang' }
local npc = frame.args.npc
local id = tonumber(frame.args.id)
local iName = frame.args.iName
local notext = frame.args.notext
local article = frame.args.article ~= '' and frame.args.article or l10n('default_article', lang)
local result = ''
if notext and notext ~= 'y' then
result = result .. l10n('text', lang, { ['%$npc%$'] = npc, ['%$article%$'] = article }) .. '\n'
end
result = result .. printList(id, iName)
return result
end,
}
return p