Mòdul:Location/ca
Aparença
Aquest mòdul afegeix un referent entre parèntesis a l'etiqueta d'una localitat o unitat administrativa obtinguda de Wikidata. Per exemple: "Mataró (Maresme)" o "Berlín (Alemanya)". Utilitza com a suport Mòdul:Location/ca per la definició de criteris en català.
Vegeu la documentació a w:Mòdul:Location i els criteris usats a w:Mòdul:Location/ca.
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