Nachricht – Global

  • Freigeben Version: Zurich
  • Aktualisiert 7. August 2025
  • 7 Minuten Lesedauer
  • Die Nachricht Mit der Server-API können Sie lokalisierte Nachrichten aus der Tabelle „Nachricht“ [sys_ui_message] für einen Eintrag abrufen, dessen Code dem Codeparameter entspricht, der Schlüssel dem Nachrichtenparameter entspricht und die Sprache der Sitzung (oder Fallback-Sprache) entspricht.

    Die Nachricht Die API unterstützt Internationalisierung (i18n), indem Nachrichten basierend auf der Sitzungssprache des Anwenders oder einem angegebenen Sprachparameter dynamisch abgerufen werden. Diese API bietet drei Hauptfunktionen:
    • Beschreibung: Verwendet einen zusammengesetzten Schlüssel von Code Und Nachricht Zur Unterscheidung zwischen identischen Zeichenfolgen, die in verschiedenen Kontexten verwendet werden (z. B. „offen“ als Verb vs. Substantiv).
    • Benannte Parameter: Ermöglicht die dynamische Interpolation von Werten in Nachrichtenvorlagen mithilfe benannter Platzhalter.
    • Sprachsteuerung: GetMessageLang Ermöglicht die Angabe einer Zielsprache, die für Szenarien wie E-Mail-Zusammenführungen oder mehrsprachige Benachrichtigungen nützlich ist 2 3.

    Die Nachricht Die API wird mit dem Standardbasissystem in bereitgestellt sn_i18n Namespace und erfordert keine Plugins oder speziellen Rollen, um darauf zuzugreifen. Stellen Sie vor dem Aufrufen von Methoden innerhalb dieser Klasse sicher, dass die entsprechenden Nachrichtendatensätze [sys_ui_message] vorhanden und mit Übereinstimmungen ausgefüllt sind Schlüssel Und Code Felder.

    Message.getMessage(Zeichenfolgencode, Zeichenfolgennachricht, Argumente zuordnen)

    Ruft eine lokalisierte Nachricht aus der Tabelle „Nachricht“ [sys_ui_message] ab, während die Disambimentierung und das dynamische Einfügen von Inhalten zugelassen werden.

    Die API unterstützt Inline-Kommentare für Übersetzer, wodurch die Klarheit verbessert und Mehrdeutigkeit in mehrsprachigen Kontexten reduziert wird. Kommentare werden im Schlüsselfeld der Nachricht [sys_ui_message] nicht verwendet, aber die kommentierte Zeichenfolge kann dem Feld „commented_message“ hinzugefügt werden. Werte aus dem Parameter „Argumente“ werden in die übereinstimmenden Vorlagenliterale in der Zeichenfolge interpoliert.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Code Zeichenfolge Erforderlich. Ein eindeutiger Schlüssel zur Unterscheidung von Nachrichten mit ähnlichem Text, aber unterschiedlichen Bedeutungen oder Kontexten. Ein Bereichsname kann verwendet werden, wenn die Zeichenfolge innerhalb des Bereichs eindeutig ist. Wenn eine weitere Erläuterung erforderlich ist, kann sie erweitert werden.

    Zum Beispiel kann „Offen“ einen Status oder eine Aktion bedeuten, und der Codeparameter hilft, zu klären, welche. Wenn 2 Nachrichten mit derselben Zeichenfolge, aber unterschiedlicher Groß-/Kleinschreibung erforderlich sind, lautet das Skript wie folgt:

    sn_i18n.Message.getMessage("scopeName-open-capitalized", "Open");
    sn_i18n.Message.getMessage("scopeName-open", "open");
    Nachricht Zeichenfolge Optional. Die Standardnachrichtenzeichenfolge, die verwendet werden soll, wenn keine lokalisierte Version gefunden wird. Entspricht Schlüssel Feld in der Tabelle Nachricht [sys_ui_message].
    args JSON Optional. Eine Zuordnung von benannten Parametern, die zum dynamischen Einfügen von Werten in die Nachricht verwendet werden. Die Schlüssel entsprechen den benannten Parametern in der Nachricht. Die Werte können Zeichenfolgenliterale oder Variablen/Konstanten sein, die sich im Umfang befinden.

    Wenn Ihre Nachricht beispielsweise „Hallo, ${John}!“ lautet, können Sie {Name: „John“} übergeben, um „Hallo, John!“ zu rendern.

    Tabelle : 2. Ausgabe
    Typ Beschreibung
    Zeichenfolge
    Gibt einen Wert aus der Tabelle „Nachricht“ [sys_ui_message] zurück, wobei:
    • Die ersten 255 Zeichen des Nachrichtenparameters stimmen mit dem Schlüsselfeld überein.
    • Die ersten 255 Zeichen des Codeparameters stimmen mit dem Codefeld überein.
    • Das Sprachfeld (oder die Sitzungssprache, wenn kein Sprachfeld angegeben ist) stimmt mit dem Sprachfeld überein.

    Wenn keine Übereinstimmung gefunden wird, werden alle Fallback-Sprachen auf eine Übereinstimmung überprüft (siehe Set a fallback language). Wenn immer noch keine Übereinstimmung gefunden wird, wird der Nachrichtenwert (2. Parameter) zurückgegeben und von Kommentaren entfernt.

    Benannte Parameter werden durch die angegebenen Werte in der Zuordnung ersetzt, die im Parameter „Argumente“ übergeben werden.

    Im folgenden Beispiel wird die Methode „getMessage()“ aufgerufen, um einen vorhandenen Datensatz in der Tabelle „Nachricht“ [sys_ui_message] in Französisch, der Sprache der Anwendersitzung, zu definieren. Der folgende Codeblock enthält den Inhalt der Nachricht.

    <?xml version="1.0" encoding="UTF-8"?>
    <xml>
    	<sys_ui_message>
    		<code>exampleCode</code>
    		<key>User {username} has been added as {role}</key>
    		<language>fr</language>
    		<message>L'utilisateur {username} a été ajouté en tant que {role}</message>
    	</sys_ui_message>
    </xml>

    Im Beispiel wird das API-Skript mit einer Sitzungssprache Französisch ausgeführt:

    //defines a user object using the name and role properties
    var user = {
    name: "Fred Luddy",
    role: "maint"
    }
    
    //retrieves a localized message where code: "exampleCode" is the disambiguation key, message: User {username} has been added as {role}" is the default message template, and args: username: user.name, role: user.role } is a map of named parameters that will replace {username} and {role} in the message.
    gs.info(sn_i18n.Message.getMessage("exampleCode","User {username} has been added as {role}",{username: user.name, role: user.role}));

    Die Ausgabe enthält die Nachricht in Französisch:

    //English: User Fred Luddy has been added as maint
    L'utilisateur Fred Luddy a été ajouté en tant que maint

    Standardnutzung ohne benannte Parameter

    // Retrieves a localized message using only code and default message
    var message = sn_i18n.Message.getMessage("status.open", "Open");
    gs.info(message); // Output depends on user's session language

    In diesem Beispiel wird verwendet code( „satus.offen“ ), um die Nachricht zu eindeutigen, und message( "Open") Als Fallback, wenn keine Übersetzung gefunden wird.

    Basisnutzung mit benannten Parametern

    
    / Retrieves a localized message with named parameters
    var message = sn_i18n.Message.getMessage(
      "greeting.personal",
      "Hello, ${name}! You have ${count} new messages.",
      { name: "John", count: 5 }
    );
    gs.info(message); // Output: "Hello, John! You have 5 new messages." (localized if available)

    In diesem Beispiel wird verwendet code( „Begrüßung.persönlich“ ) Unterscheidet diese Begrüßung von anderen, und messageIst eine Vorlage mit Platzhaltern. args( {Name: „John“, Anzahl: 5} ) Füllt die Platzhalter aus.

    Message.getMessageLang(Zeichenfolgencode, Zeichenfolgennachricht, Kartenargumente, Zeichenfolgensprache)

    Ruft eine lokalisierte Nachricht innerhalb der Nachricht [sys_ui_message] in einer bestimmten Sprache ab, unabhängig von der Sitzungssprache des aktuellen Anwenders.

    Die API unterstützt Inline-Kommentare für Übersetzer, wodurch die Klarheit verbessert und Mehrdeutigkeit in mehrsprachigen Kontexten reduziert wird. Kommentare werden im Schlüsselfeld der Nachricht [sys_ui_message] nicht verwendet, aber die kommentierte Zeichenfolge kann dem Feld „commented_message“ hinzugefügt werden. Werte aus dem Parameter „Argumente“ werden in die übereinstimmenden Vorlagenliterale in der Zeichenfolge interpoliert.

    GetMessageLang() ist nützlich für:
    • Überschreiben der Sitzungssprache: Nützlich zum Senden von Benachrichtigungen, E-Mails oder Berichten in einer bestimmten Sprache.
    • Mehrsprachiger Support: Ideal für Anwendungen, die Anwendern in verschiedenen Regionen dienen.
    • Übersetzungen testen: Hilft Entwicklern, eine Vorschau der Anzeige von Nachrichten in anderen Sprachen anzuzeigen, ohne die Anwendereinstellungen zu ändern.
    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Code Zeichenfolge Erforderlich. Ein eindeutiger Schlüssel zur Unterscheidung von Nachrichten mit ähnlichem Text, aber unterschiedlichen Bedeutungen oder Kontexten. Ein Bereichsname kann verwendet werden, wenn die Zeichenfolge innerhalb des Bereichs eindeutig ist. Wenn eine weitere Erläuterung erforderlich ist, kann sie erweitert werden.

    Zum Beispiel kann „Offen“ einen Status oder eine Aktion bedeuten, und der Codeparameter hilft, zu klären, welche. Wenn 2 Nachrichten mit derselben Zeichenfolge, aber unterschiedlicher Groß-/Kleinschreibung erforderlich sind, lautet das Skript wie folgt:

    sn_i18n.Message.getMessage("scopeName-open-capitalized", "Open");
    sn_i18n.Message.getMessage("scopeName-open", "open");
    Nachricht Zeichenfolge Optional. Die Standardnachrichtenzeichenfolge, die verwendet werden soll, wenn keine lokalisierte Version gefunden wird. Entspricht Schlüssel Feld in der Tabelle Nachricht [sys_ui_message].
    args JSON Optional. Eine Zuordnung von benannten Parametern, die zum dynamischen Einfügen von Werten in die Nachricht verwendet werden. Die Schlüssel entsprechen den benannten Parametern in der Nachricht. Die Werte können Zeichenfolgenliterale oder Variablen/Konstanten sein, die sich im Umfang befinden.

    Wenn Ihre Nachricht beispielsweise „Hallo, ${John}!“ lautet, können Sie {Name: „John“} übergeben, um „Hallo, John!“ zu rendern.

    language Zeichenfolge Optional. Sprache, in der die Nachricht zurückgegeben werden soll.

    Format: BCP-47-Sprachcode

    Standard: Sitzungssprache

    Tabelle : 4. Rückgaben
    Typ Beschreibung
    Zeichenfolge
    Gibt einen Wert aus der Tabelle „Nachricht“ [sys_ui_message] zurück, wobei:
    • Die ersten 255 Zeichen des Nachrichtenparameters stimmen mit dem Schlüsselfeld überein.
    • Die ersten 255 Zeichen des Codeparameters stimmen mit dem Codefeld überein.
    • Das Sprachfeld (oder die Sitzungssprache, wenn kein Sprachfeld angegeben ist) stimmt mit dem Sprachfeld überein.

    Wenn keine Übereinstimmung gefunden wird, werden alle Fallback-Sprachen auf eine Übereinstimmung überprüft (siehe Set a fallback language). Wenn immer noch keine Übereinstimmung gefunden wird, wird der Nachrichtenwert (2. Parameter) zurückgegeben und von Kommentaren entfernt.

    Benannte Parameter werden durch die angegebenen Werte in der Zuordnung ersetzt, die im Parameter „Argumente“ übergeben werden.

    Im folgenden Beispiel wird die Methode „getMessageLang()“ aufgerufen, um einen vorhandenen Datensatz in der Tabelle „Nachricht“ [sys_ui_message] ins Japanische zu übersetzen. Der folgende Codeblock enthält den Inhalt der Nachricht.

    <?xml version="1.0" encoding="UTF-8"?>
    <xml>
    	<sys_ui_message>
    		<code>exampleCode</code>
    		<key>User {username} has been added as {role}</key>
    		<language>ja</language>
    		<message> {username} が {role} として追加されました。</message>
    	</sys_ui_message>
    </xml>

    Im Beispiel wird das API-Skript mit einer anderen Sitzungssprache als Japanisch ausgeführt:

    var user = {
        name: "Fred Luddy",
        role: "maint"
    }
    gs.info(sn_i18n.Message.getMessageLang("exampleCode","User {username} has been added as {role}",{username: user.name, role: user.role}, "ja"));

    Die Ausgabe enthält die Nachricht auf Japanisch:

    Fred Luddy が maint として追加されました

    Die folgenden Beispiele verwenden benannte Parameter (${username}, ${role}) für dynamische Inhalte, geben eine Zielsprache mithilfe von ISO-Sprachcodes ("fr", "ja", "es") an und stellen einen Rückgriff auf die Standardnachricht sicher, wenn keine Übersetzung gefunden wird.

    Französische Benachrichtigung:

    var user = {
      name: "Fred Luddy",
      role: "maint"
    };
    
    var message = sn_i18n.Message.getMessageLang(
      "user.added",
      "User ${username} has been added as ${role}",
      { username: user.name, role: user.role },
      "fr" // French
    );
    
    gs.info(message); // Output: "L'utilisateur Fred Luddy a été ajouté en tant que maint" (if translation exists)

    Japanische Benachrichtigung:

    var user = {
      name: "Hanako Yamada",
      role: "admin"
    };
    
    var message = sn_i18n.Message.getMessageLang(
      "user.added",
      "User ${username} has been added as ${role}",
      { username: user.name, role: user.role },
      "ja" // Japanese
    );
    
    gs.info(message); // Output: "ユーザー Hanako Yamada が admin として追加されました" (if translation exists)

    Spanische Benachrichtigung:

    var user = {
      name: "Carlos Ruiz",
      role: "editor"
    };
    
    var message = sn_i18n.Message.getMessageLang(
      "user.added",
      "User ${username} has been added as ${role}",
      { username: user.name, role: user.role },
      "es" // Spanish
    );
    
    gs.info(message); // Output: "El usuario Carlos Ruiz ha sido añadido como editor" (if translation exists)