Modul:Landesbezeichnung

Aus Wikivoyage
Dokumentation für das Modul Landesbezeichnung[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Dieses Modul enthält Funktionen für Vorlagen die Landesbezeichnungen verwenden. Man kann die Landesbezeichnungen einfach ausgeben oder sich für die Weiterverarbeitung in anderen Vorlagen und Modulen erzeugen lassen, um z.B. standardisierte Datei-, Artikel- und Kategoriennamen auf Wikivoyage oder Commons zu generieren.

Die Funktionen holen sich die Argumente aus der Vorlage und müssen beim Modulaufruf nicht nochmals übergeben werden. Vergessene Parameter werden mit Standardwerten belegt, unbekannte Parameter werden als Fehlermeldung zusätzlich mit im Artikel ausgegeben.

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 Landesbezeichnung 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 Landesbezeichnung.

Submodule

Funktionen

nameTLD

Die Funktion gibt den Landesnamen zu einer Top-Level-Domain aus. Sie erwartet von der aufrufenden Vorlage folgende Parameter:

  • |sprache= Sprachcode für die Sprache, in der die Landesbezeichnungen ausgegeben werden (Standard: de)
  • |tld= Top-Level-Domain des Landes

Vorlagen

{{Landesbezeichnung}}

  • Syntax: {{Landesbezeichnung|sprache=Sprachcode|tld=Top-Level-Domain}}
  • Lua-Funktion: p.nameTLD

Benötigte weitere Module

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

local nameList = {
	de = 'deutsch',
	en = 'englisch'
	}

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.nameTLD ( frame )
	
	-- zulässige Parameter einlesen
	params = mw.loadData('Modul:Landesbezeichnung/Params')
	funcParams = params['nameTLD']
	
	-- Argumente holen, die der Vorlage übergeben wurden
	args = frame:getParent().args

	-- Argumente auswerten, auf Vorhandensein prüfen und ggf. mit Standardwerten belegen
	local lang = p.arguments ( frame, funcParams, 'sprache')
	local tld = p.arguments ( frame, funcParams, 'tld')

	-- Variable für die Ausgabe erzeugen
	local display = ''
	local errorStr = ''
	
	-- Ist die Namensliste bekannt?
	if nameList[lang] == nil then
		errorStr = check._error ('Landesbezeichungen sind für die Sprache ' .. lang .. ' nicht eingerichtet. Bitte [[Modul:Landesbezeichnung/' .. lang .. ']] anlegen.', 'Landesbezeichnung' )	
	end
	
	-- Ausgabe der Landesbezeichnung
	countryList = mw.loadData('Modul:Landesbezeichnung/'..lang)
	countryName = countryList[tld];
	if countryName == nil then 
		countryName = ''
		
		-- Nochmal in den Provinzlisten nachsehen
		local province = require('Modul:ISO 3166-2')
		local country = string.lower ( string.sub(tld,1,2) )
		local success, countryList = pcall(mw.loadData, 'Modul:ISO 3166-2/' .. country )
		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 ' .. country .. ' existiert nicht. Bitte [[Modul:ISO 3166-2/' .. country .. ']] anlegen.'
		else
			local result = province.translateBasic ( countryList, string.upper ( tld ), 'ISO3166-2', lang )
			if ( result[1] ) then
				countryName = result[2]
			else
				errorStr = errorStr .. check._error ('Übergebene Top-Level-Domain ' .. tld .. ' ist nicht bekannt', 'Landesbezeichnung' )
				errorStr = errorStr .. check._error (result[2] .. '(country=' .. country .. ', lang=' .. lang .. ')', 'ISO 3166-2' )
			end
		end

	end
	display = countryName

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

return p