Versiokontrolo

redakti

Versionomo en Vikidatumoj: 2024-11-02 Contra


-- Separating code from internationalization

return {
	-- module administration
	moduleInterface  = {
		suite  = 'Marker utilities',
		sub    = 'i18n',
		serial = '2024-04-26',
		item   = 65441686
	},

	dates            = { yyyymmdd = { p = '^20[0-5]%d%-[01]?%d%-[0-3]?%d$', f = 'j. M Y' },
	                     yyyy     = { p = '^20[0-5]%d$', f = 'Y' },
	                     yy       = { p = '^[0-5]%d$', f = 'Y' },
	                     mmdd     = { p = '^[01]?%d%-[0-3]?%d$', f = 'j. M' },
	                     dd       = { p = '^[0-3]?%d%.?$', f = 'j.' },
	                     mm       = { p = '^[01]?%d%.?$', f = 'M' },
	                     lastedit = { f = 'M Y' },
	                     asOf     = { f = 'n/Y' }
	                   },
	fileExtensions   = { 'tif', 'tiff', 'gif', 'png', 'jpg', 'jpeg', 'jpe',
	                     'webp', 'xcf', 'ogg', 'ogv', 'svg', 'pdf', 'stl',
	                     'djvu', 'webm', 'mpg', 'mpeg' },
	months           = { 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli',
	                     'August', 'September', 'Oktober', 'November', 'Dezember' },
	monthAbbr        = { 'Jan%.?', 'Feb%.?', 'Mär%.?', 'Apr%.?', 'Mai%.?', 'Jun%.?',
	                     'Jul%.?', 'Aug%.?', 'Sep%.?', 'Okt%.?', 'Nov%.?', 'Dez%.?' },

	-- Map related constants
	map = {
		coordURL          = 'https://de.wikivoyage.org/w/index.php?title=Special%3AMapsources&params=',
		defaultDmsFormat  = 'f1', -- see: Module:Coordinates/i18n
		defaultSiteType   = 'type:landmark_globe:earth',
		defaultZoomLevel  = 17,
		maxZoomLevel      = 19,   -- also to set in Module:GeoData, Module:Mapshape utilities/i18n
	},

	-- Wikidata properties
	properties = {
		appliesToJurisdiction = 'P1001',
		appliesToPart     = 'P518',
		appliesToPeople   = 'P6001',
		capacity          = 'P1083',
		centerCoordinates = 'P5140',
		commonsCategory   = 'P373',
		coordinates       = 'P625',
		endTime           = 'P582',  -- time
		image             = 'P18',
		instanceOf        = 'P31',
		iso4217           = 'P498',
		languageOfName    = 'P407',
		mainCategory      = 'P910',
		maximumAge        = 'P4135',
		minimumAge        = 'P2899',
		nameInNativeLang  = 'P1559',
		occupation        = 'P106',
		of                = 'P642',
		officialName      = 'P1448',
		pointInTime       = 'P585',
		propertyScope     = 'P5314', -- for fees
		quantity          = 'P1114',
		retrieved         = 'P813',
		roomNumber        = 'P8733',
		startTime         = 'P580',  -- time, for fees
		streetAddress     = 'P6375',
		subclassOf        = 'P279',
		unitSymbol        = 'P5061',
		use               = 'P366',
		validInPeriod     = 'P1264'
	},

	-- Groups of Wikidata properties
	propTable = {
		contactComments = { 'P366', 'P518', 'P642', 'P1001', 'P1559', 'P106' },
		feeComments     = { 'P5314', 'P518', 'P6001', 'P1264', 'P585', 'P2899',
		                    'P4135', 'P642', 'P580' },
		policyComments  = { 'P518', 'P1001', 'P6001' },
		quantity        = { 'P1114', 'P1083' }
	},

	-- Wikidata properties representing a qualifier
	qualifiers = {
		mobilePhone = 'Q17517',
		P8733       = 'Q180516',
		roomNumber  = 'Q180516'
	},

	-- Languages for fallbacks, except wiki language
	langs = { 'en', 'fr' }, -- array can be empty

	-- Display and performance options for vCard / Listing and Marker modules
	-- additional options in Module:VCard/i18n
	options = {
		excludeColorTypes = true,
		normalizeValues   = { 'type', 'subtype', 'show', 'status', 'symbol' },
		noStarParams      = { 'nameExtra', 'nameLocal', 'alt', 'comment' },
		noTypeMsgs        = false, -- prevents display of maintenance( typeFromWD, typeIsGroup )
		parameters        = { 'nameExtra', 'wikipedia' }, -- parameter is used
		showLocalData     = true,  -- names, addresses, directions
		showSisters       = true,  -- possible values true, false, 'atEnd'
		usePropertyCateg  = true,  -- create maintenance categories for Wikidata properties
		useTypeCateg      = true,  -- create maintenance categories for marker types

		-- text limit of content/description parameter
		contentLimit      = 1000,
		groupsWithLimit   = { buy = 1, drink = 1, eat = 1, sleep = 1 },

		-- Wikidata related constants
		searchLimit       = 4,     -- count of levels for P31-P279 search

		-- useful but not necessary function calls
		WDmediaCheck      = false, -- check file names retrieved from Wikidata
		mediaCheck        = false, -- for better performance, otherwise expensive
		                         -- mw.title.new( 'Media:' .. image ) call is used
		secondaryCoords   = false, -- adding listing coordinates to article database
		                         -- using #coordinates parser function
		skipPathCheck     = false  -- for URL check, see Module:UrlCheck
	},

	-- strings
	texts = {
		asOf           = '; Stand %s', -- with semicolon separator
		from           = 'ab %s',
		fromTo         = '%s–%s',
		to             = 'bis %s',
		fromTo2        = '%s bis %s',

		-- General, i18n
		closeX         = '[[File:Close x - white.png|15px|link=|class=noviewer|Unbekanntes Marker-Symbol]]',
		missingName    = 'Name fehlt',
		-- In case of CJK languages no spaces are used with punctuation
		-- Enumeration commas. listing-comma is used for alt names only
		comma          = '<span class="listing-comma">, ​</span>', -- with zero-width space
		commaSeparator = ', ',
		period         = '.',
		periodSeparator= '. ',
		-- Space following a punctuation mark
		space          = ' ',
		parentheses    = ' (%s)',
		emph           = "''%s''",

		-- Formatting numbers: replacement patterns
		decimalPoint   = ',',
		groupSeparator = '.',

		-- Anchor id
		anchor         = 'vCard_%s',

		-- Marker
		CategoryNS     = { '[Cc]ategory', '[Kk]ategorie' },
		FileNS         = { '[Ff]ile', '[Ii]mage', '[Dd]atei', '[Bb]ild' },
		latitude       = 'Breitengrad',
		longitude      = 'Längengrad',
		tooltip        = 'Click auf den Marker öffnet die Karte direkt.',

		-- vCard / Listing module
		checkin        = 'Check-in: %s',
		checkout       = 'Check-out: %s',
		closed         = 'Geschlossen: %s',
		closedPattern  = '^[Gg]eschlossen:?%s*',
		email          = 'E-Mail: %s',
		expirationPeriod = 'now - 3 years',
		fax            = 'Fax: %s',
		hintName       = 'Name in der Landessprache %s',
		hintLatin      = 'Name in lateinischer Umschrift',
		hintAddress    = 'Anschrift in der Landessprache %s',
		hintAddress2   = 'Anschrift in %s',
		hintDirections = 'Wegbeschreibung in der Landessprache %s',
		hours          = 'Geöffnet: %s',
		iata           = '[[International Air Transport Association|IATA]]: %s',
		icao           = '[[Internationale Zivilluftfahrt-Organisation|ICAO]]: %s',
		lastedit       = 'letzte Änderung: %s',
		lasteditNone   = 'keine Angabe',
		maybeOutdated  = '(Angaben möglicherweise veraltet)[[Category:VCard: Angaben veraltet]]',
		mobile         = 'Mobil: %s',
		payment        = 'Akzeptierte Zahlungsarten: %s',
		phone          = '<abbr title="Telefon">Tel.</abbr>: %s',
		price          = 'Preis: %s',
		skype          = 'Skype: %s',
		subtype        = 'Merkmal: %s.',
		subtypes       = 'Merkmale: %s.',
		subtypeAbbr    = '<abbr title="%s">%s</abbr>',
		subtypeFile    = '[[File:%s|x14px|link=|class=noviewer listing-subtype-icon|%s]]',
		subtypeSpan    = '<span title="%s">%s</span>',
		subtypeWithCount = '%d %s',
		tollfree       = '<abbr title="Telefon">Tel.</abbr> gebührenfrei: %s'
	},

	-- namespaces without maintenance messages
	nsNoMaintenance = {
		[ 4 ]   = true,
		[ 10 ]  = true,
		[ 828 ] = true
	},

	-- format strings for mu.addMaintenance
	formats = {
		category = '[[Category:%s]]',
		error    = ' <span class="error">%s</span>',
		hint     = ' <span class="listing-check-recommended" style="display: none;">%s</span>'
	},

	-- maintenance
	maintenance = {
		-- general
		properties     = '[[Category:Seiten, die die Wikidata-Eigenschaft %s benutzen]]',
		type           = { category = 'Seiten mit dem Markertyp %s' },
		group          = { category = 'Seiten mit der Markergruppe %s' },

		urlWithIP      = { category = 'URL enthält IP-Adresse', hint = 'URL enthält IP-Adresse' },
		wrongUrl       = { category = 'URL ist ungültig', err = 'URL ist ungültig' },

		commonscat     = { category = 'VCard: Parameter commonscat benutzt' },
		commonscatWD   = { category = 'VCard: Parameter commonscat zusammen mit Wikidata benutzt' },
		contentTooLong = { category = 'VCard: Beschreibung ist zu lang', err = 'Beschreibung ist zu lang' },
		currencyTooltip= { category = 'VCard: Währungstooltips eingesetzt' },
		dmsCoordinate  = { category = 'VCard: DMS-Koordinate', hint = 'DMS-Koordinate' },
		duplicateAliases = { category = 'VCard: Doppelte Aliase', err = 'Doppelte Aliase: %s' },
		groupUsed      = { category = 'VCard: Parameter group benutzt' },
		illegalCtrls   = { category = 'VCard: Parameter mit unerlaubten Steuerzeichen', err = 'Parameter mit unerlaubten Steuerzeichen' },
		labelFromWD    = { category = 'VCard: Label aus Wikidata', hint = 'Label aus Wikidata' },
		linkIsRedirect = { category = 'VCard: Artikellink ist Weiterleitung' },
		linkToOtherWV  = { category = 'VCard: Anderes Wikivoyage verlinkt' },
		malformedName  = { category = 'VCard: Fehlerhafter Name', err = 'Fehlerhafter Name' },
		missingImg     = { category = 'VCard: Datei existiert nicht', err = 'Nicht vorhandenes Bild: %s' },
		missingNameMsg = { category = 'VCard: Ohne Namen', err = 'Name fehlt' },
		missingType    = { category = 'VCard: Typ fehlt', err = 'Fehlender Typ' },
		nameFromWD     = { category = 'VCard: Name aus Wikidata bezogen', err = 'Name aus Wikidata bezogen' },
		nameWithStar   = { category = 'VCard: Name enthält Stern', err = 'Name enthält Stern' },
		outdated       = { category = 'VCard: Ereignis veraltet', err = 'Ereignis veraltet' },
		parameterUsed  = { category = 'VCard: Parameter %s benutzt' },
		deleteShowCopy = { category = 'VCard: show=copy gelöscht', hint = 'show=copy gelöscht' },
		showInlineUsed = { category = 'VCard: show=inline gesetzt' },
		showPoiUsed    = { category = 'VCard: show=poi gesetzt' },
		typeFromWDchain= { category = 'VCard: Typ aus Wikidata-Kette bezogen', hint = 'Typ aus Wikidata bezogen' },
		typeIsGroup    = { category = 'VCard: Typ ist Gruppenbezeichnung', hint = 'Typ ist Gruppenbezeichnung' },
		typeIsColor    = { category = 'VCard: Typ ist Farbbezeichnung', hint = 'Typ ist Farbbezeichnung' },
		                 -- typeIsColor is not used if excludeColorTypes = true
		unknownCountry = { category = 'VCard: Unbekannter Ländercode', err = 'Unbekannter Ländercode' },
		unknownGroup   = { category = 'VCard: Unbekannte Gruppe', err = 'Unbekannte Gruppe' },
		unknownLanguage= { category = 'VCard: Unbekannte Landessprache', hint = 'Unbekannte Landessprache' },
		unknownParam   = { category = 'VCard: Unbekannte Parameter', err = 'Unbekannter Parameter: %s' },
		unknownParams  = { category = 'VCard: Unbekannte Parameter', err = 'Unbekannte Parameter: %s' },
		unknownPropertyLanguage= { category = 'VCard: Unbekannte Sprache für Eigenschaft', hint = 'Unbekannte Sprache für Eigenschaft' },
		unknownStatus  = { category = 'VCard: Unbekannter Status', err = 'Unbekannter Status' },
		unknownType    = { category = 'VCard: Unbekannter Typ', err = 'Unbekannter Typ: %s' },
		unusedRedirect = { category = 'VCard: Unbenutzter Weiterleitungs-Sitelink' },
		urlIsSocialMedia = { category = 'VCard: URL stammt von Social-Media-Dienst', err = 'URL stammt von Social-Media-Dienst' },
		wikidata       = { category = 'VCard: Einsatz von Wikidata' },
		wrongCoord     = { category = 'VCard: Fehlerhafte Koordinate', err = 'Fehlerhafte Koordinate' },
		wrongImgName   = { category = 'VCard: Fehlerhafter Mediendateiname', err = 'Fehlerhafter Mediendateiname' },
		wrongQualifier = { category = 'VCard: Fehlerhafter Wikidata-Qualifikator', err = 'Fehlerhafter Wikidata-Qualifikator' },

		-- Marker module
		missingCoord   = { category = 'Marker: Ohne Koordinaten', err = 'Länge und/oder Breite fehlt' },
		numberUsed     = { category = 'Marker: Nummer manuell vergeben' },
		unknownIcon    = { category = 'Marker: Unbekanntes Symbol' },

		-- vCard / Listing module
		countryFromWD  = { category = 'VCard: Länderdaten aus Wikidata' },
		missingCoordVc = { category = 'VCard: Ohne Koordinaten' },
		paymentUsed    = { category = 'VCard: Zahlungsarten spezifiziert' },
		socialUrlUsed  = { category = 'VCard: Social-Media-URL verwendet', hint = '%s-URL verwendet' },
		unitFromWD     = { category = 'VCard: Einheit aus Wikidata', hint = 'Einheit aus Wikidata' },
		unknownLabel   = { category = 'VCard: Unbekanntes Label oder Id' },
		unknownMAKI    = { category = 'VCard: Unbekanntes MAKI-Symbol', hint = 'Unbekanntes MAKI-Symbol' },
		unknownShow    = { category = 'VCard: Unbekannter Wert für show', err = 'Wert(e) für show unbekannt: %s' },
		unknownSubtype = { category = 'VCard: Unbekannter Wert für subtype', err = 'Wert(e) für subtype unbekannt: %s' },
		unknownUnit    = { category = 'VCard: Unbekannte Einheit', hint = 'Unbekannte Einheit' },
		unknowWDfeatures = { category = 'VCard: Unbekannte Wikidata-Merkmale', hint = 'Unbekannte Wikidata-Merkmale' },
		wrongDate      = { category = 'VCard: Fehlerhaftes Datum', err = 'Fehlerhaftes Datum' },
		wrongSocialId  = { category = 'VCard: Fehlerhafte Social-Media-Id', err = 'Fehlerhafte %s-Id' },
		wrongSocialUrl = { category = 'VCard: Fehlerhafte Social-Media-URL', err = 'Fehlerhafte %s-URL' }
	},

	iconTitles = {
		commons    = '%s im Medienverzeichnis Wikimedia Commons',
		facebook   = '%s auf Facebook',
		flickr     = '%s auf Flickr',
		instagram  = '%s auf Instagram',
		internet   = 'Website dieser Einrichtung',
		rss        = 'RSS-Web-Feed dieser Einrichtung',
		tiktok     = '%s auf TikTok',
		twitter    = '%s auf X (Twitter)',
		wikidata   = '%s (%s) in der Datenbank Wikidata',
		wikipedia  = '%s in der Enzyklopädie Wikipedia',
		wikivoyage = '%s im Reiseführer Wikivoyage in einer anderen Sprache',
		youtube    = '%s auf YouTube'
	},

	-- social media services
	services = {
		{ key = 'facebook',  url = 'https://www.facebook.com/%s', pattern = { '^[-.%d%w]+$', '^[^%z\1-,/:-?\91-\94{-~]+/[1-9]%d+$' } },
		{ key = 'flickr',    url = 'https://www.flickr.com/photos/%s', pattern = '^%d%d%d%d%d+@N%d%d$' },
		{ key = 'instagram', url = 'https://www.instagram.com/%s/', pattern = { '^[0-9a-z_][0-9a-z._]+[0-9a-z_]$', '^explore/locations/%d+$' } },
		{ key = 'tiktok',    url = 'https://www.tiktok.com/@%s', pattern = '^[0-9A-Za-z_][0-9A-Za-z_.]+$' },
		{ key = 'twitter',   url = 'https://twitter.com/%s', pattern = '^[0-9A-Za-z_]+$' },
		{ key = 'youtube',   url = 'https://www.youtube.com/channel/%s', pattern = '^UC[-_0-9A-Za-z]+[AQgw]$' }
	},

	-- status symbols
	statuses = {
		none    = { alias = "class-0", label = "Ohne Einstufung" },
		stub    = { alias = "class-1", label = "Stub" },
		outline = { alias = "class-2", label = "Artikelentwurf" },
		usable  = { alias = "class-3", label = "Brauchbarer Artikel" },
		guide   = { alias = "class-4", label = "Vollständiger Artikel" },
		star    = { alias = "class-5", label = "Empfehlenswerter Artikel" },
		
		['top-hotel']  = { label = "Top-Hotel", category = 1 },
		['top-restaurant']  = { label = "Top-Restaurant", category = 1 },
		['top-sight']  = { label = "Top-Sehenswürdigkeit", category = 1 },
		recommendation = { label = "Empfehlung" }
	},

	-- Marker name styles
	nameStyles = {
		italic  = 'font-weight: normal; font-style: italic;',
		kursiv  = 'font-weight: normal; font-style: italic;', -- de: kursiv = italic
		normal  = 'font-weight: normal; font-style: normal;',
		station = 'font-weight: normal; white-space: nowrap; background: #f4f4f4; border: 1px solid #ddd; padding-left: 2px; padding-right: 2px;'
	},

	-- yes/no variants
	yesno = {
		y    = 'y',
		yes  = 'y',
		j    = 'y',
		ja   = 'y',
		n    = 'n',
		no   = 'n',
		nein = 'n'
	},

	-- List of currencies without conversion tooltips
	noCurrencyConversion = {
--		all = 1, -- no rate conversion tooltips are shown
		         -- there is no confusion with (uppercase) ALL = "Q125999"
		EGP = 1, -- rates are outdated
		EUR = 1  -- local currency
	},

	-- Language-dependent sorting substitutes
	substitutes = {
		{ l = 'ä', as = 'a' },
		{ l = 'ö', as = 'o' },
		{ l = 'ü', as = 'u' },
		{ l = 'ß', as = 'ss' }
	}
}