Modul:ISO 3166-2

Aus Wikivoyage
Dokumentation für das Modul ISO 3166-2[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Submodule

  • Modul:ISO 3166-2/Params – enthält ein mehrdimensionales Array mit allen erlaubten Parametern für jede Funktion/Vorlage und ihre Standardbelegung.

Funktion

Dieses Modul enthält Funktionen zur Abfragen von Provinznamen und ihrem ISO 3166-2. Es kann ebenfalls zum Übersetzen von Provinznamen in andere Sprachen genutzt werden. Vorlagenprogrammierer können damit den deutschen oder englischen Provinznamen bei gegebenem ISO 3166-2-Code abfragen oder beispielsweise in Provinzartikel automatisiert Karten (bei denen der Dateiname im Regelfall die englische Bezeichnung enthält) einbinden.

Verwendung in Vorlagen

  • {{ISO 3166-2}} – Die allgemeine Funktion liefert den Namen einer Region in gewünschter Sprache zu einem ISO-Code und umgedreht. Auch die Übersetzung von einer Sprache in eine andere ist möglich.
  • {{ISO 3166-2 nach DE}} – Liefert den deutschen Namen einer Region bei gegebenem ISO-Code
  • {{ISO 3166-2 nach EN}} – Liefert den englischen Namen einer Region bei gegebenem ISO-Code
  • {{BASEPAGENAME/<Sprachcode>}} und {{BASEPAGENAMEX/<Sprachcode>}} – Liefert den englischen Namen des Region, in deren Artikel die Vorlage eingebunden ist.

Allgemein gültige Parameter

Die allgemein gültigen Parameter kann man sowohl innerhalb der Vorlage in der Parserfunktion invoke benutzen, als auch innerhalb des Artikels der Vorlage selbst übergeben. Der Paramter, der bei der Einbindung der Vorlage benutzt wird, hat dabei Vorrang. So kann man bestimmte Funktionalitäten für den generellen Gebrauch der Vorlage aktivieren (über invoke) und im Einzelfall im Artikel abschalten (bei der Verwendung der Vorlage).

  • |ignore_errors= auf 1 oder true gesetzt, werden die Ausgabe der Fehlermeldungen der Funktionen unterdrückt. Standardmäßig werden die Fehler angezeigt.
  • |no_category= auf 1 oder true gesetzt, werden die Artikel bei Fehlermeldungen des Moduls einer Fehlerkategorie zugeordnet. Standardmäßig werden Fehlermeldungen in die Kategorie Fehlerberichte des Moduls ISO 3166-2 eingefügt. Wurden unbekannte Parameter verwendet landen die Artikel zusätzlich in der Kategorie Vorlagen mit unbekannten Parametern.
  • |error_category= gibt den Namen einer Fehlerkategorie an, in der der Artikel bei auftretenden Fehlern einsortiert wird. Standardmäßig ist das Fehlerberichte des Moduls ISO 3166-2.

Benötigte weitere Module

Dieses Modul benötigt folgende weitere Module: Check2
Hinweise
local check = require('Modul:Check2')
 
local p = {}

function p.arguments ( paraFrame , paraParams, paraOption  )
	argsParent = paraFrame:getParent().args
	argsFrame = paraFrame.args
 
	local value = argsParent[paraOption]
	if value == nil then value = argsFrame[paraOption] end
	if value == nil then value = paraParams[paraOption] end
 
	return value
end
 
function p.translateBasic ( isoSet, region, from, to )
	
	local result = {}
	result[1] = false
	result[2] = 'Kein Eintrag für Region ' .. region .. ' gefunden'
	
	for key,value in pairs ( isoSet ) do
		if ( value[from] == region ) then
			if ( value[to] ~= nil ) then
				result[1] = true
				result[2] = value[to]
			else	
				result[1] = false
				result[2] = 'Eintrag gefunden, aber Sprache ' .. to .. ' ist nicht definiert.'
			end
		end
	end

	return result

end

function p.translate ( frame )
	
	-- zulässige Parameter einlesen
	params = mw.loadData('Modul:ISO 3166-2/Params')
	funcParams = params['translate']
 
	-- Argumente holen, die der Vorlage übergeben wurden
	args = frame:getParent().args
 
	-- Argumente auswerten, auf Vorhandensein prüfen und ggf. mit Standardwerten belegen
	local tld = string.lower ( p.arguments ( frame, funcParams, 'tld') )
	local region = p.arguments ( frame, funcParams, 'region')
	local from = p.arguments ( frame, funcParams, 'von')
	local to = p.arguments ( frame, funcParams, 'nach')
	
	-- ISO-Angabe in Großbuchstaben wandeln
	if ( from == 'ISO3166-2' ) then region = string.upper ( region ) end
 
	-- Variable für die Ausgabe erzeugen
	local display = ''
	local errorStr = ''
	local resultSet = {}
	
	local success, countryList = pcall(mw.loadData, 'Modul:ISO 3166-2/' .. tld)
	if not success then
		-- return check._error ( 'Landesinfo zu ' .. tld .. ' existiert nicht. Bitte [[Modul:ISO 3166-2/' .. tld .. ']] anlegen.',  'ISO 3166-2' )
		return 'Landesinfo zu ' .. tld .. ' existiert nicht. Bitte [[Modul:ISO 3166-2/' .. tld .. ']] anlegen.'
	else
		resultSet = p.translateBasic ( countryList, region, from, to )
		if resultSet[1] then
			display = resultSet[2]
		else
			errorStr = errorStr .. check._error ( resultSet[2],  'ISO 3166-2' )
		end
		
		-- Fehlertext und Ausgabe zurückgeben
		return errorStr .. check._testParams ( args, funcParams, 'ISO 3166-2' ) .. display
		
	end
end

function p.codetable ( frame )
	
	-- zulässige Parameter einlesen
	params = mw.loadData('Modul:ISO 3166-2/Params')
	funcParams = params['translate']
 
	-- Argumente holen, die der Vorlage übergeben wurden
	args = frame:getParent().args
 
	-- Argumente auswerten, auf Vorhandensein prüfen und ggf. mit Standardwerten belegen
	local tld = string.lower ( p.arguments ( frame, funcParams, 'tld') )
	
	-- Variable für die Ausgabe erzeugen
	local display = ''
	local errorStr = ''
	local thead = true
	
	local success, countryList = pcall(mw.loadData, 'Modul:ISO 3166-2/' .. tld)
	if not success then
		-- return check._error ( 'Landesinfo zu ' .. tld .. ' existiert nicht. Bitte [[Modul:ISO 3166-2/' .. tld .. ']] anlegen.',  'ISO 3166-2' )
		return 'Landesinfo zu ' .. tld .. ' existiert nicht. Bitte [[Modul:ISO 3166-2/' .. tld .. ']] anlegen.'
	else
		
		display = '<table id="iso3166-2_' .. tld .. '" class="prettytable sortable">'
		for key,value in pairs ( countryList ) do
			if thead then 
				display = display .. '<tr>'
				for key2,value2 in pairs ( value ) do
					display = display .. '<th>' .. key2 .. '</th>'
				end
				display = display .. '</tr>'
				for key2,value2 in pairs ( value ) do
					display = display .. '<td>' .. value2 .. '</td>'
				end
				thead = false
			else
				display = display .. '<tr>'
				for key2,value2 in pairs ( value ) do
					display = display .. '<td>' .. value2 .. '</td>'
				end
				display = display .. '</tr>'
			end
		end
		display = display .. '</table>'

		-- Fehlertext und Ausgabe zurückgeben
		return errorStr .. check._testParams ( args, funcParams, 'ISO 3166-2' ) .. display
		
	end
	
	-- Fehlertext und Ausgabe zurückgeben
	return errorStr .. check._testParams ( args, funcParams, 'ISO 3166-2' ) .. display

end

return p