I have the exact same issue. My user interface is define at first by the browser language of my user, but once connected it fallback to the default discourse language. I just look at the code, and I’m now sure we can solve this with a plugin. Maybe we could implement this in the core. Seems some line of code into
would do the trick. Can you be interested in a PR for this? The PR would be “Allow to set user locale through SSO”