Moduuli:Fr:Wikidata/Formatage entité
Siirry navigaatioon
Siirry hakuun
[ muokkaa ] Tämä moduuli on osa ranskankielisestä Wikipediasta kopioitua Wikidata ja Interface Wikidata -moduulikokonaisuutta (ks. ohjeet ja esimerkit). Listauksen kaikista tähän liittyvistä moduuleista löydät Ranskankielisen Wikipedian Wikidata-moduulit -sivulta.
|
local p = {}
local defaultlang = mw.getContentLanguage():getCode()
-- TODO: replace module dependencies to see what remains
local wd = require 'Module:Fr:Wikidata'
-- local getClaims = require "Module:Fr:Wikidata/Récup".getClaims -- chargé uniquement si nécessaire
-- väliaikainen yhteensopivuus, korvattava Module:Fr:Wikidata moduulissa olevalla
function p.addcat(cat, sortkey)
if sortkey then
return '[[Category:' .. cat .. '|' .. (sortkey or '') .. ']]'
end
return '[[Category:' .. cat .. ']]'
end
function p.getLabel(entity, lang, labelformat)
local label, lang = p.getLabelWithLang(entity, lang, labelformat)
return label
end
function p.getLabelWithLang(entity, lang, labelformat)
if (not entity) then
return nil -- ou option de gestion des erreurs ?
end
lang = lang or defaultlang
if type(labelformat) == 'function' then
return labelformat(entity), 'unknown'
end
if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique
local str, thislang = mw.wikibase.getLabelWithLang(entity)
if str then -- mw.wikibase.label() ne fonctionne pas avec les redirect https://phabricator.wikimedia.org/T157868
return str, thislang
end
end
if type(entity) == 'string' then
entity = mw.wikibase.getEntityObject(entity)
end
if entity and entity.labels and entity.labels[lang] then
return entity.labels[lang].value, 'guessed'
end
end
function p.formatEntity( entity, params )
if (not entity) then
return nil --formatError('entity-not-found')
end
local id = entity
if type(id) == 'table' then
id = id.id
end
params = params or {}
local lang = params.lang or defaultlang
local speciallabels = params.speciallabels
local displayformat = params.displayformat
local labelformat = params.labelformat
local defaultlabel = params.defaultlabel or id
local linktype = params.link
local defaultlinktype = params.defaultlink
local defaultlinkquery = params.defaultlinkquery
if speciallabels and speciallabels[id] then --speciallabels override the standard label + link combination
return speciallabels[id]
end
if params.displayformat == 'raw' then
return id
end
if params.displayformat == 'none' then
return ""
end
local link, label, curlang
local str = '' -- l'intégralité du text à retourner
local wqsbacklink_start = ''
local wqsbacklink_end = ''
if params.displayformat == 'wqsbacklink' then
wqsbacklink_start = '<span class="wqsbacklink" data-wqswikidatavalue="' .. id ..'">';
wqsbacklink_end = '</span>';
end
label, curlang = p.getLabelWithLang(entity, lang, labelformat)
local link = wd.siteLink(entity, linktype, lang)
-- détermination du fait qu'on soit ou non en train de rendre l'élément sur la page de son article
local rendering_entity_on_its_page = wd.isPageOfQId(id)
if (not link) and defaultlinkquery then
defaultlinkquery.excludespecial = true
defaultlinkquery.entity = entity
-- replace with wd.getClaims
local claims = wd.getClaims(defaultlinkquery)
if claims then
for i, j in pairs(claims) do
local id = wd.getMainId(j)
link = wd.siteLink(id, linktype, lang)
if link then
if defaultlinktype == "querylabel" then
local newlabel, newcurlang = p.getLabelWithLang(id, lang, labelformat)
if newlabel then
label=newlabel
curlang=newcurlang
end
end
break
end
end
end
end
if (linktype == '-') or rendering_entity_on_its_page then
if (label ~= nil) then
return wqsbacklink_start .. str .. label .. wqsbacklink_end
else
return str
end
end
if not label then
if ((defaultlabel == '-') or (params.displayformat == 'notranslations')) then
return nil
end
link = wd.siteLink(id, 'wikidata')
return wqsbacklink_start .. str .. '[[' .. link .. '|' .. id .. ']]' .. p.addcat(wd.translate('to translate')) .. wqsbacklink_end
-- si pas de libellé, on met un lien vers Wikidata pour qu'on comprenne à quoi ça fait référence
end
local label_lang_not_ok_link=""
-- Toimintalogiikka on, että
-- * mikäli label on millään testlanguagecodes -kielillä eri
-- * JA dispalyformat on jotain muta kuin "dotranslations"
-- niin tulosta teksti "käännä suomeksi" ja lisää seurantaluokka
-- ja JOS displayformat on "notranslations", niin ei tulosteta mitään.
if (lang ~= curlang and params.displayformat~="dotranslations") then
label_lang_not_ok_link='<small> ([[:d:' .. id .. '|<span class = "indicateur-langue title = "' .. wd.translate('see-wikidata') .. '">käännä suomeksi</span>]])</small>'
local labeltest="failed"
local testlangcodes={"sv", "de", "fr", "se", "no", "nb", "et", "mul"}
for i, testlangcode in ipairs(testlangcodes) do
local testlabel
testlabel=mw.wikibase.getLabelByLang(id, testlangcode)
if testlabel and testlabel~="" then
if label~=testlabel then
labeltest="failed"
break
else
labeltest="ok"
end
end
end
if labeltest=="ok" then
label_lang_not_ok_link = ""
-- Do nothing
elseif (params.displayformat == 'notranslations') then
return ""
else
str = str .. p.addcat(wd.translate('to translate fuzzy'))
end
end
if (not link) and (defaultlinktype == "red") then
return wqsbacklink_start .. str .. '[[' .. label ..']]' .. label_lang_not_ok_link .. wqsbacklink_end
end
if link then
return wqsbacklink_start .. str .. '[[' .. link .. '|' .. label .. ']]' .. label_lang_not_ok_link .. wqsbacklink_end
end
-- on est pas sur l'article de l'entité, et on a pas de lien de site
if (defaultlinktype ~= '-') then
local linktype
local sidelink, site, langcode
if defaultlinktype then
sidelink, site, langcode = wd.siteLink(entity, linktype, lang)
else
sidelink, site, langcode = wd.siteLink(entity, 'wiki', 'en')
end
if not sidelink then
sidelink, site = wd.siteLink(entity, 'wikidata')
end
local icon, class, title = site, nil, nil -- le texte affiché du lien
if site == 'wiki' then
icon, class, title = langcode, "indicateur-langue", wd.translate('see-another-language', mw.language.fetchLanguageName(langcode, defaultlang))
elseif site == 'wikidata' then
icon, class, title = 'd', "indicateur-langue", wd.translate('see-wikidata')
else
title = wd.translate('see-another-project', site)
end
local val = '[[' .. sidelink .. '|' .. '<span class = "' .. (class or '').. '" title = "' .. (title or '') .. '">' .. icon .. '</span>]]'
return wqsbacklink_start .. str .. label .. '<small> (' .. val .. ')</small>' .. label_lang_not_ok_link .. wqsbacklink_end
end
return wqsbacklink_start .. str .. label .. label_lang_not_ok_link .. wqsbacklink_end
end
return p