Изменения
поддержка Викиданных в проверке на существование страниц; русскоязычная метка «ВД» для нп1 и нп3; отказ от использования Ref-d в модуле по непредусмотрительности
local p = {}
local p = {}
local categories = {
['error'] = 'Википедия:Статьи с некорректно заполненным шаблоном Не переведено',
['outdated'] = 'Википедия:Статьи с неактуальным шаблоном Не переведено',
['redirect'] = 'Википедия:Запросы на замену перенаправлений переводами',
['unknown'] = 'Википедия:Статьи с неизвестными параметрами шаблонов серии Не переведено',
['semiold'] = 'Википедия:Статьи с полустарым синтаксисом в шаблонах серии Не переведено',
['probably_wrong'] = 'Википедия:Статьи с предположительно неверными параметрами в шаблонах серии Не переведено',
['lang-not-exists'] = 'Википедия:Статьи с шаблоном Не переведено 2, использующие несуществующий шаблон lang-XX',
}
local function is_empty(param)
local function is_empty(param)
end
end
local function getTitle(page)
local function is_wikidata(lang)
return lang == 'd'
end
local function getTitle(page, iw_title, is_wikidata_link)
local success, result = pcall(function()
local success, result = pcall(function()
local title = mw.title.new(page)
if is_wikidata_link then
local entity = mw.wikibase.getSitelink(iw_title)
if entity ~= nil then
return {
title = entity,
exists = true,
-- предположение, что в Викиданных не перенаправление
isRedirect = false,
}
end
return nil
else
local title = mw.title.new(page)
return {
title = page,
exists = title.exists,
isRedirect = title.isRedirect,
}
end
end)
end)
if success then
if success then
return result
return result
end
end
return nil
end
end
title = string.format(':%s:%s', lang, title)
title = string.format(':%s:%s', lang, title)
end
end
if lang == 'd' then
if is_wikidata(lang) then
title = title .. '#sitelinks-wikipedia'
title = title .. '#sitelinks-wikipedia'
end
end
)
)
end
end
local function throwError(text, category_code, allow_cat)
local function throwError(text, category_code, allow_cat)
end
end
-- проверка не неизвестные параметры
-- проверка на неизвестные параметры
local redundant_params = {}
local redundant_params = {}
local good_params = {'mode', 1, 2, 3, 4, 'l', 'leave', 'r', 'q', 'nocat'}
local good_params = {'mode', 1, 2, 3, 4, 'l', 'leave', 'r', 'q', 'nocat'}
-- получение страницы, чтобы знать, существует ли она и является ли она перенаправлением
-- получение страницы, чтобы знать, существует ли она и является ли она перенаправлением
local isWikidataLink = is_wikidata(lang)
local considerAsExists
local considerAsExists
local isRedirect
local isRedirect
considerAsRedirect = false
considerAsRedirect = false
else
else
-- дорогая функция, после 500 вызова крашится
local titleObject = getTitle(title, iw_title, isWikidataLink)
if titleObject then
if titleObject then
title = titleObject.title
considerAsExists = titleObject.exists
considerAsExists = titleObject.exists
isRedirect = titleObject.isRedirect
isRedirect = titleObject.isRedirect
return throwError('некорректный ISO-код «' .. lang .. '»', 'error', allow_cat)
return throwError('некорректный ISO-код «' .. lang .. '»', 'error', allow_cat)
end
end
if mode == 2 and lang == 'd' then
if mode == 2 and isWikidataLink then
return throwError('шаблон Не переведено 2 не поддерживает Викиданные вместо языка')
return throwError('шаблон Не переведено 2 не поддерживает Викиданные вместо языка')
end
end
local iw_tooltip
local iw_tooltip
local ucfirst_title = mw.getContentLanguage():ucfirst(title)
local ucfirst_title = mw.getContentLanguage():ucfirst(title)
if lang == 'd' then
if isWikidataLink then
iw_tooltip = string.format('Элемент статьи «%s» в Викиданных', ucfirst_title)
iw_tooltip = string.format('Элемент статьи «%s» в Викиданных', ucfirst_title)
else
else
if mode == 1 then
if mode == 1 then
local lang_text
local lang_text
if lang == 'd' then
if isWikidataLink then
lang_text = 'd'
lang_text = 'ВД'
else
else
lang_text = languages[lang][1]
lang_text = languages[lang][1]
-- для шаблона "не переведено 3"
-- для шаблона "не переведено 3"
elseif mode == 3 then
elseif mode == 3 then
local ref = string.format(
local ref = string.format(
'<span style="font-size:95%%; position: relative; top: .4em;">%s</span>',
'<span style="font-size:95%%; position: relative; top: .4em;">%s</span>',
frame:expandTemplate{ title = 'ref-' .. lang, args = args }
frame:expandTemplate{
title = 'ref-' .. (isWikidataLink and 'info' or lang),
args = {
isWikidataLink and 'ВД' or ''
}
}
)
)
local ru_link = wikilink(title, 'русск.')
local ru_link = wikilink(title, 'русск.')