- 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
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
2 weeks ago
Hello @lauri457 ,
Thanks for your message. Its working, and i am testing few more scenarios.
thankyou for your help once again.
