Currently, the language the user is seeing seems to be defined only by the url of the page. If the user goes back to the main page, they will see the default language. If they follow a link from an external page, they will go to the language of that link.
I suggest two improvements:
On first visit, forward the user to the language they have set as preferred in their browser settings, and store it in session.
On second visit, forward to the language stored in session.
(only for enabled languages in the KB, and when the user changes the language manually, it should be updated in session)
Thanks!