Модуль:Sandbox/Olexa Riznyk/Стан перекладів
Документація модуля[створити]
Зараз цей модуль не має відповідної документації. Якщо вам відомі призначення та засади використання цього модуля, будь ласка, напишіть хоча б коротеньку документацію. |
Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього шаблону. Підсторінки цієї сторінки. |
-- Стан перекладів: Відображує перелік перекладених статей як таблицю з додатковою інформацією про стан перекладів
-- Приклад використання: {{#invoke:Стан перекладів|table|[[Стаття 1]]|[[Стаття 2]]|[[Стаття 3]]}}
local p = {}
function p.table(frame)
-- Header
local header = {'{|class="wikitable sortable"\n',
'|-\n',
'!№\n',
'!Сторінка\n',
'!Мова<br/>оригіналу\n',
'!Версія<br/>перекладу\n',
'!Версія<br/>оригіналу\n'}
local resultTable = table.concat(header);
-- Rows
for index, pageText in pairs(frame.args) do
_, _, pageTitleText = mw.ustring.find(pageText, '%[%[(.+)%]%]') -- RRR Is there a wikicode parser to some kind of DOM?
pageTitle = mw.title.new(pageTitleText)
translTemplateNames = {'Перекладена стаття', 'перекладена стаття',
'ПКС',
'Перекладено', 'перекладено',
'Перекладена сторінка', 'перекладена сторінка',
'Пс', 'пс',
'Translated page', 'translated page',
'Translated', 'translated',
'Запозичений код', 'запозичений код',
'Запозичений шаблон', 'запозичений шаблон',
'Перекладений шаблон', 'перекладений шаблон'} -- TODO: Implement automatic letter case variation instead of listing variants
for _, translTemplateName in ipairs(translTemplateNames) do
translTemplatePattern = '(%{%{%s*' .. translTemplateName .. '%s*%|[^%}]+%}%})'
if mw.ustring.find(pageTitle.talkPageTitle:getContent(), translTemplatePattern) then
_, _, translTemplateText = mw.ustring.find(pageTitle.talkPageTitle:getContent(), translTemplatePattern) -- RRR Couldn't mw.ustring.find be called once?
break -- Note: We're taking first translation template only
end
end
_, _, sourceLang = mw.ustring.find(translTemplateText, '%|%s*(%a+)')
if mw.ustring.find(translTemplateText, '%|%s*version%s*%=%s*(%d+)') then
_, _, sourceVers = mw.ustring.find(translTemplateText, '%|%s*version%s*%=%s*(%d+)')
else
_, _, sourceVers = mw.ustring.find(translTemplateText, '%|%s*версія%s*%=%s*(%d+)')
end
_, _, translVers = mw.ustring.find(translTemplateText, '%|%s*insertversion%s*%=%s*(%d+)')
row = {'|-\n',
'|' .. index .. '\n',
'|' .. pageText .. '\n',
'|' .. mw.language.fetchLanguageName(sourceLang, mw.getContentLanguage():getCode()) .. '\n',
'|' .. translVers .. '\n',
'|' .. sourceVers .. '\n'}
resultTable = resultTable .. table.concat(row)
end
-- Footer
local footer = {'|}\n'}
resultTable = resultTable .. table.concat(footer)
return resultTable
end
return p