Expand Eulanda Message Refs
Zuletzt geändert: 23.05.2026 10:43

Übersicht

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 ‘:@’. Pro Treffer wird Resolve-EulandaMessageRef aufgerufen, mehrfache Vorkommen desselben Tags landen aus dem Cache (kein erneuter DB-Lookup).

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.