Why geolocation based settings are bad

8 points by de6u99er ↗ HN
As an expat I find it extremely annoying that many websites automatically determine someone's language based on their current geolocation. This is even more annoying for tourists who are very quickly overwhelmed when looking for quick answers in stressful situations and even the search provider (e.g. Google) starts in the geolocation based language.

Just imagine travelling to Japan, having to look up some details about your trip, Google shows up in Japanese language. If you're lucky your phone has a translation service that can automatically translate websites. Or the website allows you to switch the language somewhere and you're able to identify the switch. Most websites have this switch at the bottom of the website. But some websites automatically load more content when reaching the end of the list which makes the language dropdown disappear while you're trying to switch the language.

Looking at most (99%) multi-language implementations, I am getting the impression that language detection and selection is implemented by developers who have never traveled to a foreign country. Therefore I'd like to appeal to everybody doing i18n to respect web-standards and use primarily the Accept-Language headers. Or at least make switching the preferred language easier.

P.S.: Sorry for typos (Android keyboard) and grammatical errors. Native German speaker here.

6 comments

[ 2.9 ms ] story [ 24.8 ms ] thread
Fully agree with your sentiment. As someone who spends significant time in four different countries, it gets pretty old quickly.

Google is the most annoying one because the change language setting is not easily findable and typically at the bottom of endless scrolling page. Slack is the worst one, you can't even find the change language option. The best is Apple implementation where it maintains the language but shows a little notification in browser offering you to change location and/or language. Amazon also does pretty decent job.

Twitter and Yahoo! News are also pretty bad. Yahoo! News will start showing the news from the location it last detects and continues to show even after you have left the location and haven't been back at same locations for years. Twitter email is nuisance in itself, and sets up alert for something specific at a location you haven't been back or have any further interest.

Totally agree, that google is the most annoying. Recently I realized that the news tab in my TV's YouTube application started to show news in local language. I remember I was able to override the location setting only to realize that the setting still exists but now get's automatically reset by the YouTube application on every start, which makes this setting completely useless. Almost as if the person who is responsible for this setting doesn't talk to the person who does geolocation stuff.
The best rule is that location != language.

Just like in UX a flag != language.

Sites should honor the 'accept-language' header with the one exemption below.

In various regions users do have their devices set to some version of English (localization not be available in their language or of poor quality etc.) so 'accept-language' will likely be set to English. In those cases (likely language for country != English), I think it's fine to _ask_ if they want to change to the expected local language.

But in the end, if a users selects a language preference at any time, it should be saved to localStorage or in a cookie and respected even if other conditions change.

Totally agree.

I'd like to add that with GDPR this could even have legal implications, when displaying the consent dialogue in a language the user doesn't understand.

You are correct those are some reasons why geolocation based settings are bad. I think that the Accept-Language header should be used to select which of multiple languages to use. It is OK for the site to include overriding functions though, including URLs and cookies, in case the Accept-Language header is wrong or if you want to link to a specific language for some reason.