Vés al contingut

Mòdul:Location/ca

De la Viquipèdia, l'enciclopèdia lliure
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul Location (codi · ús · discussió · proves · tests · casos prova | subpàgines · enllaços)

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


Mòdul auxiliar de Mòdul:Location per definir el referent d'una localització segons les normes d'estil en català.

La norma d'estil general és Viquipèdia:Localitats. S'ha adaptat segons discussions posteriors per definir-ho cas a cas. Vegeu la discussió prèvia Tema:Valflod7wkeekft4 i la discussió en la pàgina principal del mòdul.

  • Estalvi de redundàncies. Com a criteri general hi ha un estalvi de repeticions considerades redundants. S'eviten els exemples: Barcelona (Barcelonès), Alacant (Alacantí), Guardiola de Berguedà (Berguedà), Eivissa (Eivissa), Andorra la Vella (Andorra), Madrid (Comunidad de Madrid), Ciutat de Quebec (Quebec), i casos similars.
  • Excepcions. Hi ha una taula d'excepcions on es considera que un referent és innecessari per massa evident. Està definida a namingExceptions amb casos com: Washington DC (EUA), Londres (Anglaterra), i d'altres.
  • Espanya (comunitat com a opció final en tots els casos):
    • Catalunya i País Valencià per comarca.
    • Illes Balears per illa.
    • Aragó per comarca de la Franja o per província.
    • Illes Canàries per illa o per província com a alternativa.
    • Resta d'Espanya per província.
  • França:
    • Catalunya Nord per comarca.
    • Regions marcadament geogràfiques o històriques: Còrsega, Bretanya i totes les regions o col·lectivitats d'ultramar més territoris dependents.
  • Itàlia per illes (regions amb estatut especial): Sardenya, Sicília.
  • Regne Unit per país constituent (Anglaterra, Escòcia, ...) o per territori d'ultramar.
  • Portugal per regions autònomes: Açores, Madeira.
  • Estats Units per estat federat o per territori no incorporat.
  • Territoris històrics específics: Quebec del Canadà, Tibet de la Xina.
  • Resta de casos amb el referent general de l'estat.

local p = {}

p.referentFormat = 'brackets'

-- locations where any referent is redundant or innecessary
function p.namingExceptions(id)
	local exc_id = {
		['Q60'] = true, -- Nova York (Nova York)
		['Q61'] = true, -- Washington DC (EUA)
		['Q84'] = true, -- Londres (Anglaterra)
		['Q90'] = true, -- París (França)
		['Q220'] = true, -- Roma (Itàlia)
		['Q2807'] = true, -- Madrid (Espanya)
	}
	return exc_id[id]
end

---- Cases by state

-- Canada, Quebec
local function namingLocationCA(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local adm_entity = main.getAdmByID(adm, 'Q11828004', label) -- província del Canadà
	if adm_entity and adm_entity == 'Quebec' and not string.find(label, adm_entity, 1, true) then -- no Ciutat de Quebec (Quebec)
		return main.addReferent(label, adm_entity, p.referentFormat)
	end
	return main.addReferent(label, 'Canadà', p.referentFormat)
end

-- Espanya, per comarca/illa/província/comunitat
local function namingLocationES(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local community = main.getAdmByID(adm, 'Q10742', '') -- comunitat autònoma
	if community == nil then
		community = main.getAdmByID(adm, 'Q3297051', '') -- comunitat foral
	end
	if community == nil then
		community = main.getAdmByID(adm, 'Q2736168', '') -- nacionalitat històrica
	end
	if community == 'Illes Balears' then
		return main.addReferent(label, main.getAdmByID(adm, 'Q23442', label) or 'Balears', p.referentFormat) -- illa
	elseif community == 'Catalunya' then
		if c_date < 1700 then
			return label
		end
		local comarca = main.getAdmByID(adm, 'Q937876', label) -- comarca de Catalunya
		if not comarca then
			comarca = main.getAdmByID(adm, 'Q19920968', label) -- entitat territorial singular
		end
		if comarca
			and (mw.ustring.find(comarca, mw.ustring.sub(label, 1, -2), 1, true) -- no Barcelona (Barcelonès), ...
			or mw.ustring.find(label, comarca, 1, true)) -- no Guardiola de Berguedà (Berguedà)
			then
				return label
		end
		return main.addReferent(label, comarca or community, p.referentFormat)
	elseif community == 'País Valencià' then
		if c_date < 1900 then
			return label
		end
		local comarca = main.getAdmByID(adm, 'Q766277', label) -- comarca del País Valencià
		if comarca
			and (mw.ustring.find(comarca, mw.ustring.sub(label, 1, -2), 1, true) -- no Alancat (Alacantí), ...
			or mw.ustring.find(label, comarca, 1, true))
			then
				return label
		end
		return main.addReferent(label, comarca or community, p.referentFormat)
	elseif community == 'Aragó' then
		if c_date > 1900 then
			local comarca = main.getReferencedEntity(qid, {
				['Q1425491'] = 'Ribagorça',
				['Q1479641'] = 'Llitera',
				['Q804160'] = 'Baix Cinca',
				['Q804156'] = 'Baix Aragó',
				['Q804155'] = 'Baix Aragó - Casp',
				['Q804156'] = 'Baix Aragó',
				['Q1544003'] = 'Matarranya'
				})
			if comarca then
				return main.addReferent(label, comarca, p.referentFormat)
			end
		end
	elseif community == 'Illes Canàries' then
		local adm_entity = main.getAdmByID(adm, 'Q23442', label) -- illa
		if adm_entity == nil and _date < 1800 then
			return main.addReferent(label, 'Canàries', p.referentFormat)
		end
		if adm_entity == nil or mw.ustring.find(label, adm_entity or '', 1, true) then -- no Santa Cruz de Tenerife (Tenerife)...
			adm_entity = main.getAdmByID(adm, 'Q162620', label) -- província d'Espanya
		end
		if adm_entity and mw.ustring.find(label, adm_entity, 1, true) then -- no Las Palmas de Gran Canaria (Las Palmas)
			adm_entity = nil
		end
		return main.addReferent(label, adm_entity or 'Canàries', p.referentFormat)
	elseif c_date < 1800 then
		return label
	end
	local province = main.getAdmByID(adm, 'Q162620', label) or community
	if mw.ustring.find(province or '', label, 1, true) then -- no Madrid (Comunidad de Madrid)...
		province = nil
	end
	return main.addReferent(label, province or 'Espanya', p.referentFormat)
end

-- EUA, per estat/territori
local function namingLocationUSA(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local adm_entity = main.getAdmByID(adm, 'Q35657', label) -- estat dels Estats Units
	if adm_entity == nil then
		adm_entity = main.getAdmByID(adm, 'Q783733', label) -- territori no incorporat dels Estats Units
	end
	return main.addReferent(label, adm_entity or 'EUA', p.referentFormat)
end

-- França, per comarca/regió_històrica/ultramar
local function namingLocationFR(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local comarca = main.getAdmByID(adm, 'Q3573632', label) -- comarca
	local adm_entity = main.getAdmByID(adm, 'Q6465', label) -- departament francès
	if not comarca and adm_entity == 'Pirineus Orientals' and c_date > 1700 then
		comarca = main.getReferencedEntity(qid, {
			['Q15475'] = 'Vallespir',
			['Q15476'] = 'Rosselló',
			['Q15477'] = 'Conflent',
			['Q15478'] = 'Capcir',
			['Q15479'] = 'Alta Cerdanya',
			['Q15481'] = 'Fenolleda'
		})
		if not comarca then
			comarca = 'Catalunya del Nord'
		end
	end
	if comarca and mw.ustring.find(label, comarca, 1, true) then -- no Cornellà de Conflent (Conflent)
		return label
	elseif comarca then
		return main.addReferent(label, comarca, p.referentFormat)
	end
	adm_entity = main.getAdmByID(adm, 'Q36784', label) -- regió de França
	if adm_entity == 'Guadalupe' or adm_entity == 'Martinica' or adm_entity == 'Guaiana Francesa'
		or adm_entity == 'Mayotte' or adm_entity == 'Illa de la Reunió' or adm_entity == 'Còrsega'
		or adm_entity == 'Bretanya' then
			return main.addReferent(label, adm_entity, p.referentFormat)
	end
	adm_entity = main.getAdmByID(adm, 'Q719487', label) -- col·lectivitat d'ultramar
	if not adm_entity then main.getAdmByID(adm, 'Q161243', label) end -- territori dependent
	if adm_entity then
		return main.addReferent(label, adm_entity, p.referentFormat)
	elseif c_date > 1700 then
		return main.addReferent(label, 'França', p.referentFormat)
	end
	return label
end

-- Itàlia, per illa
local function namingLocationIT(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local region = main.getAdmByID(adm, 'Q1710033', label) -- Regió amb Estatut Especial
	if region == 'Sardenya' or region == 'Sicília' then
		return main.addReferent(label, region, p.referentFormat)
	end
	return main.addReferent(label, 'Itàlia', p.referentFormat)
end

-- Portugal, per regió autònoma
local function namingLocationPT(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local adm_entity = main.getAdmByID(adm, 'Q2914565', label) -- regió autònoma de Portugal
	return main.addReferent(label, adm_entity or 'Portugal', p.referentFormat)
end

-- Regne Unit, per país/territori
local function namingLocationUK(qid, label, c_date, main)
	if c_date < 1000 then
		return label
	end
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local adm_entity = main.getAdmByID(adm, 'Q3336843', label) -- país del Regne Unit
	if adm_entity == nil then
		if c_date < 1700 then
			return label
		else
			adm_entity = main.getAdmByID(adm, 'Q46395', label) -- territori britànic d'ultramar
		end
	end
	return main.addReferent(label, adm_entity or 'Regne Unit', p.referentFormat)
end

-- Xina, Tibet
local function namingLocationCN(qid, label, c_date, main)
	local adm = main.fetchAdministrativeEntity(qid, 'ca')
	local region = main.getAdmByID(adm, 'Q57362', label) -- regió autònoma de la República Popular de la Xina
	if region == 'Tibet' then
		return main.addReferent(label, region, p.referentFormat)
	elseif c_date < 1949 then
		return main.addReferent(label, 'Xina', p.referentFormat)
	end
	return main.addReferent(label, 'RP Xina', p.referentFormat)
end

function p.namingLocation(state_id, loc_id, loc_label, context_date, main)
	-- debugging: =p.namingLocation('Q29','Q10282','label')
	--local main = require('Module:Location')
	--local context_date = os.date('*t').year
	if state_id == 'Q16' then -- Canadà
		return namingLocationCA(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q29' then -- Espanya
		return namingLocationES(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q30' then -- EUA
		return namingLocationUSA(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q38' then -- Itàlia
		return namingLocationIT(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q45' then -- Portugal
		return namingLocationPT(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q142' then -- França
		return namingLocationFR(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q145' then -- Regne Unit
		return namingLocationUK(loc_id, loc_label, context_date, main)
	elseif state_id == 'Q148' then -- República Popular de la Xina
		return namingLocationCN(loc_id, loc_label, context_date, main)
	end
	return
end

return p