Módulo:Wikidata/Unidades

Módulo auxiliar para obter as unidades de medida de uma quantidade do Wikidata. O formato para cada unidade é como segue:

	Qxxx = {
		label = 'xxx',
		plural = 'xxx',
		ucode = 'xxx',
		},

A inclusão nesta tabela é opcional:

  • Q seguido de alguns números é o identificador da unidade de medida no Wikidata, usado como referência.
  • label é o rótulo da unidade no Wikidata. É obtido automaticamente a partir da consulta no Wikidata e está incluído aqui em casos de alto uso para evitar mudanças súbitas e massivas devido a modificação no Wikidata, seja de vandalismo ou não.
  • plural é o plural da unidade de medida, para ser usado quando a quantidade está fora do intervalo aberto (-2,2). Ele é gerado automaticamente com base nas regras da língua portuguesa.
  • ucode é o código ou abreviatura da unidade, para ser usado se você usar o parâmetro unidade. Se não for passado, irá exibir a unidade de medida por extenso.

local wikidata_units = {
Q11573 = {
				label = 'metro',
				plural = 'metros',
				ucode = 'm',
				},
Q828224 = {
                label = 'quilômetro',
                plural = 'quilômetros',
                ucode = 'km',
                },
Q844338 = {
                label = 'hectômetro',
                plural = 'hectômetros',
                ucode = 'hm',
                },
Q848856 = {
                label = 'decâmetro',
                plural = 'decâmetros',
                ucode = 'dam',
                },
Q200323 = {
                label = 'decímetro',
                plural = 'decímetros',
                ucode = 'dm',
                },
Q174728 = {
                label = 'centímetro',
                plural = 'centímetros',
                ucode = 'cm',
                },
Q174789 = {
                label = 'milímetro',
                plural = 'milímetros',
                ucode = 'mm',
                },
Q175821 = {
                label = 'micrometro',
                plural = 'micrometros',
                ucode = 'µm',
                },
Q178674 = {
                label = 'nanometro',
                plural = 'nanometros',
                ucode = 'nm',
                },
Q192274 = {
                label = 'picometro',
                plural = 'picometros',
                ucode = 'pm',
                },
Q253276 = {
                label = 'milha',
                plural = 'milhas',
                ucode = 'mi',
                },
Q12129 = {
                label = 'parsec',
                plural = 'parsecs',
                ucode = 'pc',
                },
Q1811 = {
                label = 'unidade astronômica',
                plural = 'unidades astronômicas',
                ucode = 'UA',
                },
Q81292 = {
                label = 'acre',
                plural = 'acres',
                },
Q35852 = {
                label = 'hectare',
                plural = 'hectares',
                ucode = 'ha',
                },
Q25343 = {
                label = 'metro quadrado',
                plural = 'metros quadrados',
                ucode = 'm²',
                },
Q712226 = {
                label = 'quilômetro quadrado',
                plural = 'quilômetros quadrados',
                ucode = 'km²',
                },
Q11032 =		{
				label = 'jornais',
				plural = 'jonais',
				ucode = '',
				},
Q190399 =		{
				label = 'panfleto',
				plural = 'panfletos',
				ucode = '',
				},
Q149757 =		{
				label = 'fita cassete',
				plural = 'fitas cassete',
				ucode = '',
				},
Q7982 =		{
				label = 'CD-ROM',
				plural = 'CDs-ROM',
				ucode = '',
				},
Q178588 =		{
				label = 'disco de vinil',
				plural = 'discos de vinil',
				ucode = '',
				},
Q2489298 = {
                label = 'centímetro quadrado',
                plural = 'centímetros quadrados',
                ucode = 'cm²',
                },
Q2737347 = {
                label = 'milímetro quadrado',
                plural = 'milímetros quadrados',
                ucode = 'mm²',
                },
Q11582 = {
                label = 'litro',
                plural = 'litros',
                ucode = 'L',
                },
Q2332346 = {
                label = 'mililitro',
                plural = 'mililitros',
                ucode = 'mL',
                },
Q5195628 = {
				label = 'hectômetro cúbico',
                plural = 'hectômetros cúbicos',
                ucode = 'hm³',
                },
Q25517 = {
                label = 'metro cúbico',
                plural = 'metros cúbicos',
                ucode = 'm³',
                },
Q1022113 = {
                label = 'centímetro cúbico',
                plural = 'centímetros cúbicos',
                ucode = 'cm³',
                },
Q571 = {
                label = 'livro',
                plural = 'livros',
                ucode = 'cm³',
                },
Q3675550 = {
                label = 'milímetro cúbico',
                plural = 'milímetros cúbicos',
                ucode = 'mm³',
                },
Q577 = {
                label = 'ano',
                plural = 'anos',
                ucode = 'a',
                },
Q573 = {
                label = 'dia',
                plural = 'dias',
                ucode = 'd',
                },
Q25235 = {
                label = 'hora',
                plural = 'horas',
                ucode = 'h',
                },
Q7727 = {
                label = 'minuto',
                plural = 'minutos',
                ucode = 'min',
                },
Q5151 = {
                label = 'mês',
                plural = 'meses',
                },
Q11574 = {
                label = 'segundo',
                plural = 'segundos',
                ucode = 's',
                },
Q723733 = {
                label = 'milissegundo',
                plural = 'milissegundos',
                ucode = 'ms',
                },
Q842015 = {
                label = 'microsegundo',
                plural = 'microsegundos',
                ucode = 'µs',
                },
Q838801 = {
                label = 'nanosegundo',
                plural = 'nanosegundos',
                ucode = 'ns',
                },
Q3902709 = {
                label = 'picosegundo',
                plural = 'picosegundos',
                ucode = 'ps',
                },
Q23387 = {
                label = 'semana',
                plural = 'semanas',
                },
Q39369 = {
                label = 'hertz',
                plural = 'hertzs',
                ucode = 'Hz',
                },
Q2143992 = {
                label = 'quilohertz',
                plural = 'quilohertzs',
                ucode = 'kHz',
                },
Q732707 = {
                label = 'megahertz',
                plural = 'megahertzs',
                ucode = 'MHz',
                },
Q3276763 = {
                label = 'gigahertz',
                plural = 'gigahertzs',
                ucode = 'GHz',
                },
Q11570 = {
                label = 'quilograma',
                plural = 'quilogramas',
                ucode = 'kg',
                },
Q41803 = {
                label = 'grama',
                plural = 'gramas',
                ucode = 'Gg',
                },
Q3241121 = {
                label = 'miligrama',
                plural = 'miligramas',
                ucode = 'mg',
                },
Q100995 = {
                label = 'libra',
                plural = 'libras',
                ucode = 'lb',
                },
Q483261 = {
                label = 'unidade de massa atômica',
                plural = 'unidades de massa atômica',
                ucode = 'u',
                },
Q844211 = {
                label = 'quilograma por metro cúbico',
                plural = 'quilogramas por metro cúbico',
                ucode = 'kg/m³',
                },
Q13147228 = {
                label = 'grama por centímetro cúbico',
                plural = 'gramas por centímetro cúbico',
                ucode = 'g/m³',
                },
Q21061369 = {
                label = 'grama por quilograma',
                plural = 'gramas por quilograma',
                ucode = 'g/kg',
                },
Q834105 = {
                label = 'grama por litro',
                plural = 'gramas por litro',
                ucode = 'g/L',
                },
Q21077820 = {
                label = 'miligrama por metro cúbico',
                plural = 'miligramas por metro cúbico',
                ucode = 'mg/m³',
                },
Q21091747 = {
                label = 'miligrama por quilograma',
                plural = 'miligramas por quilograma',
                ucode = 'mg/kg',
                },
Q21075844 = {
                label = 'mililitro por litro',
                plural = 'mililitros por litro',
                ucode = 'mL/L',
                },
Q21064845 = {
                label = 'mol por litro de solução',
                plural = 'mols por litro de solução',
                ucode = 'mol/L',
                },
Q21064838 = {
                label = 'mol por quilo de solvente',
                plural = 'mols por quilo de solvente',
                ucode = 'mol/kg',
                },
Q2055118 = {
                label = 'parte por bilhão',
                plural = 'partes por bilhão',
                ucode = 'ppb',
                },
Q21006887 = {
                label = 'parte por milhão',
                plural = 'partes por milhão',
                ucode = 'ppm',
                },
Q25267 = {
                label = 'grau Celsius',
                plural = 'graus Celsius',
                ucode = '°C',
                },
Q11579 = {
                label = 'Kelvin',
                plural = 'Kelvin',
                ucode = 'K',
                },
Q42289 = {
                label = 'grau Fahrenheit',
                plural = 'graus Fahrenheit',
                ucode = '°F',
                },
Q177974 = {
                label = 'atmosfera',
                plural = 'atmosferas',
                ucode = 'atm',
                },
Q44395 = {
                label = 'Pascal',
                plural = 'Pascal',
                ucode = 'P',
                },
Q6859652 = {
                label = 'milímetro de mercúrio',
                plural = 'milímetros de mercúrio',
                ucode = 'mmHg',
                },
Q2042279 = {
                label = 'metro de água',
                plural = 'metros de água',
                ucode = 'mH2O',
                },
Q20966455 = {
                label = 'joule por mol Kevin',
                plural = 'joules por mol Kevin',
                ucode = 'J/(mol.K)',
                },
Q1463969 = {
                label = 'watt por metro kelvin',
                plural = 'watts por metro kelvin',
                ucode = 'W/(m.K)',
                },
Q180154 = {
                label = 'quilômetro por hora',
                plural = 'quilômetros por hora',
                ucode = 'km/H',
                },
Q182429 = {
                label = 'metro por segundo',
                plural = 'metros por segundo',
                ucode = 'm/s',
                },
Q4220561 = {
                label = 'quilômetro por segundo',
                plural = 'quilômetros por segundo',
                ucode = 'km/s',
                },
Q128822 = {
                label = 'nó',
                plural = 'nós',
                ucode = 'nó',
                },
Q20966435 = {
                label = 'ampere por volt metro',
                plural = 'amperes por volt metro',
                ucode = 'A/(V.m)',
                },
Q843877 = {
                label = 'luminosidade solar',
                ucode = 'Lsol',
                },
Q13035094 = {
                label = 'joule por mol',
                plural = 'joule por mol',
                ucode = 'J/mol',
                },
Q21077849 = {
                label = 'quilojoule por quilograma',
                plural = 'quilojoule por quilograma',
                ucode = 'kJ/kg',
                },
Q4917 = {
                label = 'dólar americano',
                plural = 'dólares americanos',
                ucode = '$',
                },
Q173117 = {
                label = 'real',
                plural = 'reais',
                ucode = 'R$',
                },
Q4916 = {
                label = 'euro',
                plural = 'euros',
                ucode = '€',
                },
Q25224 = {
                label = 'libra esterlina',
                plural = 'libras esterlinas',
                ucode = '£',
                },
Q28390 = {
                label = 'grau',
                plural = 'graus',
                ucode = '°',
                },
Q11229 = {
                label = 'porcentagem',
                plural = 'porcentagens',
                ucode = '%',
                },
Q25236 = {
                label = 'watt',
                plural = 'watts',
                ucode = 'W',
                },
Q3320608 = {
                label = 'quilowatt',
                plural = 'quilowatts',
                ucode = 'kW',
                },
Q93318 = {
                label = 'milha náutica',
                plural = 'milhas náuticas',
                ucode = 'mn',
                },
Q79738 = {
                label = 'gigabyte',
                plural = 'gigabytes',
                ucode = 'Gb',
                },
Q752197 = {
                label = 'quilojaule por mol',
                plural = 'quilojaules por mol',
                ucode = 'kJ/mol',
                },
Q191118 = {
                label = 'tonelada',
                plural = 'toneladas',
                ucode = 'ton',
                },
Q319604 = {
                label = 'passageiro',
                plural = 'passageiros',
                },
Q829073 = {
				label = 'segundo de arco',
				plural = 'segundos de arco',
				ucode = '"',
				},
Q209426 = {
				label = 'minuto de arco',
				plural = 'minutos de arco',
				ucode = "'",
				},
Q218593 = {
                label = 'polegada',
                plural = 'polegadas',
                ucode = '"',
                },
Q14787261 = {
                label = 'megawatt-hora',
                plural = 'megawatt-horas',
                ucode = 'MWh',
                },
Q2051195 = {
                label = 'gigawatt-hora',
                plural = 'gigawatt-horas',
                ucode = 'GWh',
                },
Q6982035 = {
                label = 'megawatt',
                plural = 'megawatts',
                ucode = 'MW',
                },
Q794261 =       {
                label = 'metro cúbico por segundo',
                plural = 'metros cúbicos por segundo',
                ucode = 'm³/s',
                },
Q125191 =		{
				label = 'fotografia',
				plural = 'fotografias',
				ucode = '',
				},
Q4006 =		{
				label = 'mapa',
				plural = 'mapas',
				ucode = '',
				},
Q11424 =		{
				label = 'filme',
				plural = 'filmes',
				ucode = '',
				},
Q178659 =		{
				label = 'ilustração',
				plural = 'ilustrações',
				ucode = '',
				},
Q747779 =		{
				label = 'videoteipe',
				plural = 'videoteipes',
				ucode = '',
				},
}

local function getUnit(amount, label, unitID, code)
	if label == nil or label == '' then return unitID end
	local id_data = wikidata_units[unitID] or {}
	local unit_text = ''
	--Se o parâmetro code for passado, utilizar a unidade de medida
	if code then
		unit_text = id_data.ucode or id_data.label or label
	--Senão, se o valor estiver no intervalo (-2,2) colocar a unidade no singular
	elseif mw.ustring.sub(amount, 1,2) =="-0," or amount =="-1" or mw.ustring.sub(amount, 1,2) =="-1," or mw.ustring.sub(amount, 1,2) =="0," or amount =="1" or mw.ustring.sub(amount, 1,2) =="1," then
		unit_text = id_data.label or label
	--Senão, colocar a unidade no plural ou mostrar mensagem para inserir unidade de medida nesta página
	else
		unit_text = id_data.plural or "Inserir unidade de medida em [[Módulo:Wikidata/Unidades]]"
	end
	return unit_text
end

return {getUnit = getUnit}