Modul:Interwiki from P460
Vzhled
-- from https://www.wikidata.org/wiki/Module:Interwiki_from_P460
-- please make changes there and keep this version in sync
-- based on https://pl.wikipedia.org/wiki/Modu%C5%82:%C5%81atki by [[pl:User:Paweł Ziemian]]
-- Use with:
-- {{#invoke:Interwiki from P460|Interwiki}}
local m = {}
local langlist={"aa","ab","ace","af","ak","als","am","an","ang","ar","arc","arz","as","ast","av","ay","az","ba","bar","bat-ltg","bat-smg","bcl","be","bej","be-tarask","be-x-old","bg","bh","bi","bjn","bm","bn","bo","bpy","br","bs","bug","bxr","ca","cbk-zam","cdo","ce","ceb","ch","cho","chr","chy","ckb","co","cr","crh","crs","cs","csb","cu","cv","cy","da","de","diq","dsb","dv","dz","ee","el","eml","en","enm","eo","es","ess","esu","et","eu","ext","fa","ff","fi","fiu-vro","fj","fo","fon","fr","frp","frr","fur","fy","ga","gaa","gag","gan","gd","gil","gl","glk","gn","got","grc","grc-koi","gu","gv","ha","hak","haw","he","hi","hif","hil","ho","hr","hsb","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","ilo","io","is","it","iu","ja","jbo","jv","ka","kaa","kab","kbd","kg","khw","ki","kj","kk","kl","km","kn","ko","koi","kr","krc","krj","ks","ksh","ku","kv","kw","ky","la","lad","lb","lbe","lez","lfn","lg","li","lij","lmo","ln","lo","lt","ltg","lv","map-bms","mdf","mg","mh","mhr","mi","min","mk","ml","mn","mo","mr","mrj","ms","mt","mus","mwl","my","myv","mzn","na","nah","nan","nap","nb","nds","nds-nl","ne","new","ng","nl","nn","no","non","nov","nrm","nso","nv","ny","oc","om","or","os","pa","pag","pam","pap","paw","pcd","pdc","pdt","peo","pfl","pi","pih","pl","pms","pnb","pnt","ps","pt","pt-br","qu","qya","rm","rmy","rn","ro","roa-rup","roa-tara","ru","rue","rw","sa","sah","sc","scn","sco","sd","se","sg","sh","shi","si","sid","simple","sk","sl","sla","sli","sm","sn","so","sq","sr","srn","ss","st","stq","su","sv","sw","syc","szl","ta","te","tet","tg","th","ti","tk","tl","tn","to","tokipona","tpi","tr","ts","tt","tum","tvl","tw","ty","udm","ug","uk","ur","uz","ve","vec","vep","vi","vls","vo","wa","war","wbl","wo","wuu","wym","xal","xh","xmf","yai","yi","yo","za","zea","zh","zh-classical","zh-cn","zh-min-nan","zh-simple","zh-tw","zh-yue","zu","zun"}
-- list from [[Module:Lang/data]]
function m.Interwiki(frame)
local qid = frame.args.id
local data = mw.wikibase.getEntityObject(qid)
if not data then
return -- brak danych -> kategoria?
end
local links = {}
local appendLink = function(lang, title)
if not links[lang] then
links[lang] = { title }
else
table.insert(links[lang], title)
end
end
local knownLanguages = {}
for i=1, #langlist do
knownLanguages[langlist[i]] = true
end
local extractLinks = function(data)
if data.sitelinks then
for k, v in pairs(data.sitelinks) do
local lang = string.sub(k, 1, -5)
local project = string.sub(k, -4)
if (project == "wiki") and knownLanguages[lang] then
appendLink(lang, v.title)
end
end
end
end
extractLinks(data)
if data.claims and data.claims.P460 then
for _, v in ipairs(data.claims.P460) do
if v.mainsnak.snaktype == "value" then
local seeid = "Q"..tostring(v.mainsnak.datavalue.value["numeric-id"])
local seedata = mw.wikibase.getEntityObject(seeid)
if seedata then
extractLinks(seedata)
end
end
end
end
local result = {}
local content = mw.title.getCurrentTitle():getContent()
for k, v in pairs(links) do
local pattern = "%[%["..mw.ustring.gsub( k, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )..":[^%[%]|]+%]%]"
local interwiki = mw.ustring.match(content, pattern)
if not interwiki and not data.sitelinks[k.."wiki"] then
table.insert(result, "[[")
table.insert(result, k)
table.insert(result, ":")
table.insert(result, v[1])
table.insert(result, "]]")
end
end
return table.concat(result, "")
end
return m