Outsystems don't preserve, by now, session variables in server side, when you call from mobile apps, between calls.
This is how it works, and it is "reasonable", but it does preserve some data such as UserId or TenantId (when you do a SwitchTenant) between mobile calls to a server actions for the correct behavior of platform.
The problem:
If you have a multilingual mobile app, the translations in client side can be resolved with: “Multilingual Mobile Component”.
But when you have core modules, with server static tables, server process, server sends emails, etc... What's up with the locale?
Currently, the locale, in each call from mobile call is set in the platform default local (for example, en-US). If the user want to retrieve the translation of static tables in his language (for example French), or send emails using the translation resources in french, need to set the locale all the time en each server action that is called by a mobile app.
This is also a problem, when you use an aggregate in movile app in screen, and join with an static table, because you can not set locale in server side before aggregate execute, and locale translations allways are retrived in default Platform language.
Example:
I attach a solution with a mobile app and a core services with an static tables of colors, translated with resources in French, Spanish, and English.
We have two server actions, one that returns colors, and the other one that setlocale to french and return colors...
![]()
We have a mobile app with two buttons, Button "getcolors", that returns the colors without set locale. If you click first, the colors are returned in US (the default locale of platform), and are printed.
If you click the second button, locale is setting in french and colors returned in french.
If you click second button (and locale is setted), and after you click first button, colors should be returned in french (as the web applications do). But you can see that are returned in english, so locale don't persist between server calls...
![]()
The second part of mobile screen calle "colors from agregate", is performing an aggregate agains static server table, and, as you can see, retrieves the result in default locale (en-US).
This has been explain into support case 2233103, and, we have confirm with Outsystems that there is no workarround once time only, you need to set locale each time you call to a server action.
Solution:
If you set locale with SetCurrentLocale action in server side, it sounds reasonable that the following calls from this user to servers actions (in that session) you want to use the same language (at least until you make another SetCurrentLocale), so Locale should be also persisted in server side (like tenantId or UserId), between movile calls.