Op den Inhalt sprangen

Modul:Infobox mapframe/lokal

Vu Wikipedia
Dokumentatioun vum Modul:Infobox mapframe/lokal [liesen] [änneren] [Versioune weisen]

D'Dokumentatioun fir dëst Modul steet hei ënnendrënner an ass vun der Säit Modul:Infobox mapframe/lokal/doc hei agebonne ginn. Kuckt och: Hëllef:Moduler.


Dëse Modul ass eng lokal Erweiderung vum synchroniséierte Modul:Infobox mapframe.

E rifft de synchroniséierte Modul op an ergänzt lokal Funktiounen, déi an der Schabloun:Infobox Uertschaft Lëtzebuerg gebraucht ginn.

De Modul soll verhënneren, datt lokal Ännerunge bei enger Synchronisatioun vum Haaptmodul iwwerschriwwe ginn.

Funktiounen

[Quelltext änneren]
{{#invoke:Infobox mapframe/lokal|main}}

Rifft d'Funktioun main aus dem synchroniséierte Modul:Infobox mapframe op.

Dobäi ginn déi englesch Ënnerhaltskategorien duerch lokal Kategorien ersat:

[[Category:Pages using infobox mapframe with missing coordinates]][[Kategorie:Säiten, déi Infobox mapframe ouni Koordinate benotzen]]

[[Category:Pages using infobox mapframe with no geometry]][[Kategorie:Säiten, déi Infobox mapframe ouni Geometrie benotzen]]

[[Category:Pages using infobox mapframe with forced centering]][[Kategorie:Säiten, déi Infobox mapframe mat forcéierter Zentréierung benotzen]]

[[Category:Pages using infobox mapframe without shape links in Wikidata]][[Kategorie:Säiten, déi Infobox mapframe ouni Shape-Linken op Wikidata benotzen]]

Dës Funktioun gëtt an der Infobox esou opgeruff:

| data25 = {{#invoke:Infobox mapframe/lokal|main}}
{{#invoke:Infobox mapframe/lokal|hasShape}}

Kontrolléiert, ob am verlinkte Wikidata-Element op d'mannst eng vun dëse Wikidata-Eegenschaften disponibel ass:

D'Funktioun gëtt follgend Resultater zeréck:

Resultat Bedeitung
yes P402 oder P3896 ass disponibel.
eidele Wäert Et ass keng Shape-Angab disponibel.

showStaticMap

[Quelltext änneren]
{{#invoke:Infobox mapframe/lokal|showStaticMap
 |Kaart=
}}

Bestëmmt, ob nieft der interaktiver Kaart och eng statesch Kaart mat der Lag ugewise soll ginn.

Aktuell gëlle follgend Reegelen:

Situatioun Resultat
De Parameter Kaart ass lokal ausgefëllt yes
P402 oder P3896 ass op Wikidata disponibel eidele Wäert
Et ass keng Shape-Angab disponibel yes

Dat bedeit:

  • eng Kaart, déi lokal agesat ass, gëtt ëmmer ugewisen;
  • bei enger Shape iwwer P402 oder P3896 gëtt déi automatesch statesch Kaart ënnerdréckt;
  • bei enger einfacher Punktkaart iwwer P625 kann déi statesch Kaart weider ugewise ginn.

Beispill aus der Infobox:

{{#ifeq:
 {{#invoke:Infobox mapframe/lokal|showStaticMap
   |Kaart={{{Kaart|}}}
 }}
 |yes
 |<!-- statesch Kaart -->
}}
{{#invoke:Infobox mapframe/lokal|label|fr}}

Gëtt de Label vum Wikidata-Element dee verlinkt ass an enger bestëmmter Sprooch (Däitsch oder Franséisch) zeréck.

Den éischten onbenannte Parameter ass de Sproochecode.

Beispiller:

{{#invoke:Infobox mapframe/lokal|label|fr}}
{{#invoke:Infobox mapframe/lokal|label|de}}

Wann an där Sprooch kee Label existéiert oder d'Säit net mat engem Wikidata-Element verlinkt ass, gëtt en eidele Wäert zeréckginn.

otherLanguageName

[Quelltext änneren]
{{#invoke:Infobox mapframe/lokal|otherLanguageName
 |Sproochecode
 |lokalen Numm
 |lëtzebuergeschen Numm
}}

Bestëmmt den Numm vun enger Uertschaft an enger anerer Sprooch.

D'Funktioun:

  1. benotzt als éischt den Numm, dee lokal agesat ass;
  2. benotzt, wann dee feelt, de Wikidata-Label an der gewielter Sprooch;
  3. läscht iwwerschësseg Sputten um Ufank an um Enn;
  4. vergläicht de friemsproochegen Numm mam lëtzebuergeschen Numm;
  5. gëtt nëmmen en Numm zeréck, wann en net eidel an net identesch mam lëtzebuergeschen Numm ass.

Parameteren

[Quelltext änneren]
Positioun Parameter Beschreiwung
1 Sproochecode Zum Beispill fr oder de.
2 Lokalen Numm Wäert aus dem Infobox-Parameter, zum Beispill
 Numm (Franséisch).
3 Lëtzebuergeschen Numm Numm, mat deem de friemsproochegen Numm verglach gëtt.

Beispill:

{{#invoke:Infobox mapframe/lokal|otherLanguageName
 |fr
 |{{{Numm (Franséisch)|}}}
 |{{If empty|{{{Numm|}}}|{{PAGENAMEBASE}}}}
}}

Wann de lokale franséischen Numm eidel ass, gëtt de franséische Wikidata-Label benotzt.

Wann de franséischen Numm identesch mam lëtzebuergeschen Numm ass, gëtt näischt zeréckginn.

Dës Funktioun gëtt an der Infobox benotzt, fir déi franséisch an däitsch Nimm nëmmen dann unzeweisen, wa se wierklech vum lëtzebuergeschen Numm ofwäichen.

Wikidata-Eegenschaften

[Quelltext änneren]

De Modul benotzt oder kontrolléiert dës Wikidata-Eegenschaften:

Eegenschaft Benotzung
P402 OpenStreetMap-Relatioun als Shape-Quell.
P3896 Geoshape.
P625 Gëtt vum synchroniséierte Mapframe-Modul fir Punktkaarte benotzt.

D'Sproochelabele ginn direkt aus de Labele vum verlinkte Wikidata-Element gelies.

Ofhängegkeeten

[Quelltext änneren]

De Modul hänkt vun dësem Modul of:

Déi lokal Funktioune ginn ënner anerem an dëser Schabloun benotzt:

Ënnerhalt

[Quelltext änneren]

De synchroniséierte Modul:Infobox mapframe soll net lokal geännert ginn, well déi Ännerunge bei enger neier Synchronisatioun verluer goe kënnen.

Lokal Upassunge sollen an dësem Wrapper-Modul gemaach ginn.

Wann d'Reegelen iwwer d'Unweise vun der statescher Kaart geännert ginn, soll haaptsächlech d'Funktioun showStaticMap ugepasst ginn.

local p = {}
-- Mat der Hëllef vun ChatGPT entwéckelt; manuell iwwerpréift a getest (Juli 2026).

-- Kontrolléiert, ob eng Wikidata-Eegenschaft e brauchbare Wäert huet.
local function hasProperty(itemId, property)
	if not itemId then
		return false
	end

	local statements = mw.wikibase.getBestStatements(itemId, property)

	for _, statement in ipairs(statements or {}) do
		local snak = statement.mainsnak

		if snak
			and snak.snaktype == 'value'
			and snak.datavalue
			and snak.datavalue.value ~= nil
		then
			return true
		end
	end

	return false
end


-- Gëtt true zeréck, wann P402 oder P3896 disponibel ass.
local function itemHasShape(itemId)
	return hasProperty(itemId, 'P402')
		or hasProperty(itemId, 'P3896')
end


-- Rifft de synchroniséierten Haaptmodul op an ersetzt
-- déi englesch Tracking-Kategorien duerch lokal Kategorien.
function p.main(frame)
	local output = require('Module:Infobox mapframe').main(frame)

	if type(output) == 'string' then
		output = output:gsub(
			'%[%[Category:Pages using infobox mapframe with missing coordinates%]%]',
			'[[Kategorie:Säiten, déi Infobox mapframe ouni Koordinate benotzen]]'
		)
		output = output:gsub(
			'%[%[Category:Pages using infobox mapframe with no geometry%]%]',
			'[[Kategorie:Säiten, déi Infobox mapframe ouni Geometrie benotzen]]'
		)
		output = output:gsub(
			'%[%[Category:Pages using infobox mapframe with forced centering%]%]',
			'[[Kategorie:Säiten, déi Infobox mapframe mat forcéierter Zentréierung benotzen]]'
		)
		output = output:gsub(
			'%[%[Category:Pages using infobox mapframe without shape links in Wikidata%]%]',
			'[[Kategorie:Säiten, déi Infobox mapframe ouni Shape-Linken op Wikidata benotzen]]'
		)
	end

	return output
end


-- Kann an enger Schabloun benotzt ginn, fir festzestellen,
-- ob P402 oder P3896 am Wikidata-Element steet.
--
-- Resultat:
-- yes = Shape disponibel
-- eidel = kee Shape disponibel
function p.hasShape(frame)
	local itemId = frame.args.id

	if not itemId or itemId == '' then
		itemId = mw.wikibase.getEntityIdForCurrentPage()
	end

	if itemHasShape(itemId) then
		return 'yes'
	end

	return ''
end


-- Bestëmmt, ob déi statesch Kaart gewise soll ginn.
--
-- Aktuell Reegelen:
-- 1. Eng lokal |Kaart= ass aginn:
--    Déi statesch Kaart gëtt ëmmer gewisen.
--
-- 2. P402 oder P3896 ass disponibel:
--    Déi statesch Kaart gëtt net gewisen.
--
-- 3. Kee Shape  disponibel:
--    Déi statesch Kaart gëtt gewisen.
--
-- Resultat:
-- yes = statesch Kaart weisen
-- eidel = statesch Kaart net weisen
function p.showStaticMap(frame)
	local localMap = mw.text.trim(frame.args.Kaart or frame.args.map or '')

	if localMap ~= '' then
		return 'yes'
	end

	local itemId = frame.args.id

	if not itemId or itemId == '' then
		itemId = mw.wikibase.getEntityIdForCurrentPage()
	end

	if itemHasShape(itemId) then
		return ''
	end

	return 'yes'
end

-- Gëtt de Wikidata-Label an enger bestëmmter Sprooch zeréck.
function p.label(frame)
	local lang = mw.text.trim(frame.args[1] or '')
	local itemId = mw.wikibase.getEntityIdForCurrentPage()

	if lang == '' or not itemId then
		return ''
	end

	local entity = mw.wikibase.getEntity(itemId)

	if not entity
		or not entity.labels
		or not entity.labels[lang]
	then
		return ''
	end

	return entity.labels[lang].value or ''
end

function p.labelsDiffer(frame)
	local lang = mw.text.trim(frame.args[1] or '')
	local localName = mw.text.trim(frame.args[2] or '')

	if lang == '' then
		return ''
	end

	local itemId = mw.wikibase.getEntityIdForCurrentPage()
	if not itemId then
		return ''
	end

	local entity = mw.wikibase.getEntity(itemId)
	if not entity or not entity.labels or not entity.labels[lang] then
		return ''
	end

	local label = mw.text.trim(entity.labels[lang].value or '')

	if label == '' then
		return ''
	end

	if label == localName then
		return ''
	end

	return label
end

function p.otherLanguageName(frame)
	local lang = mw.text.trim(frame.args[1] or '')
	local manualName = mw.text.trim(frame.args[2] or '')
	local luxName = mw.text.trim(frame.args[3] or '')

	if lang == '' then
		return ''
	end

	local foreignName = manualName

	-- Wann näischt lokal aginn ass, gëtt de Wikidata-Label benotzt.
	if foreignName == '' then
		local itemId = mw.wikibase.getEntityIdForCurrentPage()

		if not itemId then
			return ''
		end

		local entity = mw.wikibase.getEntity(itemId)

		if not entity
			or not entity.labels
			or not entity.labels[lang]
		then
			return ''
		end

		foreignName = mw.text.trim(entity.labels[lang].value or '')
	end

	-- Näischt weisen, wann de frieme Numm eidel oder identesch ass.
	if foreignName == '' or foreignName == luxName then
		return ''
	end

	return foreignName
end

return p