Mensagem - Global

  • Versão de lançamento: Zurich
  • Atualizado 7 de ago. de 2025
  • 8 min. de leitura
  • . Mensagem A API do servidor permite recuperar mensagens localizadas da tabela Mensagem [sys_ui_message] para uma entrada com código igual ao parâmetro de código, chave igual ao parâmetro de mensagem e idioma igual ao idioma da sessão (ou idioma de fallback).

    . Mensagem A API oferece suporte à internacionalização (i18n) buscando mensagens dinamicamente com base no idioma da sessão do usuário ou em um parâmetro de idioma especificado. Esta API oferece três recursos principais:
    • Desambiguação: Usa uma chave composta de código e. mensagem distinguir entre cadeias de caracteres idênticas usadas em diferentes contextos (por exemplo, "abrir" como verbo versus substantivo).
    • Parâmetros nomeados: Permite a interpolação dinâmica de valores em modelos de mensagem usando espaços reservados nomeados.
    • Controle de idioma: GetMessageLang permite especificar um idioma de destino, útil para cenários como malas diretas ou notificações multilíngues 2 3.

    . Mensagem A API é fornecida com o sistema de base padrão no sn_i18n namespace e não requer plug-ins ou funções especiais para acessá-lo. Antes de chamar qualquer método nesta classe, certifique-se de que os registros apropriados de Mensagem [sys_ui_message] existam e sejam preenchidos com correspondência chave e. código campos.

    Message.getMessage (Código de cadeia de caracteres, mensagem de cadeia de caracteres, mapear argumentos)

    Recupera uma mensagem localizada da tabela Mensagem [sys_ui_message], permitindo desambiguação e inserção de conteúdo dinâmico.

    A API oferece suporte a comentários em linha para tradutores, melhorando a clareza e reduzindo a ambiguidade em contextos multilíngues. Os comentários não são usados no campo chave da Mensagem [sys_ui_message], mas a cadeia de caracteres comentada pode ser adicionada ao campo "comented_message". Os valores do parâmetro args são interpolados nos literais de modelo correspondentes na cadeia de caracteres.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    código Cadeia de caracteres Obrigatório. Uma chave de desambiguação para distinguir mensagens com texto semelhante, mas significados ou contextos diferentes. Um nome de escopo pode ser usado se a cadeia de caracteres for exclusiva no escopo. Se for necessária desambiguação adicional, então ela pode ser aumentada.

    Por exemplo, "Aberto" pode significar um status ou uma ação, e o parâmetro de código ajuda a esclarecer qual. Se exigirmos 2 mensagens com a mesma cadeia de caracteres, mas maiúsculas diferentes, o script será o seguinte:

    sn_i18n.Message.getMessage("scopeName-open-capitalized", "Open");
    sn_i18n.Message.getMessage("scopeName-open", "open");
    mensagem Cadeia de caracteres Opcional. A cadeia de caracteres de mensagem padrão a ser usada se nenhuma versão localizada for encontrada. Corresponde a chave Na tabela Mensagem [sys_ui_message].
    args JSON Opcional. Um mapa de parâmetros nomeados usados para inserir valores dinamicamente na mensagem. As chaves correspondem aos Parâmetros Nomeados na mensagem. Os valores podem ser literais de cadeia de caracteres ou variáveis/constantes que estão no escopo.

    Por exemplo, se sua mensagem for "Olá, João!", você poderá passar "name: "João" para renderizar "Olá, João!".

    Tabela 2. Retornos
    Tipo Descrição
    Cadeia de caracteres
    Retorna um valor da tabela Mensagem [sys_ui_message] em que:
    • Os primeiros 255 caracteres do parâmetro de mensagem correspondem ao campo chave.
    • Os primeiros 255 caracteres do parâmetro de código correspondem ao campo de código.
    • O campo de idioma (ou o idioma da sessão se nenhum campo de idioma for especificado) corresponde ao campo de idioma.

    Se nenhuma correspondência for encontrada, todos os idiomas de fallback serão verificados quanto a uma correspondência (consulte Set a fallback language). Se uma correspondência ainda não for encontrada, o valor da mensagem (segundo parâmetro) será retornado e será removido dos comentários.

    Os parâmetros nomeados são substituídos pelos valores especificados no mapa passado no parâmetro args.

    O exemplo a seguir chama o método getMessage() para desambiguar um registro existente na tabela Mensagem [sys_ui_message] em francês, que é o idioma da sessão do usuário. O bloco de código a seguir contém o conteúdo da mensagem.

    <?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>

    O exemplo executa o script de API com um idioma de sessão francês:

    //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}));

    A saída contém a mensagem em francês:

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

    Uso básico sem parâmetros nomeados

    // 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

    Este exemplo usa code( "satus.open" ) para desambiguar a mensagem, e. message( "Open") como fallback se nenhuma tradução for encontrada.

    Uso básico com parâmetros nomeados

    
    / 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)

    Este exemplo usa code( "greeting.personal" distingue esta saudação de outras, e. messageé um modelo com espaços reservados. args( (Nome: "John", contagem: 5) preenche os espaços reservados.

    Message.getMessageLang(Código de cadeia de caracteres, mensagem de cadeia de caracteres, argumentos de mapa, idioma de cadeia de caracteres)

    Recupera uma mensagem localizada na Mensagem [sys_ui_message] em um determinado idioma, independentemente do idioma da sessão do usuário atual.

    A API oferece suporte a comentários em linha para tradutores, melhorando a clareza e reduzindo a ambiguidade em contextos multilíngues. Os comentários não são usados no campo chave da Mensagem [sys_ui_message], mas a cadeia de caracteres comentada pode ser adicionada ao campo "comented_message". Os valores do parâmetro args são interpolados nos literais de modelo correspondentes na cadeia de caracteres.

    GetMessageLang() é útil para:
    • Substituição do idioma da sessão: Útil para enviar notificações, e-mails ou relatórios em um idioma específico.
    • Suporte multilíngue: Ideal para aplicações que atendem usuários em diferentes regiões.
    • Testar traduções: Ajuda os desenvolvedores a visualizar como as mensagens aparecem em outros idiomas sem alternar as configurações do usuário.
    Tabela 3. Parâmetros
    Nome Tipo Descrição
    código Cadeia de caracteres Obrigatório. Uma chave de desambiguação para distinguir mensagens com texto semelhante, mas significados ou contextos diferentes. Um nome de escopo pode ser usado se a cadeia de caracteres for exclusiva no escopo. Se for necessária desambiguação adicional, então ela pode ser aumentada.

    Por exemplo, "Aberto" pode significar um status ou uma ação, e o parâmetro de código ajuda a esclarecer qual. Se exigirmos 2 mensagens com a mesma cadeia de caracteres, mas maiúsculas diferentes, o script será o seguinte:

    sn_i18n.Message.getMessage("scopeName-open-capitalized", "Open");
    sn_i18n.Message.getMessage("scopeName-open", "open");
    mensagem Cadeia de caracteres Opcional. A cadeia de caracteres de mensagem padrão a ser usada se nenhuma versão localizada for encontrada. Corresponde a chave Na tabela Mensagem [sys_ui_message].
    args JSON Opcional. Um mapa de parâmetros nomeados usados para inserir valores dinamicamente na mensagem. As chaves correspondem aos Parâmetros Nomeados na mensagem. Os valores podem ser literais de cadeia de caracteres ou variáveis/constantes que estão no escopo.

    Por exemplo, se sua mensagem for "Olá, João!", você poderá passar "name: "João" para renderizar "Olá, João!".

    idioma Cadeia de caracteres Opcional. Idioma para retornar a mensagem.

    Formato: Código do idioma BCP-47

    Padrão: Idioma da sessão

    Tabela 4. Retornos
    Tipo Descrição
    Cadeia de caracteres
    Retorna um valor da tabela Mensagem [sys_ui_message] em que:
    • Os primeiros 255 caracteres do parâmetro de mensagem correspondem ao campo chave.
    • Os primeiros 255 caracteres do parâmetro de código correspondem ao campo de código.
    • O campo de idioma (ou o idioma da sessão se nenhum campo de idioma for especificado) corresponde ao campo de idioma.

    Se nenhuma correspondência for encontrada, todos os idiomas de fallback serão verificados quanto a uma correspondência (consulte Set a fallback language). Se uma correspondência ainda não for encontrada, o valor da mensagem (segundo parâmetro) será retornado e será removido dos comentários.

    Os parâmetros nomeados são substituídos pelos valores especificados no mapa passado no parâmetro args.

    O exemplo a seguir chama o método getMessageLang() para traduzir um registro existente na tabela Mensagem [sys_ui_message] para o japonês. O bloco de código a seguir contém o conteúdo da mensagem.

    <?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>

    O exemplo executa o script de API com um idioma de sessão diferente do japonês:

    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"));

    A saída contém a mensagem em japonês:

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

    Os exemplos a seguir usam parâmetros nomeados ("username", "role") para conteúdo dinâmico, especificam um idioma de destino usando códigos de idioma ISO ("fr", "ja", "es") e garantem fallback para a mensagem padrão se nenhuma tradução for encontrada.

    Notificação em francês:

    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)

    Notificação em japonês:

    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)

    Notificação em espanhol:

    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)