Update language labels under Language Switch widget on the Service Portal
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-30-2023 05:01 AM
Hi everyone,
I have the language switch widget setup on my Service Portal, and as of now it displays "English" and "French - Canada". I would like to change "French - Canada" to simply "French".
I looked into the widget configurations to see if I could simply update that value from there, but no luck. I can see in the HTML body template that it's accessing the label of an item from a list, is there a way for me to access the values from that list and update it's label from there? :
I also looked into the messages table to see if I could find anything related to that widget, but couldn't find anything - Unless I wasn't using the proper filters?
Thanks,
Kev
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2024 05:54 AM
Did you have any luck with this? I am looking to update the language labels also.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2024 06:09 AM
Hi Richardsaun 🙂
I can't exactly remember if I found a solution for this.
In the end, we decided to create our own Language Switch widget. In the HTML, I'm checking if the user's language preference is English, if so, I know that as the Label I want to display "Français" otherwise I want to display "English".
<ul class="nav navbar-nav" role="menubar">
<li>
<a ng-if="data.userLanguagePref == 'en'" type="link" popover-trigger="outsideClick" role="menuitem" class="lang-page-link nav-item" ng-click='c.changeUserLanguage("fq")'>
<i class="fa fa-globe"></i>
<span class="nav-link">Français</span>
</a>
<a ng-if="data.userLanguagePref == 'fq'" type="link" popover-trigger="outsideClick" role="menuitem" class="lang-page-link nav-item" ng-click='c.changeUserLanguage("en")'>
<i class="fa fa-globe"></i>
<span class="nav-link" >English</span>
</a>
</li>
</ul>
Server Script :
(function() {
//Determine which langugae the user currently has selected.
data.userLanguagePref = gs.getSession().getLanguage();
if(input){
var thisUser = new GlideRecord('sys_user');
thisUser.get(gs.getUserID());
thisUser.preferred_language = input.input;
console.log(thisUser.preferred_language);
thisUser.update();
return;
}
})();Client Controller :
api.controller=function($scope, $window) {
var c = this;
//Send the language to set to the server
c.changeUserLanguage = function(lang) {
c.server.get({input:lang}).then(function() {
$window.location.reload();
});
};
};
Then go to your header by navigating to All > Service Portal > Headers & Footers and be sure that the following line of code is present in the Server Script of the current header :
// sp-lang-selector
data.langSelector = $sp.getWidget('Widget-id');
That fixed our problem of not being able to update the labels at the same time and now instead of clicking and having a dropdown, if you click "Français", it will switch to French and will be displaying "English" now
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-25-2024 05:26 AM
Fantastic, thank you!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-25-2024 05:38 AM
My pleasure! 🙂