Internationalize a widget

  • Release version: Zurich
  • Updated July 31, 2025
  • 1 minute to read
  • Use the ${} or gs.getMessage() syntax in the HTML Template, Client Script, or Server Script fields of a widget to tag strings for translation so you can localize your Service Portal content.

    The ${} or gs.getMessage() searches in the messages table [sys_ui_message] in the platform to see what the translation would be.

    Use the HTML template to internationalize strings in a widget. Type the following in an HTML template.

    <div>
      <p>${This message will be internationalized.}</p>
      <p>However, this will NOT be.</p>
    </div>

    Writing text as ${message} is the equivalent of writing ${gs.getMessage("message")} in other parts of the system, but written as a more legible shorthand.

    Note:
    In some cases, the translation might have quotes or double quotes on it. That could lead to JavaScript errors if you are using the ${} syntax in the client script. The safest way to fetch a translated message is to do it in the server script. Then, assign the value to a client-side Angular binding.

    Translating strings in the client script

    function() {
      var c =this;
      c.message="${This message will be internationalized}";
    }
    HTML template:
    <div>
      <!-- The output of this text will be internationalized. -->
      <p>{{c.message}}</p>
    </div>

    Translating strings in the server script

    Use the server script to translate schema options and other values during server-side runtime.

    Server script
    function() {  
      data.message=gs.getMessage("this message contains 'quotes'");
      //You can also translate schema options using the server script
      //For example, data.message=gs.getMessage(options.title);
    }
    HTML template
    <div>  
      <p>{{c.data.message}}</p>
    </div>