When we’re working on a multi language application, we need to be aware of the user’s language ensure they receive content in their own language.
Mendix has great language support, and it also has great caching on the client side. These can cause problems together when you change the language of a user in your application, it may not always be reflected back to local cache.
There is a way around this, we can use the Mendix Client API to force a retrieve of the data from the application. We need to use an XPath request to ensure we bypass the cache.
let xPath = "//System.Language[System.User_Language=\"" + mx.session.getUserId() + "\"]";
We have the current user’s session ID, so we can retrieve the System.Language using this a constraint on the System.User_Language association.
Now we can just use an mx.data.get call to retrieve it.
mx.data.get({
xpath: xPath,
filter: {
amount: 1
},
callback: function(obj) {
let lang = obj[0].jsonData.attributes.Code.value;
console.log("Current language is " + lang);
}
});
In this example, we are just echoing the language code back to the user on the console.