Module:Plain sister
local p = {}
local sites = { -- interwiki prefix, parameter, label and site id (for Wikidata) { 'w', 'wikipedia', 'bài viết Wikipedia', 'viwiki' }, { 'c', 'commons', 'thư viện ảnh Commons', 'commonswiki' }, { 'c:Category', 'commonscat', 'thể loại Commons', 'commonswiki' }, { 'q', 'wikiquote', 'danh ngôn', 'viwikiquote' }, { 'n', 'wikinews', 'tin tức', 'viwikinews' }, { 'wikt', 'wiktionary', 'từ điển ', 'viwiktionary' }, { 'b', 'wikibooks', 'sách' , 'viwikibooks' }, -- { 'v', 'wikiversity', 'course', 'viwikiversity' }, { 'wikispecies', 'wikispecies', 'danh mục loài', 'specieswiki' }, { 'voy', 'wikivoyage', 'cẩm nang du lịch', 'viwikivoyage' }, { 'd', 'wikidata', 'mục Wikidata', 'wikidatawiki' }, { 'bibliowiki', 'wikilivres', 'bibliowiki', }, -- wikilivres now bibliowiki { 'bibliowiki', 'bibliowiki', 'bibliowiki', }, { 'm', 'meta', 'Meta', 'metawiki' } }
function p.interprojetPart( frame ) local frame = frame:getParent() local item = mw.wikibase.getEntityObject() local links = {}
for _, site in pairs( sites ) do local val = frame.args[site[2]] -- link provided as input parameter if val == then val = nil; end if not val and site[4] ~= and item then -- fetch it from wikidata val = item:getSitelink( site[4] ) if site[4] == 'wikidatawiki' then val = item.id elseif site[4] == 'commonswiki' and val then -- we have link to commons local catFlag = (#val>9 and string.sub(val,1,9) == 'Category:') if (site[2]=='commonscat' and catFlag==false) or (site[2]=='commons' and catFlag==true) then val = nil -- link is to a wrong namespace so let's nuke it elseif (site[2]=='commonscat' and catFlag==true) then val = string.sub(val,10) -- trim 'Category:' from the front end end end if not val and site[2] == 'commons' and item then local statements = item:getBestStatements('P935' ) -- get commons gallery page from P935 property if statements[1] and statements[1].mainsnak.datavalue then val = statements[1].mainsnak.datavalue.value end end if not val and site[2] == 'commonscat' and item then local statements = item:getBestStatements('P373' ) -- get commons category page from P373 property if statements[1] and statements[1].mainsnak.datavalue then val = statements[1].mainsnak.datavalue.value end end
if val then table.insert( links, '[[' .. site[1] .. ':' .. val .. '|' .. site[3] .. ']]' ) end end
if #links == 0 then -- links table length is zero return end
return '
' end return p