Expand-EulandaMessageRefs #
ÜBERSICHT #
Ersetzt alle EULANDA-Message-Referenzen (’:SUB@TYPE’) in einem Text durch ihre sprachabhängigen Klartexte, mit optionalem Cache für wiederholte Lookups.
SYNTAX #
Expand-EulandaMessageRefs [-Conn] <__ComObject> [-Text] <string> [[-Language] <string>] [[-Cache]
<hashtable>] [<CommonParameters>]
BESCHREIBUNG #
Geht den Eingabe-Text per Regex durch und sucht alle Vorkommen von ‘:
Wenn der Aufrufer einen eigenen Cache übergibt (-Cache), wird der über mehrere Aufrufe hinweg geteilt – nützlich, wenn die gleichen System- Tags in vielen Strings vorkommen (z.B. beim rekursiven Auflösen eines Merkmal-Baums).
Ohne Tags im Text wird der Text unverändert zurückgegeben.
PARAMETER #
-Conn #
Type: __ComObject
ADODB.Connection-Objekt zur EULANDA-Datenbank.
-Text #
Type: string
Der Text mit ein oder mehreren ‘:SUB@TYPE’-Platzhaltern.
-Language #
Type: string
Default: 'DE'
ISO-Sprachcode. Default ‘DE’.
-Cache #
Type: hashtable
Optionale Hashtable, in der bereits aufgelöste Tags gehalten werden. Schlüssel = ‘:SubtypeChar@Type’ (Großschreibung beachten), Wert = aufgelöster String. Die Funktion ergänzt den Cache um neue Treffer. Wenn nicht angegeben, wird ein interner Cache pro Aufruf verwendet.
AUSGABEN #
[string] Text mit allen Tags ersetzt. Tags ohne Auflösung bleiben als
Original-Tag erhalten (siehe Resolve-EulandaMessageRef).
BEISPIELE #
Expand-EulandaMessageRefs -Conn $conn -Text 'Tabelle: :AR@1071' -Language 'DE'
# → 'Tabelle: Artikel'
# Geteilter Cache über mehrere Aufrufe
$cache = @{}
foreach ($txt in $labels) {
Expand-EulandaMessageRefs -Conn $conn -Text $txt -Cache $cache
}
# nur ein DB-Lookup pro eindeutigem Tag, egal wie oft er auftaucht
# Mehrere Tags in einem Text
Expand-EulandaMessageRefs -Conn $conn -Text ':AR@1071 / :AD@1071' -Language 'DE'
# → 'Artikel / Adresse'
HINWEISE #
Cache-Schlüssel sind case-sensitiv – ‘:AR@1071’ und ‘:ar@1071’ werden als unterschiedliche Tags behandelt. In der EULANDA-DB stehen die Subtype-Codes konsistent in Großbuchstaben, daher in der Praxis unkritisch.
Pendant zur Delphi-Funktion ‘CnMessages.PatchMsg’ für Multi-Tag-Texte.