Language translation in notification subject line that will also include a variable from the ticket.

mburick
Mega Contributor

I have a requirement to translate notifications.

I started with OTB notification called 'INC - Assigned to Me'.

I've been successful in translating the body of the notification using GlideRecords on the sys_user_perferences and sys_ui_messages.

I am having difficultly doing the same for the Subject field. The Subject field appears to be a plain text so whatever message is in the sys_ui_message, is displaying in the notification.

For example, this is what appears in the subject:

English:

You have been assigned Incident ${number}

Japanese 

貴職がインシデントチケット: ${number} の担当者に割り当てられました

 

My notification calls a notification mail script for the subject:

${mail_script:INC - Assigned to Me-Subject}

Here is ${mail_script:INC - Assigned to Me-Subject} script:

(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */ event) {

// Add your code here
var language;
var grPref = new GlideRecord('sys_user_preference');
grPref.addQuery('user', current.assigned_to);
grPref.addQuery('name', 'user.language');
grPref.query();
gs.log("MRB subject");
if(grPref.next()) {
language = grPref.value;
gs.log("MRB language subject: " + language);
}

if (language == 'en' || !language)
langValue = "en";
else if (language == 'ja')
langValue = "ja";
gs.log("MRB langValue subject: " + langValue);

var gr = new GlideRecord('sys_ui_message');
gr.addQuery('key', 'INC - Assigned to Me-Subject');
gr.addQuery('language', langValue);
gr.query();
gs.log("MRB before next subject subject");

if(gr.next()) {
var message = gr.message;
gs.log("MRB message subject: " + message); //Output in whichever way you need.
email.setSubject(message);

}
})(current, template, email, email_action, event);

 

Coding gs.getMessage("xxx") in the Subject field of the notification will pull in the message from sys_ui_message but it doesn't convert ${number} to the ticket number. ${gs.getMessage("xxx")} leaves the subject blank.

 

Any suggestion appreciated.

Marc

1 ACCEPTED SOLUTION

Ashutosh Munot1
Kilo Patron

HI,

You will have to create email in different language's and trigger them based on user language.

Thanks,
Ashutosh

View solution in original post

1 REPLY 1

Ashutosh Munot1
Kilo Patron

HI,

You will have to create email in different language's and trigger them based on user language.

Thanks,
Ashutosh