We detect based on the browser information, then fall back to the site default. You can allow guests to change their language, however a CSRF key is used on the form for security, which you would need to use in your URL (i.e. you can't just use a generic URL, it would need to be crafted specifically for each visitor based on their session data). Alternatively, if you can set a cookie on your end, for guests the language is tracked very simply via a cookie which you could in theory manually set yourself.