Mòdul:Wikidata language
La documentació d'ús d'aquest mòdul es pot crear a Mòdul:Wikidata language/ús
local p = {}
-- dependencies:
---- 'Module:llengua/taula' -- table with local code languages
local Mwd = require('Module:Wikidata') -- fetch Wikidata
-- fetch data
local function getData(qid)
local lang = mw.language.getContentLanguage().code
if qid == nil or qid == '' then
qid = Mwd.claim{property='P301', formatting='raw', shownovalue='false', editicon='false'}
if qid == nil then
return
end
end
local data = {}
local entity = mw.wikibase.getEntity(qid)
data.label = Mwd.getLabel{qid, {linked=no}}
if not string.find(data.label, qid) then -- first letter lowercase in local language
data.label = mw.ustring.gsub(data.label, "^%u", mw.ustring.lower)
end
data.aliases = {}
local aliases = entity.aliases[lang]
for i, t in ipairs(aliases or {}) do
data.aliases[#data.aliases + 1] = t.value
end
data.description = entity:getDescription()
.. " [[File:Arbcom ru editing.svg|10px|baseline|modifica a Wikidata|link="
.. "https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/" .. qid .. "/" .. lang .. "]]"
data.endonym = Mwd.claim{item=qid, property='P1705', list='false', editicon='false'}
data.family = Mwd.getParentValues{item=qid, property='P279', uptovalueid='Q20162172 Q783816 Q25268 Q169921 Q33838 Q33705 Q276314 Q51739 Q34113 Q7524744 Q19682167', rowformat='$1', cascade='true', sorting='-1', editicon='false'}
data.code = {}
data.code.iso6391 = Mwd.claim{item=qid, property='P218', list='false', shownovalue='false', editicon='false'}
data.code.iso6392 = Mwd.claim{item=qid, property='P219', list='false', shownovalue='false', editicon='false'}
data.code.iso6393 = Mwd.claim{item=qid, property='P220', list='false', shownovalue='false', editicon='false'}
data.code.wikimedia = Mwd.claim{item=qid, property='P424', list='false', editicon='false'}
if next(data.code) == nil then -- no code, search the local one
local lang_table = mw.loadData("Module:llengua/taula")
for c, t in pairs(lang_table) do
if t.nom == data.label then
data.code.wiktionary = c
break
end
end
end
data.map = Mwd.claim{item=qid, property='P1846 or P242', formatting='[[File:$1|center|200x200px]]', list=1, editicon='false'}
data.projects = {}
data.projects.wikidata = qid
data.projects.wikipedia = entity:getSitelink(lang .. 'wiki')
if data.code.wikimedia then
-- A Wikimedia project exists if its Main page is linked at d:Q5296
local main_page = mw.wikibase.getEntity('Q5296')
if main_page.sitelinks[data.code.wikimedia .. 'wiktionary'] then
data.projects.wiktionary = data.code.wikimedia
end
end
return data
end
-- main function
function p.show(frame)
local data = getData(frame.args[1])
local lang = '<span style="font-weight: bold;">' .. data.label .. '</span>'
if #data.aliases > 0 then
lang = lang .. '<br /><span style="font-size: smaller;">(' .. table.concat(data.aliases, ", ") .. ')</span>'
end
if data.description then
lang = lang .. '<br />' .. data.description
end
if data.endonym then
local nym = string.match(data.endonym, '>(.+)<')
if not nym then nym = data.endonym end
local wikt_code = data.code.wiktionary or data.code.iso6391 or data.code.iso6393 or data.code.wikimedia
lang = lang .. '<br />Autoglotònim: '
lang = lang .. frame:expandTemplate{title = 'm', args = {wikt_code or 'und', '', nym}}
end
local codes = ''
if data.code.wikimedia == data.code.iso6391 or data.code.wikimedia == data.code.iso6393 then
data.code.wikimedia = nil
end
if data.code.iso6391 then
codes = '[https://id.loc.gov/vocabulary/iso639-1/' .. data.code.iso6391 .. ' <code>' .. data.code.iso6391 .. '</code>] <span style="font-size: 80%;">(ISO 639-1)</span>'
if data.code.iso6393 or data.code.wikimedia then
codes = codes .. ', '
end
end
if data.code.iso6393 then
codes = codes .. '[https://iso639-3.sil.org/code/' .. data.code.iso6393 .. ' <code>' .. data.code.iso6393 .. '</code>] <span style="font-size: 80%;">(ISO 639-3)</span>'
if data.code.wikimedia then
codes = codes .. ', '
end
elseif data.code.iso6392 then
codes = codes .. '[https://iso639-3.sil.org/code/' .. data.code.iso6392 .. ' <code>' .. data.code.iso6392 .. '</code>] <span style="font-size: 80%;">(ISO 639-2)</span>'
if data.code.wikimedia then
codes = codes .. ', '
end
end
if data.code.wikimedia then
codes = codes .. '[https://robin.toolforge.org/?tool=codelookup&code=' .. data.code.wikimedia .. ' <code>' .. data.code.wikimedia .. '</code>] <span style="font-size: 80%;">(Wikimedia)</span>'
end
if data.code.wiktionary then
codes = codes .. '<code>' .. data.code.wiktionary .. '</code> <span style="font-size: 80%;">(Viccionari)</span>'
end
local projects = '[[d:Special:EntityPage/' .. data.projects.wikidata .. '|element Wikidata]]'
if data.projects.wikipedia then
projects = projects .. ', [[w:' .. data.projects.wikipedia .. '|article Viquipèdia]]'
end
if data.projects.wiktionary then
projects = projects .. ', [[:' .. data.projects.wiktionary .. ':|versió Wiktionary]]'
end
local html_table = mw.html.create('table')
html_table
:addClass('wikitable')
:newline()
:tag('tr')
:newline()
:tag('th')
:css('text-align', 'left;')
:wikitext('Llengua')
:done()
:newline()
:tag('td')
:wikitext(lang)
:done()
:newline()
:tag(data.map and 'td' or 'span')
:attr('rowspan', '4')
:wikitext(data.map or '')
:done()
:done()
html_table
:newline()
:tag('tr')
:newline()
:tag('th')
:css('text-align', 'left;')
:wikitext('Codi')
:done()
:newline()
:tag('td')
:wikitext(codes)
:done()
:done()
html_table
:newline()
:tag('tr')
:newline()
:tag('th')
:css('text-align', 'left;')
:wikitext('Família')
:done()
:newline()
:tag('td')
:css('padding-left', '1em;')
:wikitext(data.family)
:done()
:done()
html_table
:newline()
:tag('tr')
:newline()
:tag('th')
:css('text-align', 'left;')
:wikitext('Projectes')
:done()
:newline()
:tag('td')
:wikitext(projects)
:done()
:done()
:done()
return html_table
end
-- on debug console use: =p.debug{'Qid'} with your Qid
function p.debug(param)
local data = getData(param[1])
return mw.dumpObject(data)
end
return p