- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hi, I want to translate the email content automatically based on incident caller language.
below approach i followed.
I created a sys_ui_message and i have called message in email script, then i have added the mail script in notification body.
for e.g: sys_ui_message:
key- email.greeting
message - hi - in english
Buongiorno - in italian
similarly i created all messges, below is the email script i called.
but when i raise incident with caller language as italian language, the notification content showing still in english instead of Italian content.
can anyone help..
Thanks for your feedback.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 weeks ago
preferred_language is a string not a reference record
You can just get the string value
if (caller.preferred_language) {
/*var langRec = caller.preferred_language.getRefRecord();
if (langRec.isValidRecord() && langRec.code) {
lang = langRec.code.toString();*/
lang = caller.getValue("preferred_language")
}And because you don't pass a lang argument in your msg function call your local scope shadows the global lang variable and will be undefined:
function msg(key, /*lang,*/ params) {
return gs.getMessageLang(key, lang, params || []);
}
You could also include the html tags in the ui message and include styling in the notification/layout itself. However, working example below:
(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */ event) {
var caller = current.caller_id.getRefRecord();
var lang = caller.getValue("preferred_language");
var callerName = caller.getDisplayValue();
function msg(key, params) {
return gs.getMessageLang(key, lang, params || []);
}
var baseStyle = 'font-family:Arial; font-size:18px;';
var headingStyle = 'font-family:Arial; font-size:22px; font-weight:bold; text-align:center';
// :small_blue_diamond: Main heading
template.print('<p style="' + headingStyle + '">' + msg('incident.recorded') + '</p>');
template.print('_________________________________________________________________________________________');
// :small_blue_diamond: Greeting
template.print('<p style="' + baseStyle + '">' + msg('email.greeting', current.caller_id.getDisplayValue()) + '</p>');
// :small_blue_diamond: Intro
template.print('<p style="' + baseStyle + '">' + msg('incident.details.intro') + '</p>');
// :small_blue_diamond: Bullet points
template.print(
'<ul style="' + baseStyle + ' list-style-type:disc; padding-left:20px;">'
);
template.print('<li><b>' + msg('incident.number') + ':</b> ' + current.number + '</li>');
template.print('<li><b>' + msg('incident.created') + ':</b> ' + current.sys_created_on.getDisplayValue() + '</li>');
template.print('<li><b>' + msg('incident.caller') + ':</b> ' + callerName + '</li>');
template.print('<li><b>' + msg('incident.shortdesc') + ':</b> ' + current.short_description + '</li>');
template.print('</ul>');
// :small_blue_diamond: Incident link
var url = gs.getProperty('glide.servlet.uri') + current.getLink();
template.print(
'<p style="' + baseStyle + '"><a href="' + url + '">' +
msg('incident.link') +
'</a></p>'
);
})(current, template, email, email_action, event);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hello @soumya17 ,
Does you have checked the languages available in 'sys_ui_message' table language field and also User record language field,
As I noticed that oob on Message(sys_ui_message) table there is only one Language Present,
also on User Record there is only one Language i.e English,
If my response helped mark as helpful and accept the solution..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
The notification preview should be in below format. and should change language according to the caller.
Can someone guide me.. am i following the right approach?
- NumƩro de dossier : ${task_effective_number}
- Date de crĆ©ationāÆ: ${sys_created_on}
- BĆ©nĆ©ficiaireāÆ: ${caller_id.name}
- Description brĆØve : ${short_description}
${mail_script:incident_take_me_to_the_incident_redirect_FR}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
try this
(function runMailScript(current, template, email, email_action, event) {
var lang = 'en'; // Default
if (current.caller_id) {
var caller = current.caller_id.getRefRecord();
if (caller.isValidRecord() && caller.preferred_language) {
var langRec = caller.preferred_language.getRefRecord();
if (langRec.isValidRecord() && langRec.code) {
lang = langRec.code.toString();
}
}
}
// Define msg function
function msg(key, lang) { // Remove lang param; use session or getMessageLang(lang)
return gs.getMessageLang(key, lang);
}
// Rest of script unchanged...
template.print('<p style="' + baseStyle + '">' + msg('email.greeting', lang) + '</p>'); // Pass params as array
})(current, template, email, email_action, event);
š” If my response helped, please mark it as correct ā and close the thread šā this helps future readers find the solution faster! š
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader
