how to get browser language via script include or function call
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2023 12:09 AM
gs.getSession().getLanguage() will retrieve current session pre-defined language but I want to get browser langugage/language code as kind of backup.
navigator.language || navigator.userLanguage seems like not working since it will show error of navigator is not defined.
also tried to create a new class of script include, but seems like not working either as following:
var BrowserLocaleUtil = Class.create();
BrowserLocaleUtil.prototype = {
initialize: function() {},
getBrowserLocale: function(request) {
var acceptLanguage = request.getHeader('Accept-Language');
if (acceptLanguage) {
var languageTag = acceptLanguage.split(',')[0];
return languageTag;
} else {
return 'en';
}
},
type: 'BrowserLocaleUtil'
};
and call in other script
var browserLocaleUtil = new BrowserLocaleUtil();
var browserLocale = browserLocaleUtil.getBrowserLocale(current.request);
Please help any JavaScript functions to retrieve the browser language code since there is potential missing from either service now user table or current session language set.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2023 11:29 AM
In the code above request is not defined.
Use GlideTransaction.get().getRequest() in place of request.
Also I would change acceptLanguage.split(',')[0] into acceptLanguage.split(',').shift().
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2023 11:30 AM
Just wanted to add that this will only work in global scope - so make sure the Script Include is defined in global scope and is marked as accessible from all scopes.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2023 02:26 PM
Hi -O-,
Thank you so much for your details.
Everything works fine in background script, I can get locale using the following:
var acceptLanguage = GlideTransaction.get().getRequest().getHeader('Accept-Language');
var locale = acceptLanguage.split(',').shift();
gs.info(acceptLanguage);
=>
*** Script: en-US,en;q=0.9
But after I created global script include as following:
and call it in my application script include via:
var browserUtils = new global.BrowserUtils();
var expectedLocale = browserUtils.getBrowserLocale();
It shows error:
*** Script: Falied to get browser locale {"message":"Cannot convert null to an object.","rhinoException":{}}: no thrown error
Thanks in advance for your help!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2023 02:41 PM
Hi -O-,
Thank you so much for your details.
Everything works fine in background script, I can get locale using the following:
var acceptLanguage = GlideTransaction.get().getRequest().getHeader('Accept-Language');
var locale = acceptLanguage.split(',').shift();
gs.info(acceptLanguage);
=>
*** Script: en-US,en;q=0.9
But after I created global script include (plz refer to the attached screenshot).
and call it in my application script include via:
var browserUtils = new global.BrowserUtils();
var expectedLocale = browserUtils.getBrowserLocale();
It shows error:
*** Script: Falied to get browser locale {"message":"Cannot convert null to an object.","rhinoException":{}}: no thrown error
Thanks in advance for your help!