Wert aus Sprachverwaltung

Wertauflöser - Kurzfassung

Zweck: Sucht nach einer Lokalisierung für eine gegebene Bundle/Resource-Kombination und gibt diese oder (als Fallback) den Standardwert zurück.

Im Server-Kontext (z. B. Ereignisbehandlungen)

Im Client-Kontext (z. B. Client Workflow)

images/download/attachments/177910747/image-2024-9-11_14-45-44-version-1-modificationdate-1726058744347-api-v2.png

images/download/attachments/177910747/image-2024-9-11_14-46-33-version-1-modificationdate-1726058792901-api-v2.png
HINWEIS◄ Die Auswahl einer Sprache wird clientseitig nicht unterstützt. Die Aktuelle Sprache bestimmt im Client alternativlos die Lokalisierung.


Der Wert aus Sprachverwaltung-Resolver sucht nach einer Lokalisierung für eine gegebene Bundle/Resource-Kombination in der angegebenen Sprache und gibt diese oder (als Fallback) den Standardwert zurück.

Sofern die Lokalisierung bzw. der stattdessen zugewiesene Standardwert Referenzen auf Parameter ({0}, {1}, ...) enthält, werden - sofern vorhanden - die Rückgabewerte der für diese Parameter konfigurierten Wertauflöser eingesetzt.

Es wird kein spezifischer Eingabewert erwartet. Der Eingabewert des Wertauflösers dient allerdings als Bezugsobjekt für innerhalb konfigurierte Wertauflöser.

Konfiguration

HINWEIS◄ Die Werte aller Text-Parameter des Wertauflösers können wahlweise per Direkteingabe (Standard) oder über Wertauflöser definiert werden. Ein Klick auf den kleinen grauen Pfeil links unten im Textfeld für die Direkteingabe schaltet zur Wertauflöser-Konfiguration um.

Parameter

Beschreibung

Beispiele

Bundle

Der hier eingegebene oder zur Laufzeit ermittelte Text muss mit dem Bundle Name eines Lokalisierungseintrags exakt übereinstimmen (inkl. Groß-/Kleinschreibung), damit der Eintrag zugeordnet wird.

error
... für einen Eintrag, der als Fehlermeldung angelegt ist


de.lobster.scm.doc.Document
... für einen Eintrag, der die Klasse Dokumente betrifft


DIRECTIONS
... für Werte einer eigenen Dynamischen Aufzählung

Resource

Der hier eingegebene oder zur Laufzeit ermittelte Text muss mit dem Resource Name eines Lokalisierungseintrags exakt übereinstimmen (inkl. Groß-/Kleinschreibung), damit der Eintrag zugeordnet wird.

CUSTOM_myBigFatGreekError... für einen individuellen Fehlercode (im Bundle error)


$name
... für den Namen der per Bundle identifizierten Klasse


NE
... für den Wert "Nordost" im Bundle einer eigenen Dynamischen Aufzählung DIRECTIONS (s. o.)

Standardwert

Dieser Wert wird zurückgegeben falls für die Kombination von Bundle und Resource keine Lokalisierung zugeordnet ist.

Es ist gute Praxis, hier den Wert von Resource einzutragen (evtl. sogar Bundle/Resource), damit beim Fehlen einer Lokalisierung am Rückgabewert erkennbar ist, wonach erfolglos gesucht wurde.

Parameter

Der Liste Parameter können per Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol optional Einträge hinzugefügt werden, deren Wert statisch per Direkteingabe oder über die wahlweise konfigurierbaren Wertauflöser zur Laufzeit bestimmt wird. Sowohl Lokalisierungseinträge als auch der Standardwert können sich über Platzhalter ({0}, {1}, ...) auf die Werte solcher Parameter beziehen. Der Index bezieht sich dabei auf die Listenposition (aufsteigend ab 0).

Ein Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg -Symbol entfernt einen bestehenden Eintrag aus der Liste.

HINWEIS◄ Abhängig vom Inhalt der Parameter kann es sinnvoll bzw. notwendig sein, deren Werte wiederum über den Wert aus Sprachverwaltung-Wertauflöser zu generieren.

Die Standard-Lokalisierung für den Lokalisierungseintrag (Bundle/Resource): error/CORESYSTEM_BaseDataManager_accessDenied lautet für die Sprache "Deutsch":
Zugriff verweigert: Kein Zugriff auf {0} für {1}Mit den Parameterwerten #0: " dieses Objekt " und #1: " die angeforderte Aktion " liefert der .Wert aus Sprachverwaltung v4.12.0-Wertauflöser zur Laufzeit den folgenden Rückgabewert:

Zugriff verweigert: Kein Zugriff auf dieses Objekt für die angeforderte Aktion


Statisch (Option)
und
Sprache
(Wertauflöser oder Auswahl)

WICHTIG◄ Diese Parameter sind nur im serverseitigen Einsatz des Wertauflösers verfügbar (z. B. in einer Ereignisbehandlung). Clientseitig (z. B. in einem Client Workflow) steht nur die Aktuelle Sprache für Lokalisierungen zur Verfügung.

Ist Option Statisch abgewählt (Standard), dann wird der Lokalisierungstext in der Sprache nachgeschlagen, die die Wertauflöser-Konfiguration für den Parameter Sprache zur Laufzeit angibt. Der Rückgabewert muss dabei vom Typ Sprache (Locale)sein. Ein Text, der eine Sprache über deren internen Namen identifizieren soll (z. B. fr), wird nicht automatisch umgewandelt.

  • Im Beispiel rechts oben soll die Sprache für die Lokalisierung aus dem Firmenkonto einer aufgrund der Firmenhierarchie als "Auftraggeber" für die angemeldete Firma qualifizierten Firma (Details s. Firma der Session) übernommen werden.

Wird die Option Statisch ausgewählt, dann erscheint anstelle der Wertauflöser-Konfiguration für den Parameter Sprache ein Auswahlfeld, über das eine statische Auswahl für die Sprache vorgenommen werden kann.

  • Im Beispiel rechts unten wurde die Option Statisch ausgewählt, so dass die Sprache aus allen Sprachen statisch ausgewählt werden kann, die in der Dynamischen Aufzählung Sprache als "Unterstützte Sprache" definiert sind.

Als Fallback für die Sprache gilt unabhängig von der Methode zur Definition die Aktuelle Sprache, also die Sprache, mit der die aktuelle Sitzung angemeldet ist.


images/download/attachments/177910747/image-2024-9-11_14-49-35-version-1-modificationdate-1726058974599-api-v2.png

images/download/attachments/177910747/image-2024-9-11_14-52-33-version-1-modificationdate-1726059152698-api-v2.png

Beispiele

Einfaches Beispiel: Lokalisieren einer Meldung (Aktuelle Sprache)

Zu Beginn einer Sitzung soll ein Benutzer, der sich mit einer von mehreren besonders privilegierten Rolle anmeldet durch eine Pop-Benachrichtigung (vom Typ "Info") auf die verwendete Rolle hingewiesen werden.

Soweit für den Namen der verwendete Rolle eine Lokalisierung (für die Aktuelle Sprache) existiert, soll diese angezeigt werden. Anderenfalls soll der interne Rollenname (roleName) erscheinen.

Laufzeitbeispiel:

images/download/attachments/177910747/image2022-6-30_19-1-23-version-1-modificationdate-1726058736378-api-v2.png

  • Diese Warnmeldung soll zu Beginn einer Sitzung erscheinen, wenn sich ein Benutzer mit der Rolle "Administrator für Dokumente" (intern: DocAdmin) anmeldet.

Konfiguration:

Eine Ereignisbehandlung, die auf das Ereignis "Client angemeldet" (s. Anmeldung (Ereignisse)) reagiert, stellt in der Prüfenden Regel fst, ob die Anmeldung eine der "besonders privilegierten Rollen" betrifft.

Wie im Screenshot zu sehen, können die betreffenden Rollen in einer Rollenregel per Mehrfachauswahl buchstäblich "handverlesen" festgelegt werden.

ANMERKUNG◄ Das Label in der Mehrfachauswahl zeigt die internen Rollennamen (roleName) unabhängig davon ob eine Lokalisierung vorliegt.

images/download/attachments/177910747/image2022-6-30_18-29-20-version-1-modificationdate-1726058736383-api-v2.png

Als einzige Aktion bei bestandener Regel wird muss eine Hinweis anzeigen (Popup)-Ereignisaktion konfiguriert werden:

  • Als Typ wird "Warning" ausgewählt, damit die Benachrichtigung als "Warnung" (mit dem Standard-Farbschema weiß/orange) erscheint.

  • Als Titel soll deshalb auch die Standardbeschriftung des Systems für eine Warnung erscheinen. Systemseitig liegt im Bundle common eine Resource warning vor, die per Standard geeignet lokalisiert ist ("Warnung"). Der Standardwert common/warning ist nur in dem Sonderfall relevant, dass der Lokalisierungseintrag für die Aktuelle Sprache UND für die Standard-Sprache (soweit abweichend) fehlt.

  • In der Meldung soll die Lokalisierung für die Rolle der Session angezeigt werden. Lokalisierungen für Rollen beziehen sich auf das Bundle rolename, wobei als Resource der interne Name der Rolle aus deren Feld roleName angegeben werden muss. Dieselbe Konfiguration (Rolle der Session und Objekt-Feld-Wertauflöser für roleName) wird auch für den Standardwert eingerichtet. Dies ist hier wichtiger als für den Titel, da für Rollen per Standard keine Lokalisierung vorliegt. Ohne Lokalisierung und ohne Standardwert würde dann "kein Wert" ($null) zurückgegeben.

ANMERKUNG◄ Für den Parameter Schließen nach (Sekunden) wird hier der Wert 0 angegeben, damit die Warnmeldung "unbegrenzt" angezeigt bleibt (bzw. bis der Anwender sie schließt). Sie bleibt dann allerdings auch sichtbar, wenn ein Schnellwechsel zu einer anderen (ggf. weniger privilegierten) Rolle ausgeführt wird, für die keine neue Warnung erscheint.

images/download/attachments/177910747/image2022-6-30_18-34-32-version-1-modificationdate-1726058736381-api-v2.png

Komplexeres Beispiel: E-Mail in der Sprache des Empfängers lokalisieren

Wenn in Lobster Data Platform / Orchestration Entitäten besonders "sensibler" Typen (hier: Benutzerkonto, Firmenkonto oder Rolle) erstellt oder gelöscht werden, soll automatisch eine Benachrichtigung des zuständigen Administrators per E-Mail ausgelöst werden.

Die Benachrichtigung soll in der Sprache lokalisiert werden, die dieser Benutzer für die Anmeldung bei Lobster Data Platform / Orchestration nutzt.

Für unser Beispiel beziehen wir uns ausschließlich auf den "Betreff" der E-Mail.

Laufzeitbeispiel:

Der Screenshot rechts zeigt in der Vorschau für E-Mails den Betreff für eine E-Mail die beim Löschen einer Rolle mit der internen ID #3301 ausgelöst wird.

Relevant für eine Lokalisierung sind im Betreff die folgenden Komponenten:

  • Ereignis ("Löschen", "Erstellen")

  • Entitätstyp ("Rolle", Benutzer", "Firmenkonto")

images/download/attachments/177910747/image2022-7-1_10-10-28-version-1-modificationdate-1726058736375-api-v2.png

Zum Vergleich zeigt der Screenshot rechts ein Beispiel für eine Nachricht, die ohne Lokalisierung ausgegeben wurde.

  • Der Text DELETE ist hier der interne Name des Ereignisses "Löschen".

  • Anstelle des Entitätstyps erscheint die String-Abbildung der Klasse für Rollen.

images/download/attachments/177910747/image2022-7-1_11-0-22-version-1-modificationdate-1726058736373-api-v2.png

Konfiguration:

Für die E-Mail-Benachrichtigung wird eine Ereignisbehandlung wie rechts abgebildet konfiguriert:

  • Als Auslösende Ereignisse werden die Standard-Ereignisse Erstell und Löschen aus der Kategorie "Allgemein" ausgewählt.


  • Die Prüfende Regel prüft per Typprüfung ob es um einen der als "sensibel" eingestuften Entitätstypen geht. Der ver-ODER-ten Reihe können weitere Elemente hinzugefügt werden.


  • Es werden genau zwei Aktionen bei bestandener Regel benötigt:

    • Eine Setze Wert-Ereignisaktion weist der Variablen mailToUser das Konto des Benutzers zu, der benachrichtigt werden soll. Im Beispiel wird immer derselbe Benutzer zugewiesen, stattdessen könnte aber auch eine Fallunterscheidung oder Suche konfiguriert werden, um die Zuständigkeit dynamisch zu regeln.

    • Alle weiteren Konfigurationen betreffen direkt die folgenden E-Mail-Versand-Ereignisaktion.

HINWEIS◄ Nachfolgend wird nur die Lokalisierung für den "Betreff" der E-Mail im Detail ausgeführt.

images/download/attachments/177910747/image2022-7-1_12-14-45-version-1-modificationdate-1726058736370-api-v2.png

Der Text für den Betreff innerhalb der E-Mail-Versand-Ereignisaktion wird hier über einen Textverkettung-Wertauflöser schrittweise aufgebaut:

  • Die erste Teilzeichenfolge der Verkettung soll den lokalisierten Namen für das Ereignis ausgeben, das die Ereignisbehandlung ausgelöst hat.

    • Da die Ereignisse "Erstellen" und "Löschen" beide der Kategorie "Allgemein" angehören, können wir den Namen für das Bundle statisch über den Klasse-Wertauflöser definieren, dessen String-Abbildung das Bundle benennt: de.lobster.scm.action.event.CommonActionEvent

    • Den Schlüsselwert liefert der Auslösendes Ereignis-Wertauflöser, dessen Rückgabewert als String-Abbildung direkt für den Parameter Resource verwendet werden kann (Werte: DELETE, CREATE).

    • Der Standardwert wiederholt die Konfiguration für den Parameter Resource, auch wenn eine Lokalisierung für die Allgemein-Ereignisse systemseitig mindestens durch die Standard-Sprache (als Fallback) gewährleistet sein sollte.

    • Es werden keine Werte für Parameter angegeben.

    • Die Sprache wird aus dem Feld "Sprache" (locale) des über die Variable mailToUser angegebenen Benutzerkontos zugeordnet.

  • Die zweite Teilzeichenfolge gibt einen statischen Text (" / ") als Trennzeichen vor.

images/download/attachments/177910747/image2022-7-1_12-26-38-version-1-modificationdate-1726058736368-api-v2.png

  • Die dritte Teilzeichenfolge soll den lokalisierten Namen des Entitätstyps ausgeben, der erstellt oder gelöscht wurde:

    • Die vom System automatisch befüllte Variable entityClass verweist allgemein auf die Klasse des Bezugsobjekts und im Kontext eines "Erstellen" oder "Löschen" Aktion auf den Typ der betreffenden Entität. Die String-Abbildung der Klasse kann hier direkt dem Parameter Bundle zugewiesen werden.

    • Der lokalisierte Name für einen Entitätstyp ist per Standard per Resource $name abrufbar.

    • Auch wenn für die im Beispiel relevanten Entitätstypen mindestens für die Standard-Sprache systemseitige Lokalisierungen abrufbar sein sollten, wird der Standardwert hier ebenfalls die Zeichenfolge $name zugeordnet. Ggf. könnte man per Textverkettung noch den Wert der Variablen entityClass ergänzen.

    • Die Sprache wird wie oben beschrieben aus dem Konto des Benutzers gelesen, der angeschrieben wird.

  • Die vierte Teilzeichenfolge definiert einen statischen Text (" #") zur Trennung und als Präfix für die nachfolgende ID (id).

  • Die vierte Teilzeichenfolge identifiziert das Bezugsobjektfür das Ereignis , also die zu erstellende oder zu löschende Entität, über dessen Feld ID (id).
    WICHTIG◄ Da eine neue Entität im Kontext des "Erstellen"-Ereignisses noch nicht über eine ID verfügt, sollte für die E-Mail-Versand-Ereignisaktion die Option "Mailinhalt erst beim Commit erstellen" ausgewählt sein, sonst wird die ID 0 ausgegeben.

images/download/attachments/177910747/image2022-7-1_13-52-24-version-1-modificationdate-1726058736365-api-v2.png


Alternative Konfiguration:

Bisher wird der Betreff für die E-Mail per Textverkettung nach dem folgenden Schema aufgebaut:



@EVENT@ / @ENTITYCLASS@ # @ID


Dasselbe Ergebnis kann allerdings auch durch die folgende Konfiguration erreicht werden, bei der anstelle der Verkettung der .Wert aus Sprachverwaltung v4.12.0-Wertauflöser verwendet wird, um die variablen Teilzeichenfolgen in einen vordefinierten Text als Parameter einzubinden:


{0} / {1} #{2}

Die folgende Konfiguration demonstriert diese Alternative für den Parameter Mail-Body-Erzeuger der E-Mail-Versand-Ereignisaktion:

Anstelle des Textverkettung-Wertauflösers wird in der rechts abgebildeten Konfiguration eine weitere Instanz des Wert aus Sprachverwaltung-Wertauflösers eingerichtet:

  • Der äußere Wert aus Sprachverwaltung-Wertauflöser dient hier nur als Plattform, um den Standardwert ({0} / {1} #{2}) ins Spiel zu bringen. Die Parameter Bundle und Resource bleiben leer, da wir tatsächlich nicht auf der Suche nach einem Sprachverwaltungseintrag sind.

  • Die Liste der Parameter kann durch Kopieren und Einfügen der Konfigurationen für die entsprechenden Teilzeichenfolgen aus dem Betreff "zusammengeklaut" werden:

    • Der erste Parameter ({0}) beschafft die Lokalisierung für das auslösende Ereignis über einen Wert aus Sprachverwaltung-Wertauflöser (Details s. o.) .

    • Der zweite Parameter ({1}) beschafft die Lokalisierung für den Entitätstyp über einen Wert aus Sprachverwaltung-Wertauflöser (Details s. o.).

    • Der dritte Parameter ({2}) gibt die ID (id) der erstellten oder gelöschten Entität zurück (s. o.), was ohne Zugriff auf die Sprachverwaltung funktioniert.


images/download/attachments/177910747/image2022-7-1_15-0-44-version-1-modificationdate-1726058736362-api-v2.png

Laufzeitbeispiel:

Wie ein Screenshot der E-Mail-Vorschau belegt, liefert diese Konfiguration für den "Mail-Body" denselben Text wie die oben gezeigte für den Betreff.

Die "Textverkettung" per Standardwert wirkt sogar übersichtlicher und ist flexibler, v. a. wenn die Reihenfolge der Platzhalter für Parameter nachträglich geändert wird oder derselbe Parameter mehrfach "zitiert" werden soll.

images/download/attachments/177910747/image2022-7-1_15-40-4-version-1-modificationdate-1726058736360-api-v2.png

ANMERKUNG◄ Falls der Mail-Body die im Betreff sehr knapp und strukturiert zusammengefasste Information etwas weniger "militärisch" wiedergeben soll, empfiehlt es sich einen eigenen Sprachverwaltungseintrag anzulegen, der die Parameter verwendet.

Servervorschlag:

Bundle

Name

Sprache

Lokalisierung

custom

adminMail.Critical.Body

DE

Der guten Ordnung halber möchten wir Sie hiermit über das {0} der Entität #{2} des Typs {1} informieren.

EN

For the sake of orderliness, we would like to notify you of the {0} of {1} entity #{2}.

Wie das Beispiel demonstriert, kann es auch vorkommen, dass die Lokalisierung in unterschiedlichen Sprachen aufgrund der Satzstellung die Parameter in unterschiedlicher Reihenfolge "zitiert".

Wenn man diesen Lokalisierungseintrag erstellt hat, kann man dessen Bundle/Resource-Kombination im Wert aus Sprachverwaltung-Wertauflöser für den Mail-Body-Erzeuger ergänzen.

WICHTIG◄ Bisher wurde für den äußeren Wert aus Sprachverwaltung-Wertauflöser keine Sprache zugeordnet. Damit der parametrierbare "Textbaustein" in der passenden Sprache verwendet wird, muss hier noch die Definition für die Sprache aus einem der Parameter ergänzt werden (Feld lovale aus der Variable mailtoUser).