Hello everyone,
I've done some investigations. The conclusions and the solutions are as follows.
The issue is, that in the Reactive Model the locale, set by the server SetCurrentLocale action, is persistent only within the same server call. Thus the following will not work:

The locale, set by SetLanguage (that calls the server SetCurrentLocale action; this action cannot be called directly from Client / Screen action) will not be visible in the next called AnyServerAction.
And the locale, set client side (e.g. by the client SetCurrentLocale action) is not reflected on the server side:

So, the current locale must be passed directly to the server action. This action can persist it using the server SetCurrentLocale that will change the locale that will be possible to read using the server GetCurrentLocale - but still only within this particular server call.
When we cannot add a parameter to the AnyServerAction, we must create a wrapper: a server action that gets the same parameters as AnyServerAction + Locale, sets the locale and calls AnyServerAction.
In a Screen Action we can pass locale directly using the client GetCurrentLocale action. In the cases when we cannot call the client GetCurrentLocale (e.g. in an aggregate or a Data Action) we must:
- create a screen / block local variable (e.g. Locale)
- initialize it in OnInitialize (using the client GetCurrentLocale)
- use this variable instead of calling client GetCurrentLocale
Regards
Tomasz