Mòdul:Lost in translation

De Viccionari
Icona de documentació de mòdul Documentació del mòdul[mostra] [modifica] [refresca]

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Aquest mòdul genera una taula d’etiquetes de Wikidata, en les llengües existents, per a un element determinat segons el seu identificador (Qid). La taula està formatada igual que una taula de traduccions. En principi, l’ús està pensat per afegir l’identificador de Wikidata en la plantilla {{t-final}}.

Exemple:

  • {{#invoke:Lost in translation|getAllLabels|Q35749}}, o bé
  • {{t-final|Q35749}} en la pàgina parlament, genera:

-- I meant "labels in translations".
-- Gets all Wikidata labels for a given Qid and returns them formated as the translation table.

local p = {}

-- dependencies
local Mlang = require('Module:llengua') -- for language name, script and wikt prefix
local Mgeneral = require('Module:ca-general') -- for sorting key in local language
-- global variables
local lang_obj = mw.language.getContentLanguage()

-- on debug console: =p.getAllLabels({['args']={'Q3947'}})
function p.getAllLabels(frame)
	local id = frame.args[1]
	if not mw.wikibase.isValidEntityId(id) then return end
	local entity = mw.wikibase.getEntity(id)
	if not entity then return end
	local entity_labels = entity.labels
	local labels = {}
	for k, v in pairs(entity_labels) do
		if k ~= lang_obj:getCode() then -- local wiki language may have label in fallback languages
			labels[#labels + 1] = Mlang.getByCode(v.language)
			labels[#labels].label = v.value
		end
	end
	
	-- sort by language name
	local comparator = function(a, b)
		return Mgeneral.ordena(a.name) < Mgeneral.ordena(b.name)
	end
	table.sort(labels, comparator)
	
	-- format output
	local trans = {}
	for i, l in ipairs(labels) do
		local trans_lang = lang_obj:ucfirst(l.name) .. ': <span lang="' .. l.code .. '"' -- as Template:t
		if l.sc ~= 'Latn' then
			trans_lang = trans_lang .. ' class="' .. l.sc .. '"'
		end
		trans_lang = trans_lang .. '>' .. l.label .. '</span>'
		local wikt_lang = Mlang.wmproject(l.code)
		if wikt_lang then
			trans_lang = trans_lang .. ' <sup><small>[[:' .. wikt_lang .. ':' .. l.label .. '|(' .. l.code .. ')]]</small></sup>'
		else
			trans_lang = trans_lang .. ' <sup><small>(' .. l.code .. ')</small></sup>'
		end
		table.insert(trans, trans_lang)
	end
	
	local trans_cell = mw.html.create()  -- as Template:trans-top
		:tag('div')
			:addClass('translations-cell')
			:css('background-color', '#FFFFE0')
			:css('vertical-align', 'top')
			:css('text-align', 'left')
			:css('-webkit-column-width', '25em')
			:css('-moz-column-width', '25em')
			:css('-ms-column-width', '25em')
			:css('column-width', '25em')
			:css('column-gap', '20px')
			:newline()
			:tag('ul')
				:wikitext('<li>' .. table.concat(trans, '</li><li>'))
				:wikitext('</li>')
			:done()
		:done()
	local ret = mw.html.create()
		:wikitext('</div>') -- closing translations-cell from template:trans-top
		:tag('div')
			:css('text-align', 'left')
			:css('margin-left', '10%')
			:css('font-style', 'italic')
			:wikitext('Traduccions importades de Wikidata <span style="font-size: smaller;">([[d:' .. id .. ']])</span>')
		:done()
		:newline()
		:node(trans_cell)
		:allDone()
	return ret
end

return p