Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch English

Modul: Dokumentation

Multilingual – Modul mit Funktionen im Zusammenhang mit Sprachen, Sprachcodes, Sprachnamen.

Funktionen für Vorlagen Bearbeiten

Alle Funktionen haben zumindest einen unbenannten Parameter (sinnvollerweise anzugeben), und gelegentlich optional weitere. Dies ist tolerant gegenüber Leerzeichen vor oder nach dem Inhalt. Groß- und Kleinschreibung von Code-Segmenten wie de-AT hat keine Bedeutung; Codes werden nur in Kleinschreibung zurückgegeben.

Der Rückgabewert ist eine leere Zeichenkette („nichts“), wenn der Parameterwert die Erwartung nicht erfüllt. Wenn ein Ergebnis vorhanden oder die Abfragebedingung wahr ist, resultiert mindestens ein Zeichen. Das Ergebnis beginnt oder endet nicht mit Leerzeichen.

fair
Formatierung des Codes gemäß RFC 5646 sowie Syntaxprüfung.
Rückgabewert: Leer, falls ungültig.
fallback
Ist eine andere Sprache als Ersatz sinnvoll?
  • 1 – Sprachcode, der eigentlich unterstützt werden soll
  • 2 – Alternativer Sprachcode als möglicher Ersatz
  • Ergebnis: nichts – wenn kein Ersatz bekannt; dann Englisch?
findCode
Ermittlung des Codes zu einem Sprachnamen (in aktueller Projektsprache).
Ein Code selbst würde ebenfalls identifiziert werden.
fix
Reparaturversuch für ungültige Sprachcodes
  • 1 – Sprachcode, der geprüft werden soll
  • Ergebnis: nichts – wenn unbeanstandet; sonst Vorschlag
format
Formatiere einen oder mehrere Sprachnamen.
  • 1 – Sprachenliste oder Einzelsprache
  • slang – Sprache des Ergebnisses, wenn nicht in der jeweiligen Sprache selbst
    • * – eigene Sprache (Vorgabe)
    • ! – aktuelle Projektsprache
    • Jeder gültige Code
  • shift – Groß- und Kleinschreibung
    • c – Das erste Wort jeder Bezeichnung in Großschreibung
    • d – Alles in Kleinschreibung
    • f – Das erste Wort der Liste in Großschreibung, Rest Kleinschreibung
    • m – Das erste Wort jedes Listenelements in Kleinschreibung
  • link=1 – Sprachnamen verlinken, falls ermittelbar
  • scream – Titel einer Wartungskategorie im Fehlerfall
  • splitpattern zur Aufgliederung einer Liste; etwa split=, – andernfalls wird 1 als Einzelsprache aufgefasst
  • separator – Listentrennung bei der Ausgabe, sonst split
  • start – Einem ersten Listenelement voranzustellende Zeichenkette (wirkungslos, wenn leere Liste resultiert)
getBase
Basissprache aus einem mutmaßlichen ISO-Code extrahieren.
getName
Welcher Name ist diesem Code zugeordnet?
  • 2 – Sprache der Antwort
    • * – in der Sprache selbst (Vorgabe)
    • ! – in der Projektsprache
    • Jeder ISO-Code.
Der Rückgabewert entspricht dem der Parserfunktion {{#language:welche|Darstellungssprache}}.
  • Der momentane Wert dieser weltweiten Systemprogrammierung kann aber ggf. korrigiert sein durch Modul:Multilingual/names.
int
Systemnachricht in beliebige Sprache übersetzen
  • 1 – Bezeichner der Systemnachricht
  • 2 – Sprachcode für die Übersetzung
  • $1, $2, … – Parameter
  • Ergebnis: analog {{int:}}
isLang
Kann das ein ISO-Code sein?
  • Ergebnis: nichts – wenn nicht
isLangWiki
Kann das eine Wiki-Sprachversion sein?
  • Ergebnis: nichts – wenn nicht
isRTL
Gehört dieser Code zu einer von rechts nach links geschriebenen Schrift?
Ergebnis: nicht leer wenn rechts nach links
message
Versuche, einen mehrsprachigen Text bestmöglich in der Benutzersprache (momentan de) darzustellen
  • en – englischsprachige Textversion
  • de – deutschsprachige Textversion
  • – beliebige weitere Textversionen
  • $1 – Parameterwert zur Ersetzung
  • $2 – Parameterwert zur Ersetzung
  • – …
  • $9 – Parameterwert zur Ersetzung
Ergebnis: bestmögliche Textversion mit Ersetzung von $-Platzhaltern, oder leer
sitelink
Verlinke lokale oder nächstmögliche fremde Seite zu einem Wikidata-Item
  • 1 – Nummer des Items oder ID beginnend mit „Q“
Ergebnis: Gemäß Benutzersprache bestmögliche Sprachversion, oder leer
tabData
Versuche, ein mehrsprachiges Textfragment aus den commons:Data:-Tabellen bestmöglich in der Benutzersprache (momentan de) darzustellen
  • 1 – Seiten-Bezeichner auf commons:, vorangestelltes Data: und nachgestelltes .tab sind nicht erforderlich.
  • 2 – Bezeichner des Textfragments innerhalb der Tabelle.
  • alt(optional) Ersatztext, falls nichts gefunden.
Von den Internationalisierungstabellen wird erwartet, dass sie folgende Bedingung erfüllen:
  1. Spalte: string, mit Bezeichner des Textfragments
  2. Spalte: localized, mit mehrsprachigen Textfragmenten
userLang
Versuche, die Benutzersprache (momentan de) durch eine Anwendung zu unterstützen.
  • 1 – Leerzeichen-getrennte Liste der verfügbaren Codes gemäß ISO 639
  • Ergebnis:
    • Wenn die aktuelle Benutzersprache nicht Element der Liste ist, wird auf das erste Element zurückgefallen.
    • Wenn die aktuelle Benutzersprache eine Variante ist wie de-AT oder de-CH und diese nicht explizit in der Liste genannt wird, wird ersatzweise die Basissprache (hier de) versucht.
    • Wenn alles nicht passt und keine Liste vorgegeben wurde, ist die Ausgabe die Projektsprache (hier de) und notfalls en für Englisch.
wikibase
Zeige den Text zu einem Wikidata-Entity bestmöglich in der Benutzersprache (momentan de)
  • 1 – Item-ID, beginnend mit Q oder P oder L
  • 2(optional) 1 oder descriptions; (Vorgabe) 0 oder labels
  • Ergebnis: Hinterlegter Text, oder leer
failsafe
Versionsmanagement

Die Failsafe-Schnittstelle erlaubt den damit ausgerüsteten Modulen in globaler Verteilung

  • sicherzustellen, dass eine von einer Vorlage oder einem Modul benötigte Funktion in der lokalen Kopie eines Bibliotheksmoduls vorhanden ist, und ggf. auch in einer erforderlichen Mindestversion;
  • die globale Aktualisierung und Verknüpfung von Modulen über Wikidata zu verwalten.

Die Failsafe-Schnittstelle liegt sowohl auf Ebene der Vorlagen wie auch in direktem Lua-Zugriff vor.

Die Funktionen sind im Einzelnen (nicht alle werden bereits überall in vollem Umfang unterstützt):

Parameter
Wert Ergebnis aktuell
nichts
false
lokale Version »2020-12-10«
Mindest­version Mindestversionsbezeichnung
Datum im ISO-Format

Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.

  • leer, falls Mindestversion nicht erfüllt
  • 2001-01-01 → »2020-12-10«
  • 2099-01-01 → »«
wikidata Versionsbezeichnung der globalen Mutter (d:Q47541920)
  • Versionsbezeichnung auf Wikidata
  • lokal, falls dort keine gefunden
»2020-12-10«
item ID des Wikidata-Items
  • leer, falls nicht definiert
»Q47541920«
~ Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
  • leer, falls aktuell
  • Versionsbezeichnung auf Wikidata, falls ungleich
»«
@ Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
  • leer, falls mit dem richtigen Item verknüpft
  • Item-ID, falls nicht
»Q47541920«
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false; andernfalls die angegebene Zeichenkette.

Beispiele (Testseite) Bearbeiten

Eine Testseite illustriert praktische Beispiele.

Funktionen für Lua-Module Bearbeiten

Alle oben dokumentierten Funktionen können auch über require() in andere Module eingebunden werden:

local lucky, Multilingual = pcall( require, "Module:Multilingual" )
if type( Multilingual ) == "table" then
    Multilingual = Multilingual.Multilingual()
else
    -- Fehlerfall; Multilingual enthält Fehlermeldung
    return "<span class=\"error\">" .. Multilingual .. "</span>"
end

Danach stehen zur Verfügung:

Multilingual.fair( ask )
  • ask – Zeichenkette oder aber table gemäß getLang()
Multilingual.fallback( able, another )
Multilingual.findCode( ask )
Multilingual.fix( attempt )
Multilingual.format( apply, alien, alter, active, alert, frame, assembly, adjacent, ahead )
  • apply – Sprachenliste oder Einzelsprache
  • alien – Sprache des Ergebnisses
    • nil false "*" – eigene Sprache (Vorgabe)
    • "!" – aktuelle Projektsprache
    • Jeder gültige Code
  • alter – optionale Korrektur der Groß- und Kleinschreibung
    • "c" – Das erste Wort jeder Bezeichnung in Großschreibung
    • "d" – Alles in Kleinschreibung
    • "f" – Das erste Wort der Liste in Großschreibung, Rest Kleinschreibung
    • "m" – Das erste Wort jedes Listenelements in Kleinschreibung
  • active – Sprachnamen verlinken, wenn true
  • alert – optionaler string, Titel einer Wartungskategorie im Fehlerfall
  • frame – wenn verfügbar
  • assembly – optionaler string mit pattern, wenn Liste erwartet
  • adjacent – Listentrennung bei der Ausgabe, sonst assembly
  • ahead – Einem ersten Listenelement voranzustellende Zeichenkette
Multilingual.getBase( ask )
Multilingual.getLang( ask )
Zerlegung eines Sprachcodes in Komponenten
Rückgabewert: table
.base – Basissprache (2–3 Kleinbuchstaben)
.region – Staat (2 Großbuchstaben)
.script – Schrift (4 Buchstaben, erster groß)
.year – Jahr (4 Ziffern)
.extension – Erweiterung (1 Kleinbuchstabe)
.other – Sonstiges
.legaltrue wenn gültig
.n – Anzahl der Komponenten
Multilingual.getName( ask, alien )
  • alien – optionaler string, Sprache des Ergebnisses
    • nil false "*" – eigene Sprache
    • "!" – aktuelle Projektsprache
    • Jeder gültige Code
Multilingual.i18n( available, alt, frame )
Internationalisierter Text (I18N) in bestmöglicher Sprache.
  • available – Mapping; Sprachcode → Meldungstext als table
  • alt – optionaler string, mit Meldungstext falls table versagt
  • frame – wenn verfügbar
Multilingual.int( access, alien, apply )
Multilingual.isLang( ask )
Multilingual.isLangWiki( ask )
Multilingual.isMinusculable( ask, assign, about )
Multilingual.isRTL( ask )
Multilingual.message( arglist, frame )
Wähle ein Textfragment aus.
  • arglist – Parameter wie bei der Vorlage als table, Sprachcodes als key
  • frame – wenn verfügbar
Multilingual.sitelink( all, frame )
Verlinke lokale oder nächstmögliche fremde Seite zu einem Wikidata-Item.
  • arglist – Item-Bezeichner; string oder table (entity) oder number
  • frame – wenn verfügbar
Rückgabewert: string, mit irgendeinem internen Link, oder leere Zeichenkette
Multilingual.tabData( access, at, alt, frame )
Wähle ein Textfragment aus einer commons:Data:-Tabelle aus.
  • access – Seiten-Bezeichner auf Commons; string
  • at – Schlüsselwort für das Textfragment ; string
  • alt – Ersatztext; optional string
  • frame – wenn verfügbar
Rückgabewerte:
  1. Textfragment als string, sonst nil oder false
  2. string mit Sprachcode des Textfragments, notfalls error
Multilingual.userLang( accept, frame )
  • accept – Leerzeichen-getrennte Liste der verfügbaren Codes
  • frame – wenn verfügbar
Multilingual.userLangCode()
Errate die momentane Sprache der Benutzeroberfläche.
Rückgabewert: string, notfalls "en"
Multilingual.failsafe( atleast )
Versionsbezeichnung
  • atleast
    optional
    nil oder Mindestversion oder ~
Rückgabewert: string oder false

Im Erfolgsfall geben die Multilingual.get*() eine Zeichenkette zurück, die Multilingual.is*() usw. den Wert true; bei Misserfolg jeweils false.

Installation auf anderen Projekten Bearbeiten

Siehe englischsprachige Dokumentation.

Verwendung Bearbeiten

Allgemeine Bibliothek; nicht eingegrenzt.

Abhängigkeiten Bearbeiten