Message : global
L’API Message Server vous permet de récupérer des messages localisés de la table Message [sys_ui_message] pour une entrée avec un code égal au paramètre code, une clé égale au paramètre message et une langue égale à la langue de la session (ou langue de secours).
- Désambiguïsation : Utilise une clé composée de
codeet demessagepour distinguer les chaînes identiques utilisées dans différents contextes (par exemple, « ouvrir » en tant que verbe par rapport à un nom). - Paramètres nommés : permet l’interpolation dynamique de valeurs dans des modèles de message à l’aide d’espaces réservés nommés.
- Contrôle de la langue :
getMessageLangvous permet de spécifier une langue cible, utile pour des scénarios tels que les fusions de messages ou les notifications multilingues 2 3.
L’API de message est fournie avec le système de base standard dans l’espace de noms sn_i18n et ne nécessite aucun module d’extension ou rôle spécial pour y accéder. Avant d’appeler des méthodes dans cette classe, assurez-vous que les enregistrements de message [sys_ui_message] appropriés existent et qu’ils sont renseignés avec les champs de clé, de code et de langue correspondants.
Message : getMessage(Code de chaîne, Message de chaîne, Arguments de carte)
Récupère un message localisé à partir de la table Message [sys_ui_message] tout en permettant la levée de l’ambiguïté et l’insertion de contenu dynamique.
Les valeurs du args paramètre sont interpolées dans les littéraux de modèle correspondants dans la chaîne.
| Nom | Type | Description |
|---|---|---|
| code | Chaîne | Requis. Chaîne de 255 caractères maximum utilisée comme identificateur. code Peut être utilisé pour lever l’ambiguïté des messages avec un texte similaire mais des significations ou des contextes différents. La valeur recommandée est le nom du périmètre de l’application. Si une désambiguïsation supplémentaire est nécessaire, elle peut être augmentée. Par exemple, « ouvert » peut signifier un état ou une action, donc le paramètre aide à clarifier le code sens à utiliser. Si deux messages sont requis avec la même chaîne mais une casse différente, le script est le suivant : |
| message | Chaîne | Requis. Le message en anglais. Correspond au champ clé de la table Message [sys_ui_message]. Ce message est utilisé si aucune version localisée n’est trouvée pour la langue cible. |
| args | JSON | Facultatif. Carte de paramètres nommés utilisés pour insérer dynamiquement des valeurs dans le message. Les clés correspondent aux paramètres nommés dans le message. Les valeurs peuvent être des chaînes de caractères littéraux ou des variables/constantes dans le champ d’application. Par exemple, si votre message est |
| Type | Description |
|---|---|
| Chaîne |
Renvoie une valeur de la table Message [sys_ui_message] où :
Si aucune correspondance n’est trouvée, toutes les langues de secours sont vérifiées pour trouver une correspondance (voir Set a fallback language). Si aucune correspondance n’est trouvée, la valeur du message (2e paramètre) est renvoyée. Les paramètres nommés sont remplacés par les valeurs spécifiées dans la carte transmise dans le paramètre args. |
L’exemple suivant appelle la méthode getMessage() pour récupérer un enregistrement existant dans la table Message [sys_ui_message] en français, qui est la langue de la session utilisateur. Le bloc de code suivant contient le contenu du message.
<?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>
L’exemple exécute le script d’API avec une langue de session en français :
//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}));
La sortie contient le message en français :
//English: User Fred Luddy has been added as maint
L'utilisateur Fred Luddy a été ajouté en tant que maint
Utilisation de base sans paramètres nommés
// 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
Cet exemple augmente le code paramètre avec « satus.open » pour lever l’ambiguïté du message, et le message paramètre, "Open", comme solution de secours si aucune traduction n’est trouvée.
Utilisation de base avec paramètres nommés
// Retrieves a localized message with named parameters
var message = sn_i18n.Message.getMessage(
"scopeName” + "_greeting_personal",
"Hello, {name}! You have {count} new messages.",
{ name: "John", count: 5 }
);
gs.info(message);
Sortie :
"Hello, John! You have 5 new messages." (localized if available)
Cet exemple augmente le code paramètre avec « greeting_personal » pour distinguer cette salutation des autres, et message est un modèle avec des espaces réservés. args ({name : « John », count : 5}) remplit les espaces réservés.
Message : getMessageLang(Code de chaîne, Message de chaîne, Arguments de carte, Langage de chaîne)
Récupère un message localisé dans le message [sys_ui_message] dans la langue spécifiée, quelle que soit la langue de la session de l’utilisateur actuel.
Les valeurs du args paramètre sont interpolées dans les littéraux de modèle correspondants dans la chaîne.
- Remplacement de la langue de la session : utile pour envoyer des notifications, des e-mails ou des rapports dans une langue spécifique.
- Prise en charge multilingue : idéale pour les applications qui desservent des utilisateurs dans différentes régions.
- Test des traductions : aide les développeurs à prévisualiser la façon dont les messages apparaissent dans d’autres langues sans changer de paramètres utilisateur.
| Nom | Type | Description |
|---|---|---|
| code | Chaîne | Requis. Chaîne de 255 caractères maximum utilisée comme identificateur. code Peut être utilisé pour lever l’ambiguïté des messages avec un texte similaire mais des significations ou des contextes différents. La valeur recommandée est le nom du périmètre de l’application. Si une désambiguïsation supplémentaire est nécessaire, elle peut être augmentée. Par exemple, « ouvert » peut signifier un état ou une action, donc le paramètre aide à clarifier le code sens à utiliser. Si deux messages sont requis avec la même chaîne mais une casse différente, le script est le suivant : |
| message | Chaîne | Requis. Le message en anglais. Correspond au champ clé de la table Message [sys_ui_message]. Ce message est utilisé si aucune version localisée n’est trouvée pour la langue cible. |
| args | JSON | Facultatif. Carte de paramètres nommés utilisés pour insérer dynamiquement des valeurs dans le message. Les clés correspondent aux paramètres nommés dans le message. Les valeurs peuvent être des chaînes de caractères littéraux ou des variables/constantes dans le champ d’application. Par exemple, si votre message est |
| language | Chaîne | Requis. Langue dans laquelle renvoyer le message. Format : code de langue BCP-47 Par défaut : langue de la session |
| Type | Description |
|---|---|
| Chaîne |
Renvoie une valeur de la table Message [sys_ui_message] où :
Si aucune correspondance n’est trouvée, toutes les langues de secours sont vérifiées pour trouver une correspondance (voir Set a fallback language). Si aucune correspondance n’est trouvée, la valeur du message (2e paramètre) est renvoyée. Les paramètres nommés sont remplacés par les valeurs spécifiées dans la carte transmise dans le paramètre args. |
L’exemple suivant appelle la méthode getMessageLang() pour traduire un enregistrement existant dans la table Message [sys_ui_message] en japonais. Le bloc de code suivant contient le contenu du message.
<?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>
L’exemple exécute le script d’API avec une langue de session autre que le japonais :
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"));
La sortie contient le message en japonais :
Fred Luddy が maint として追加されました
Les exemples suivants utilisent des paramètres nommés ({username}, {role}) pour le contenu dynamique, spécifient une langue cible à l’aide de codes de langue ISO (« fr », « ja », « es ») et garantissent le retour au message par défaut si aucune traduction n’est trouvée.
Notification en français :
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)
Notification en japonais :
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)
Notification en espagnol :
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)