Модул:Wikidata/Interproject
Облик
Внимание! Това е един от най-използваните шаблони (не по-малко от 20 хиляди включвания). Всяко негово изменение оказва съществено натоварване на сървърите на фонд «Уикимедия». Моля, убедете се в адекватността и правилността на направените изменения, проверете ги на тестови страници.
Информация за сегашното текущо натоварване може да се получи на страницата статистика, в раздела «Работна опашка». |
Вижте също: Модул:Wikidata/InterprojectLite.
Модуль возвращает ссылку на братские проекты согласно информации из Викиданных:
- если есть русская ссылка, возвращается она
- если есть ссылка на родном языке писателя (см. передаваемый аргумент), то используется она. Поддерживаются multiple значения для языка
- если ничего из этого нет, используется случайная ссылка
Използване
{{#invoke:Wikidata/Interproject|getWikisourceLink}}
{{#invoke:Wikidata/Interproject|getWikiquoteLink}}
local p = {};
function p.getWikisourceLink ( )
return p.getSisterProjectLink( 's', 'wikisource' );
end
function p.getWikiquoteLink ( )
return p.getSisterProjectLink( 'q', 'wikiquote' );
end
function p.getWikipediaLink ( )
return p.getSisterProjectLink( 'w', 'wiki' );
end
function p.getSisterProjectLink( projectInterwikiLettter, projectName )
-- По умолчанию старается достать ссылку на русском, иначе - на родном (P103)
local entity = mw.wikibase.getEntityObject()
if not entity or not entity.sitelinks then
return ''
end
if entity.sitelinks['ru' .. projectName] then
return projectInterwikiLettter .. ':' .. entity.sitelinks['ru' .. projectName].title
end
if entity.claims then
local propValues = entity.claims['P103']
if propValues then
local codes = mw.loadData('Module:Wikidata:Dictionary/P424');
for i, propClaim in pairs(propValues) do
if propClaim.mainsnak and propClaim.mainsnak.datavalue and propClaim.mainsnak.datavalue.value and propClaim.mainsnak.datavalue.value["numeric-id"] then
local languageWikidataId = 'Q' .. propClaim.mainsnak.datavalue.value["numeric-id"]
local codesById = codes[languageWikidataId];
if ( codesById ) then
for j, code in pairs( codesById ) do
local sitelink = entity.sitelinks[code .. projectName]
if sitelink then
return projectInterwikiLettter .. ':' .. code .. ':' .. sitelink.title
end
end
end
end
end
end
end
return ''
end
return p;