The correct solution (as with languages on websites) is to auto-detect but then make it super easy and obvious how to change if the auto detected version is not what the user wants.
Also if any web developers out there are reading - don’t use the user’s location to determine the language/region they want, and especially don’t force it. I have no idea why so many websites do this but those responsible deserve to permanently have small amounts of sand in all their socks.
Yeah, I’m saying they shouldn’t, but plenty of them do. They use geoip or location services to work out where you are and then use that to send you to the local site or the site in the language that they feel is appropriate for that location.
If you’re really lucky they then make it difficult (and sometimes practically impossible) to switch.
Besides the problem you’ve highlighted for countries with multiple languages, you also have immigrants, people on holiday, multilingual people, VPN users… And it’s not great for your SEO either.