Could you not solve this by setting the language you wish for anonymous users to default and of all other users to whatever you wish to set it? You could add an after create for normal users and set their language to the default you currently use.
Yes, its possible! We had the same challenge in our project. Changing the language of the user is actually fairly easy (in a microflow simply retrieved the language you want from the database, and then assign it to the current user).
Next challenge is to refresh the client as the change will not directly be visible and you dont have direct control over this in a microflow. I think there are various ways possible:
We went for the second option and used deeplinks to redirect to the correct page.