Hacker News new | past | comments | ask | show | jobs | submit login
Don't set the language of your website based on user location (dev.to)
594 points by pedrogpimenta on May 17, 2020 | hide | past | favorite | 293 comments



Microsoft is doing this as well. I google something in english, find an english MSDN entry with english title and preview, but when I click on the link, the language changes to German. I'm a native German speaker but having read about technical topics almost exclusively in english for years, I'm just much more comfortable in english now.

What makes it even worse is that often it's not properly translated, but just Microsoft's translation machine applied to the English version. The result isn't very good. And even if it were manually translated, the result would likely end up a mixture of english and German. German is a very nice language, as is english, but what I absolutely hate is the mix of the two, also called denglisch.


Somewhat related to technical documentation, error messages translated in the user's locale are a bane in particular.

Sometimes when not working on my own machines at a client the locale is set to a language other than English and some Java frameworks such as Hibernate then will dutifully print out error messages in that language.

This is next to useless. At a time when you still had nothing but a printed manual in your local language to go on this might have made some sense but nowadays people research error messages on the internet. Searching for some arcane ORM framework error message in a language other than English is a futile endeavour.


Oracle does this too. The best part is that this is all set during installation, there's no way to change it afterwards.

It's really great trying to figure out an error that's written in Norwegian, when you're not the least bit familiar in that language.

Most of the errors do have codes though, and just Googling that will get you started at least.


You can install a new language easily by using the -addLangs parameter of the installer (on an existing install) or by copying the msg/msb files from another install (matching versions). After that you have to change the NLS settings of the DB and it will switch to the new language.


Sounds as easy as hitting yourself with a medium sized hammer :)


That's not entirely true. You can "change" the charset from 1 type to another... The problem with that is fields may extend past the max length of that field when converting from 1 to the other.

Source: me. I had to help someone with specifically this when they set the wrong charset on their DB. Had these problems.


The most fun I had was investigating some bug reports with .NET Exceptions in Japanese. Thankfully, there was enough of context in the rest of the logs to get to the bottom of things, but having to rely on machine translations for debugging would have been... fun.


Some programs work around this by prepending a global error ID to the localized, such as "E300: Ascorbic Acid Error", but this is harder to manage on the development side.


spaCy doesn't localize errors, but it does do a beautiful job of managing that kind of error codes.

https://github.com/explosion/spaCy/blob/master/spacy/errors....


> error messages translated in the user's locale are a bane in particular.

Ah, I remember MS Combat Flight Simulator 2. Translated to Spanish (or maybe automatically using local system files?) without bothering the check the text fit the allotted fields, which meant you could not read most things at all. Impressive QA, Microsoft! ;)


Their automated translation also affects language keyword and error codes. It renders the page unusable. The option to change the language is hard to find and the selected language is not stored.

Some people have worked very hard to make their doc as painful as possible.


One day I was visiting Austria when I used my mobile browser to find something on Google. The results came back in German.

Ok fine whatever, don’t really speak German but did enough in high school to muddle through. Proba localization, will turn back when I go home.

2 years later and Google on my phone remains German. This is my life now ... at least I get to practice a little german I guess



Not a language, but hotels.com was quoting me prices to North American hotels in Rupias months after my visit to India.


Same for Tripadvisor after being in Mexico - all Hotel prices have been in Pesos for a while (had to manually change it back)


Uber is convinced I live in Brazil and speak Portuguese now.


Slightly orthogonal: live in France, bought a new phone just before travelling. The first SIM card I put in it was a temporary travel card bought upon arrival.

Now Google Maps shows me prices of hotels in Uzbekistani soms. Didn't find a way to reset it in the UI, clearing GMaps cache didn't help either. It's been a year already.


Having integrated with that API before, I would be totally unsurprised to find the whole system was a complete mess.


I have some websites assuming I'm Russian still, after a year in Latvia (why not Latvian? Who knows.), and even when upgrading my iPhone, everything would default to Spanish.

I distinctly remember updating my address and location each time, but it never made a difference.

Now I just find it a little amusing. Keeps my Russian and Spanish fresh.


I have some websites assuming I'm Russian still, after a year in Latvia, and even when upgrading my iPhone, everything would default to Spanish.

I distinctly remember updating my address and location each time, but it never made a difference.

Now I just find it a little amusing. Keeps my Russian and Spanish fresh.


You didn't try deleting cookies, or finding the preferences page, or Googling "phone browser stuck in German"?

Don't get me wrong, I've had my moments where I've done similar things for years. I just have to say it's a little funny.


I’m an European guy living in Japan that browse tech documentation in English. I’ve the same issue than you, sometimes MSDN or MDN pages are returned in French (all my devices UI are in English, with French locale). If it were good French, why not, but it’s crappy MT instead. Have so respect for the user please. Sometimes I got Japanese thrown at me, depending on which network I’m connected.

Finally I sometimes perform search in other languages, for instance Chinese. Of course I got results mostly in Japanese from Google... few years ago it was possible to change the language for a query, now the settings in burried under dozen of clicks, and are link to my profile. So basically unusable.

In a way it’s like the OS desktop UX: developers are busy trying to outsmart the user, yet the end result is more painful to use and less customizable than it was a decade ago.


I always use '&hl=en' parameter for changing Google search language.


There's a Firefox extension [1] to automatically change the language for MSDN (Microsoft) and MDN (Mozilla). I've extracted this functionality into a userscript [2].

[1] https://addons.mozilla.org/en-US/firefox/addon/english-conte...

[2] https://github.com/darekkay/config-files/blob/master/userscr...


Ahh, Microsoft.

They used to localise VBA too, all IFs and THENs and WHILEs were translated to the local language. Yes it was as bad as you think it was.

You could somehow run VBA macros written in the wrong language, you couldn't just touch them or it'd be all syntax errors everywhere.


Excel still has localized syntax, I think.


Are you following an Excel guide that's written in English but can't use the formulas because your own computer is set to use some other language? Or did you inherit some Excel sheets to maintain that are not written in English? No problem! Just install Excel Functions Translator [1] and say Auf Wiedersehen to all you localization worries!

/s

[1]: https://support.office.com/en-us/article/excel-functions-tra...


There is an Excel "German" dictionary (probably others too), but when you Google "Excel German dictionary" Google shows "übertreffen". Which is the German word for "to excel"...


It's not only names that are localized, but also file formats. If you export a CSV in an English speaking locale, you won't be able to use it in a Latin one.


CSV is not so much localized as underspecified.


that’s because you should be choosing UTF-8 as the export encoding. Don’t depend on default.


The comma is used as a decimal separator in many countries which makes it impossible to use csv files without special import rules; nothing to do with using utf-8.


At one point Windows 10 used to use your keyboard layout to choose your local language. So as an Aussie I was stuck choosing between spellcheck telling me 'colour' and 'flavour' were wrong, or having to deal with a UK keyboard layout. It seems fixed now but it was really annoying.


I'm in the exact same situation, well, except for that time when for some unfathomable reason Google insisted, for weeks, to deliver what I believe is Lithuanian to my home browser.

Before the great Firefox extension purge I was sending out different language preference headers depending on domain. Unfortunately, this trick was already breaking down as more and more German companies redirect from their .de to their .com to show off ambition, leaving me with a bad English translation of the massive German due to headers.

What I'd love to see would be a server side distinction between primary and secondary languages, but of course companies would lie their asses off for uncountable reasons bad and worse.


For me it is even worse. I‘m Swiss-German, my name is french and have all my software set to english for consistency.

Some sites (and ads) don’t respect my settings and will default to french. My french is rudimentary at best.


I am even "less default" than that, expecting the dates to be formatted the way I've defined them in the system setting (it can be set separately from the language), and some programs ignore that too.


Even worse, when I was studying abroad in Germany I'd get the Microsoft English-translated-to-German page and then Chrome, which I had originally installed in the US and configured for US English, would "helpfully" translate the German back to English.

I can read English and usually German, but I definitely can't read technical documents that have passed through a machine translator twice.


Microsoft seem to be particularly rubbish at this. For example, the Microsoft Store (when it works at all) does not acknowledge the idea that you might live in a non-English speaking country but speak English.

For example, here it is looking very silly in Denmark: https://i.imgur.com/kdux88q.jpg


Try the FFS MSDN in English browser extension. Available for Chrome and Firefox.

https://www.google.com/search?q=ffs+msdn+in+english


One of the many reasons why I hate modern websites. They try to be too clever and try to guess what language I want, despite my OS and browser being set to en-US. And then make it particularly difficult to change the language manually in a persistent way. Why even bother with region settings if they're not going to be respected by websites or, hell, even games. I've noticed that if I have my system language set to English and my region set to German, some games will default to German. Which is annoying, but particularly infuriating when some games don't even provide an in-game language select, instead forcing me to Google for the right config file I need to change. And the only reason why I sometimes have my region set to German? There's no other way to change the MS/Xbox store region.

Actually, it's not just websites I hate. A lot of software makes me jump through ridiculous hoops to do basic things.


This isn't a new thing. Google has been doing this for almost 20 years. I was at Google at the time they first started doing this, and it was somewhat controversial.

The rationale (which I still don't agree with) was that many browsers would send "en-US" by default, and so it wasn't a reliable indication of the user's actual language. If you set your Accept-Language to anything else, then Google would pay attention to it, but en-US was treated as if it wasn't set at all.


If I'm in Denmark, and I've got an en-US browser setting it can be because I am visiting Denmark, in which case I probably don't know the language, or two because I have made a conscious effort to get an English version of the browser.

In short if your location has a different default language setting than what you are sending, what you are sending is probably what you really prefer.


> in which case I probably don't know the language, or two because I have made a conscious effort to get an English version of the browser.

...or because your browser defaults to sending en-US even though you're using a Danish-localized browser on a Danish operating system, as described by the parent comment.


I don't think you've read the parent comment very closely, if I'm mistaken please point out to me where they exactly discuss localization of browsers and Danish operating systems? Those are factors you've put into your definition of what by default means.

It is however not what I experience when I look at my Danish localized firefox because it sends da-DK by default, and my english browser sends en-Us, because I took the effort to make it so, because I don't much like the Danish language for UI.

I admit this is just a quick look over of the different language browsers I have on my system. What do the different language browsers on your system do that you feel so confident in telling me to pay more attention to the parent comment?


> many browsers would send "en-US" by default, and so it wasn't a reliable indication of the user's actual language

Indicating that "the user's actual language" and "en-US" are different. Yes, I extrapolated this to both the browser and the operating system having a different language, maybe it was just one or the other.

> What do the different language browsers on your system

From the parent comment:

> Google has been doing this for almost 20 years. [...] The rationale (which I still don't agree with) was [...]

I don't have any 20 years old browsers to test with, I'm afraid.


If someone has been doing something for 20 years the normal interpretation of that would be they started doing it 20 years ago and are still doing it, and you probably don't need 20 year old browsers to actually test it.


I'm willing to bet there is no modern browser that does this.


> If you set your Accept-Language to anything else, then Google would pay attention to it, but en-US was treated as if it wasn't set at all.

Thank you so very much for this tip! I don't use cookies and live in a non-English country so I've been clicking that yellow "change to English results" button for at least half a decade now, numerous times a day, every day. Switching to en-GB indeed makes Google respect my language choice.

Not kidding, you've just saved me thousands and thousands of clicks and small annoyances.


Google was the most major annoyance when I was expat, as it would default to an alphabet I could barely read. Trying to find the 'English' setting at the time was a nightmare.

I'm surprised browsers haven't addressed this yet, by adding an extra header stating if the locale is in the default setting or if the user has explicitly configured it.


I feel like this makes sense and probably needs to be applied more broadly.

Default settings need to be treated as the lack of a choice rather than an explicit choice for the default. So much software doesn’t make this distinction apparent and makes peoples’, usually users’, lives difficult.

If “agree to send me promotional email” is the default (and is gross but that’s not really the point here) you’re missing out on good data knowing who explicitly chose it. If the new version of a software has a setting with a new default but you can’t change it on upgrade because you don’t what users explicitly chose then you wind up with this weird case where version Y fresh and version Y from X behave differently. Maddening for debugging and support.


The problem is that there's no way to explicitly say you want "en-US". If you're in a non-English speaking country and your Accept-Language is "en-US" then you're going to get the "local" language.

To make matters worse, Google uses ccTLDs for everywhere except the US. google.us just redirects to google.com, and google.com uses your IP to figure out your country, so you can't even use the domain as a workaround.


This rationalization may have been valid at the time, but certainly the software has changed in the intervening 20 years such that it is very likely that the user configured their OS and environment to their preferred language weights -- at least their preferred primary language.

Given Google's wanton dropping support for RFC-compliant HTTPS in the name of changing times, certainly they should be open to changing this policy with the appropriate data.


For Google it is extreme.

The results you get are very much dependant on where you are visiting from. I can set my everything to Japanese, both in my browser, OS and my Google user account and search via google.co.jp - but if I am not in Japan, results will be skewed away from Japanese websites.

For example: The other day I wanted to find the lyrics for the Japanese version of a song, so I typed "[song name] 歌詞" and because Google knows that 歌詞 means lyrics, and it can see I'm in Europe, my top result was an English lyric site, with the original version of the lyrics and no mention of the Japanese word from my search term. Technically, that is really impressive, but kinda useless.

On top of that, it can sometimes be impossible to visit help or product pages if you happen to be in the wrong country.


I'm in the USA and get Japanese results when I search for things in Japanese. Google has settings for both region and search result language, I would try setting those.


It’s not that you don’t get Japanese results - adding a few more words to the query got the result I needed. It’s how about how far they force their localization on users.


> The rationale (which I still don't agree with) was that many browsers would send "en-US" by default, and so it wasn't a reliable indication of the user's actual language.

Sounds like a potential workaround is to set your language to another flavour of English like "en-CA" or "en-GB".


Unfortunately various sites, particularly Google's, gatekeep functionality behind the language/region setting.

Browser set to en-au? "Oh, I'm sorry, you can't use this feature yet because it's not in your region." for years after launch.


So they set your location from your language and your language from your location...


I have my language set to "en-GB" and still many websites (including Google, when not signed in) default to that of the country I'm in.


Yes. I think most Google properties also support an hl query parameter that will work even if set to "en-US". Either way, not ideal.


Another useful one is www.google.com/ncr which opens Google in English (NCR= No Country Redirect)


Exactly right. A modern website is one that knows that the browser's configured language is the best way to determine the user's language. A website that uses location to determine language is hopelessly outdated.

I never completely agreed with the rationale for using location, but 15-20 years ago I at least found it understandable...Internet Cafes and borrowing your host's desktop computer were more common scenarios then. Today they're rare enough that I can't understand why anyone would accommodate those scenarios over the scenario of someone traveling with their own device.


> many browsers would send "en-US" by default

Which browsers? I'm using Chrome and it definitely does not do that. Should be easy to find out that with user agent.


As I stated in the comment you quoted from, this was about 20 years ago. Also, Chrome is made by Google, so it seems entirely reasonable that someone fixed a problem they found annoying about browsers. (At the same time, Google is so big now that they may continue ignoring "en-US" because of momentum and/or because no-one remembers the original reason behind that decision.)


Also: STOP DISABLING ZOOMING.

WTF!


my other pet peeve.... stop hi-jacking my scroll wheel and converting it to 'smooth scroll'. i dont want crappy animations, you have content, i have a method of scrolling, let me control how i do this.


Smooth scroll that snaps to set scroll levels is absolutely infuriating. I question the psychological integrity of anyone who thinks it's a good idea; how much of a control freak must you be to want to micromanage people's scrolling?


Another obnoxious thing is how websites disable the normal behavior of Ctrl+F in favor of whatever their vision of what a search UI should look like is.


Yeah, that's incredibly annoying. So frustrating when you're coming to a discourse thread from a google search. I tend to avoid discourse forums because of that.


Ha I used to worked on a tablet app that did a load of industrial safety checks.

We kept getting tickets to lock more and more of the device down as 'solutions' to support requests.

One ticket was to lock the device to maximum brightness, because support had fielded some calls where the users couldn't see the screen.

We then started getting calls from users who worked nightshifts complaining that this tablet bolted to their truck was blindling bright and there was nothing they could do to dim or turn off the screen...


And 90% of the time, smooth scroll isn't.


Are people still doing this?! Haven't seen it in a while but it was one of the worst web trends of the last few years.


The way AMP hijacks my Chrome menu bar and disables tab management until I scroll all the way back up the page to the top makes me actively wish death and despair upon its developers.


And stop having bars on sites that stick with me while I am scrolling.

Not to mention the infinite scrolling insanity.


This is handy, I think theres one for Chrome too. https://addons.mozilla.org/en-US/firefox/addon/kill-sticky/


And please, text selection on mobile. Why is that even possible?


Downvotes?

Is it unclear that I mean that I don't want text selection to be disabled and I am questioning why you can disable that I can select the text in my browser of your website, or is someone really invested in having non-selectable text? I'm surprised.


Your post literally says you do not want text selection to be available.

Yes, as you said, this makes no sense, and the only available interpretation is that you do not want it disabled, but it took me a WTF moment before I got to that. Maybe some people are quick to downvote.


Ok, perhaps "literally". But it's a reply, right? Context is a thing.

- [...] A lot of software makes me jump through ridiculous hoops to do basic things.

- Also: STOP DISABLING ZOOMING. WTF!

- And please, text selection on mobile. Why is that even possible?

I guess that's not clear at all once there are many replies. What I'm learning here is to craft responses that stand on their own. This is not a spoken dialogue.


I installed the Halo bundle a week ago, it defaulted to German.

I've never been to Germany, the last time I studied german was a quarter century ago. My Xbox isn't set to German either.

Even the language selection was hidden in a sub-sub-sub menu somewhere, which took some digging.


> Even the language selection was hidden in a sub-sub-sub menu somewhere, which took some digging.

I think it was hidden in the accessibility menu... This made me absolutely furious when I couldn't figure out how to change the game's language to the one that my Windows installation is using.


Some games do this too, for example State of Decay, based on what your Steam application language is. It's silly.


Why is defaulting to the user's implicit choice silly? Where there are two possible defaults for a game to use (OS or Steam), the Steam language setting is closer to the game, so it should use that. For most users it'll be correct.


It shd allow that you can choose. Most media content is better in the English original then in some dubbed translates version. The UI doesnt matter what language (apart from understandable by then reader)


Most media content is better in the English original then in some dubbed translates version.

You say that because you speak English. If you don't then obviously English is much worse than even a poor translation. Game developers have to take that in to account - using the user's Steam language setting means they can definitely read that language, so putting the game in that to start with should work for them.

The app has to default to something even if the game enables the user to change the setting. Using the user's Steam language is a more sensible starting point for most users than "Everyone gets English". That just completely ignores 80% of the world's population.

As for the quality of the translation, the solution for that is for developers to make better translations.


> Using the user's Steam language is a more sensible starting point for most users than "Everyone gets English". That just completely ignores 80% of the world's population.

I'm pretty sure much more than 20% of the world's population is fluent in English. It's the language of the western world and the global economy, after all.

> As for the quality of the translation, the solution for that is for developers to make better translations.

Like the market ever cared about distributed failures like these. Every studio uses a different translation group, they can't really verify the final product, and the translators will happily save money doing shoddy work. Not to mention, the workflow isn't usually optimized for correct translations. To do this right, you'd have to have the translation team play through the entire game at least once to understand the whole picture, and only then have them work together on translating the text and audio. No single-pass translations, and no dividing the work between multiple people that don't talk to each other. I.e. more expensive. At the same time, the studio will get 90% of the profit (which happens at the point of sale, not at the completion of the experience) with a shitty translation anyway.


Maybe language for business/tech and hobby/life is different.


> The app has to default to something

Not really. They could pop up a language selection dialog on first use, like many installers have done for ages.


> As for the quality of the translation, the solution for that is for developers to make better translations.

Translation is inherently lossy.


I fully agree. I just meant it shd be easy to change language.


There is worse: websites that redirect you to the homepage in your detected language, rather than the same page in "your" language if it exists, or the original if not.

I often have this problem with web shops with my wife, who has a different mother tongue: she sends me a link to eg. a piece of furniture she likes, and all I can see is the homepage of the bloody shop, with no clear way to just say "show me the damn page I asked for".

Another fun experience was a short text on an airline website (cannot remember which one) which ended being in 3 different languages, sometimes switching in the middle of a paragraph, depending on whether it was using the language of my location, my browser or my OS. At least that was fun.


Kind of unrelated, but I'm unable to shop on Amazon because of this. As soon as I click on an Amazon link anywhere on the web, it opens the mobile app and enters this weird redirection loop where it keeps asking me if I want to switch to my local Amazon store.


Uninstall the app?


Man this happens all the time, especially for products (which I kind of understand).

I was doing some research on camping equipment. Google leads me to a US page. But since I'm in NL, it redirects me to an NL domain, which is a totally different site. That site, of course, doesn't have that page, so I get dumped on their main homepage.


Agreed, location should not be the primary way to decide which language is served up, but it's also not as simple as the article suggests.

I have been building web apps for a couple decades and have some that operate in dozens of languages. My best practise is to only look at your region when your selected language has regional variations. However, that's true for most of the popular languages which is why it isn't as easy as the article suggests.

For example, your browser's language is set to English. Cool. But, are you in America or somewhere else? Oh you're in Canada, no problem neighbour. Spanish? Are you in Mexico or Spain? Don't worry, I'll give you the appropriate version of our Spanish translations then. French? You in Canada or France? Portuguese, Brazil or Portugal?

Not to mention, when you're operating in a lot of languages, and your application is in active development, you're constantly sending out copy for translation. Different translators have different turnaround times and they don't always make it into the release schedule. So, what happens when a translation is missing in a particular language? First we fall back to another region for the same language, then we fall back to English. American English to be specific -- that's the language the developers and product managers write in so there's always an American English translation.

Then, we also allow the user to override their browser settings and pick whichever language they want. That is saved to their user profile so wherever they're logged in they'll get the language they have set for our applications.

So ya, we give you your configured language whenever possible. But asking us to ignore region is not ideal for most users either.


>> For example, your browser's language is set to English. Cool.

That's where this example should stop. Your site should then serve me English, because that's the language I've told you that I understand.

Why are you changing it based on my location? Why are you serving an English-speaking tourist in Mexico "the appropriate version of our Spanish translations" when their browser just fucking told you THEY WANTED THE ENGLISH VERSION?!!


You must have stopped reading at that point because the comment went on to talk about using the location to select a regional dialect only.

Your browser's language is set to English. Do you serve UK, US, Australian or Canadian English?


Then we should have browser settings for regional dialect, because the same thing holds true. I don't stop being a British English speaker just because my IP address is in Toronto.

Language is a property of people, not place.

edit: Also, I'm an English speaker living in Berlin. This shit happens to me all the time, and it's a trigger. Apologies for blowing my cool.

And I'm used to reading any flavour of English. The regional dialects really don't matter. Colour can be color and I'll still understand. I won't understand "Farbe".


> Then we should have browser settings for regional dialect

We do, and that's what I'm using. Sorry if my example was confusing, I should have worded it better. I am using the regional setting from the browser to determine the correct region for your language, I'm not using your physical location in any way.

My comment was an outline for the right way to do it and I blew it when my example had the person with their region set to mexico actually in mexico (which is true most of the time, and true in my example, but is not how the app logic works because it's not true for everyone all the time). Either way, I think the actual logic agrees with what you would expect -- you get the language your browser is set to regardless of where you're connecting from. Additionally, if you have your region selected, we'll also tune your desired language for the right region of that language too regardless of where you are physically.


Apologies for not reading your post right, then. Like I said, this is a bit of a trigger for me because I live in a country where I don't speak the language, and deal with this shit all the time.

Your site is an outlier if you ignore the user's location. Most tend to take the IP address as more important than the browser settings (looking at you Google, Amazon).

The Amazon case is especially weird. I can talk English to Amazon.com, but as soon as I set up a Berlin delivery address it wants me to switch to Amazon.de. Which speaks German to me. There is a switch for language there, but that only works for some parts of the interface, and not things like reviews, etc, which are all still in German. It knows I speak English, because it keeps offering to translate these German reviews into English for me. But if I go to the same product on the .com site, there's a ton of English reviews for the same product. I must admit, I don't understand the logic behind it all.

But the same problem is at the core: assuming that because someone lives in Germany, they speak German. Again, language is a property of people, not places.


> Which speaks German to me. There is a switch for language there, but that only works for some parts of the interface, and not things like reviews, etc, which are all still in German.

It's worse than that. The Amazon interface on amazon.de is clearly a translated version of amazon.com, but the English option is a machine translation of the German amazon.de (which was originally manually translated from English). Why?

And then amazon.fr just doesn't give you an English option at all. Again, why?


haha that's hilarious. I hadn't caught that it was that bad.

I always figure I must be a tiny minority market for Amazon to not have optimised my experience.


With few exceptions, I can't think of a good reason to serve up regional dialects of English and I can't imagine anyone approving the translation of a site into UK, US, Australian, Canadian, Indian English or any other regional dialect.

English speakers are quite capable of understanding regional dialects and I would guess there are few instances when a user could be confused by a dialect not local to them.

Do we then have to go down the route of translating to northern English dialect over Scottish English? etc.?

No, you serve up whatever variation of English that is local to you. The rest of us native English speakers will get by just fine, unlike if I was on holiday in Mexico and was served up Spanish. I wouldn't have a clue.


I don't think dialect is the key thing.

As someone from the UK, I don't need a news article to use "pavement" or "footway" instead of "sidewalk".

But I do appreciate sites using a UK date format, and saying "Colour" instead of "Color", in their UI.


No one should be using the travesty that the Americans call a "date format" anyway =)


An HTTP Accept-Language header includes a regional qualifier -- de-DE, en-GB, es-CO and so on.

(Although, I don't think I've ever seen a website offering multiple versions of English.)


Really!? I'm from the UK and can think of loads of sites that offer a British English version.

"Favourites" instead of "Favorites".


South African English! :)


Absolutely agreed. The language of the browser is the only thing that should matter. I constantly have issues with this as I want to browse everything in English, my operating system is in English, my browser is in English, but because I have my region set to Polish in the operating system(to get things like comma as a decimal point for numbers and sensible date format) but of course websites assume that I want to see websites in Polish thanks to this region. Just like....stop doing that.


For sensible date and time formats in English, you can use en_GB. I don't think there's any standard English locale with comma as the decimal separator, although my Android phone and Ubuntu installation offer en_DK for some reason.

Linux's locale allows more granular settings, but that's not possible over HTTP.


For the date you can customize it in Windows as well. I've been using YYYY-MM-DD as my default for years.


This is so true and so irritating.

The problem with "appropriate translations" is that a fair number of them is horrible and broken. Sometimes they're plain wrong. It's not about small companies; but giants like Microsoft also gets this wrong -- for example, Polish localization of Visual Studio development tools is often not understandable for a native speaker of Poland, also sometimes it's plain wrong because it lists options that aren't there now, maybe there were used at some point in the past. This is the reason why I consciously select English as my main Internet language, and the language of my OS, because I don't really want to be annoyed with poor quality translations.

I just wish Internet pages would just use my browser's setting and stop trying to be intelligent, because it only produces problems and nothing more.


The problem is most users doesn't even know that you can set language preferences at the browser level.


If a user doesn't know about it, he probably has the browser set to his native language, which resolves the issue before it's an issue.


I might be outlier, but I like my software interfaces to be in English. Keeps them all the same ('save all', etc)

But I would rather consume content of a website in my native language. While I'm not complaining if it it will serve me English.


Firefox has two separate settings for "Choose the languages used to display menus, messages, and notifications from Firefox." and "Choose your preferred language for displaying pages" so your use case should be covered by not second-guessing the user settings.


Having your software interface in English also makes it easier to find help when you’re confused by something.


Maybe true in the West. Not totally true in a lot of countries where the OS is almost always in English despite the fact that user may not be able to comprehend English (they can read lone word just fine to operate menu and such)


By default browsers get that from the OS, and that was typically set on first boot. It's a very reliable signal.


This seems well within Google's (especially) ability to fix.

They seem to rely on similar settings for knowing whether to bring up a "This page is in Polish. Do you want to translate it?" popup.


What do you mean? I don't think we're talking about language preference, simply about...language of the browser itself.


There's a setting for language preference that is set in the browser, and transmitted in every request header. This is the thing that we're talking about.


Right, I have no idea how it works(and I guess like was said, 99% of people don't), but as a user I'd reasonably expect that if I have my browser in English, my operating system in English, then I want to see websites in English.


We don't need to know how it works, it asks the web pages to serve content in that language, it's made explicitly for this use case. It should be the first choice. Second choice could be browser language.


But couldn't it be possible that Spanish people might use an English installation of the browser (because of some other reason), yet they obviously still want their local websites in the native Spanish, not some questionable translation of it?


It could be entirely possible. But at least the user controls this and makes this choice - they choose to set their language preference to English (because of some other reason). If they want to view a Spanish website in Spanish, they can set their language to Spanish and re-request the site, and they should get the Spanish version. It's inconvenient, sure, but setting the site to show Spanish purely based on the IP address causes worse problems for people.

For example: I'm English, and live in Berlin. If I use a VPN to set my IP address to the UK, I get an English version of <site>. But if I then set my German address, <site> complains that I'm not on the German version of the site. If I change to the German version, then there's no option to set English. I have no control over this - there's no option available for "I speak English, but have a German address".


I feel that should be covered by regional locales set on the browser or system, like EN_US, EN_GB, EN_CA or ES_ES, ES_MX, ES_US. As a user also pointed out, if I'm British and am travelling to the US, changing the date order of an app/website just because I moved is even worse, it can be very confusing.


It really is as simple as the article suggests.

> For example, your browser's language is set to English. Cool. But, are you in America or somewhere else? Oh you're in Canada, no problem neighbour. Spanish? Are you in Mexico or Spain? Don't worry, I'll give you the appropriate version of our Spanish translations then. French? You in Canada or France? Portuguese, Brazil or Portugal?

This is so utterly wrong and user unfriendly. Let's say that I'm an Australian traveling in Trinidad and Tobago. Somehow your web server has decided that my language is simply "English" (although it certainly is more specific than that) and makes a wild guess that because I'm in Trinidad, I want to read your website in Trinidad English creole...it's a wholly invalid assumption based on the flawed notion that my location somehow reflects my language preference.

Luckily, HTTP 1.1 has Accept-Language standardized, and unlike the solution you present it was designed with the existence of travel in mind. The locale identifiers may already specify a regional variation. My browser sends "en-AU" and your server will have all the information it needs to respond in kind without resorting to a guessing game. It's not only better for me; it's also easier for you, so why over-complicate things and break user expectations?

> Not to mention, when you're operating in a lot of languages,

... an entirely orthogonal issue may occur. Understood, but has nothing to do with location based content delivery and thus does not justify it. Again, though, Accept-Language may prioritize several language and you can use that information to decide which translation to use as a fallback.


Then you better have human translated 100% accurate versions of your site. Because I've been served "spanish" automatic translations that are gibberish and make no sense. E.g. "data uploading" auto-translated to "los datos cargando arriba", when in proper spanish it should be "subiendo datos".

As spanish from Spain I, and I guess more than 80% of spanish people, prefer to read mexican written by a mexican person than "es-ES" translated by a robot. If I'm travelling to Latam, I would prefer your site serving "es-ES", after that "en-US", then "en-UK", and only after that any "es". Just like I have my browser configured. Other Spaniards may disagree and set their preferences differently, and that's fine. It's 100% easier to respect the Accept-Language header than to do geolocation gimnastics.


Location shouldn't be used at all, unless there is no language set in the browser.


The procedure you describe sounds like the sane thing to do / to me :)


> My best practise is to only look at your region when your selected language has regional variations

Or just pick one, and go with it? That way you only need one translation into each language.


God I hate this. Show me your website based on the language of my browser, or in English. Period.

Yes, I live in Mexico, and yes I speak Spanish, but no I don't want to see your terrible translation.


I find it rare, have you configured the language used by the browser when it request pages? It's different from the language user interface.


Yeah, this is pretty horrible. Many applications try to be friendly and show a Hindi webpage just because you are in India or in particular, Northern India. India has around 25 major languages, and people from all over the country work in all parts of the country, so assuming Hindi as the default language for every person currently present in North India is not correct.

Language is a sensitive issue in several parts of India. Why not be polite and ask the user for language preference first?


Seriously. I'm a Hindi speaker living in South India and I keep getting Google search results. Facebook also thinks I must understand the language.


And stop disallowing me to paste into password fields please. I use Keepass.. ..ever tried to enter by hand secure passwords like this: cw-ZY~!$m=#3RM4",Y9Mpcd\_!+z;FN]p

They actually trying to force me to use more insecure passwords.


I'd like Apple's App Store review process to turn down apps that do this or don't allow 1Password integration


I ended up writing a custom browser extension to handle one particularly annoying login process for a site I need to use regularly that in addition to asking for password asks for several other pieces of information on a "1st character of ..., 3rd character of ..." type basis. It's infuriating.


Three things: - YES, you are 100% right - Keepass has a Ctrl+V mode, which pretends to type into username / password fields char by char. maybe this feature can give you peace of mind - Still, you are right, the website shouldn't make assumptions on how you handle passwords


G Suite does this and never saves my preferences! I'm in Tunisia and the business language is French. My PC and my browser are both set to English. Yet, Google insists on showing me the Arabic page!

Not only that, but their translation is terrible. Plus, since Arabic is not the business language here, most of the terms used on their site are quite ambiguous to most Tunisian users.

Ugh.


Expert advice incoming to alleviate the suffering. How to determine the locale correctly in a Web application: try the following steps, in order.

1. locale preference stored in session of the Web application

2. locale preference stored in user settings of the Web application

3. locale preference advertised in browser

3. a) Accept-Language header

3. b) language/territory in User-Agent header

3. c) IP address lookup/geoip

3. d) Geolocation API

4. default locale of the Web application

You will notice that Google tries to be "smarter", to the detraction of the user, as shown in many comments in this thread.

Implementation notes: 1. and 2. require a locale selection somewhere as part of the Web application, 3. is browser settings, 4. is hard coded in the Web application.

----

From the article:

> Don't set the language of your website based on user location

This is an extreme/absolute prohibition and therefore almost certainly false/useless. Done correctly, user location is one clue in a chain.

> why would I have my machine in that language? And if it's not, I will change it myself.

Sometimes, it is not possible or feasible. Be aware of these situations. Examples:

* You are in an internet cafe or corporate environment and the browser settings are locked down by admin policy.

* You borrow someone else's mobile phone or tablet for a few minutes.


As someone who has traveled and lived abroad the past 10 years, please, never ever use physical location to set the language. Yes, never ever. Why assume everyone at an internet cafe speaks the same language as determined by its physical location? Why assume either person involved in this borrowed tablet situation speaks the predominant language of wherever they happen to be physically at that moment, like a business trip, or vacation? What about VPN's? Use a cookie and Accept-Language, and provide a menu of language choices where each choice is in that language, e.g. Español not Spanish.


I live in the Netherlands, so Google keeps showing me Dutch results first, Dutch videos on YouTube and Dutch ads, even though I don't know Dutch and I did set all my preferences everywhere to English, but it seems to be stubborn to show me Dutch content even though it's just a waste of bandwidth and ad budget.


[flagged]


Could you please post it to https://www.reddit.com/r/iamverysmart/?


Well, 3a is always set, so there is no reason ever to fall back into 3b, 3c, 3d, or 4 (unless you are supporting non-mainstream browsers, what does make sense, but the advice is much less wrong than your comment implies).


> 3a is always set, so there is no reason ever to fall back

It would appear so on first glance, but consider that sometimes, the 3a value is useless, and some home-brew analytics will reveal that; so you can think about whether to not take the value into consideration for the locale. Unfortunately, the real world is messy like that. :(

Examples:

• browser was never configured because the user does not know how, or even that the capability exists, and hence does not reflect the true intention of the user

• browser configuration could not be changed for technical or social reasons

• browser is hardened against finger-printing


Nothing lower on your list can be changed more easily than accept language. So, if it is wrong, anything lower has a high likelihood of being wrong too. That' why your #1 and 2 are important.

And you have no means of knowing that the accept language is wrong anyway. But it's always there (for mainstream browsers), and more trustworthy than the lower options. You won't have the chance of falling back into them. (A non configured browser has that header set, and you don't know if the browser user can change it or is lying.)


Not ignoring values from 3a is exactly what this discussion is about. Stop second guessing the user's settings.


While annoying, I don't even care about websites setting the wrong language as default. What I absolutely HATE, though, is websites and apps that FORCE you to view them in a certain language, based on either location or on OS locale.

Google Maps is the worst. I live in Israel, so I obviously want to see street names in Hebrew. My Android device locale is set to English (Because that's the way I prefer, and I also rather not see everything flipped because of the RTL nature of Hebrew). This FORCES me to view street names in English, and there simply NO WAY around it other than changing the device language. It has been this way for years, and it's painful. Why not just let us modify the language on per-app basis?


I'm an American with Hungarian roots. I spend a lot of time in Hungary and I'm currently trying to learn Hungarian. I hate that Google Maps translates all of the local names into my device language, making it impossible to navigate by local names. I've tried setting my phone's default language to Hungarian. That worked well a decade ago when I was learning Spanish. But since my phone is associated with my Google account, as soon as I set my phone to Hungarian, a bunch of other apps suddenly assume I want Hungarian, even when I'm on my desktop. Once while traveling in Thailand, I set my phone to Hungarian for practice, and suddenly Jira on my desktop was in Hungarian. I switched the language back to English on my phone, and Jira still assumed I wanted Hungarian. If you don't know anything about Hungarian, it's a very difficult language to navigate in if you don't speak it because it shares almost no roots with Latin or Germanic languages. It took me weeks to figure out how to get my Jira back into English.


I think maps is a specialty case where optionally displaying location names in their native language and script regardless of locale settings may be a useful feature overall.

I certainly don't think it should be location based.


I experienced this a lot while growing up in a country with ~4 national languages - I spoke one of them well, but sadly only about 20% of the population speak it, so most websites will default to using the bigger national language (~70% pop) regardless of what your computer is set to.

It's really not that hard to find the language switcher on most websites, but it's still a bit annoying.


Yeah, it's annoying as hell. I especially despise when sites force me to manually select another country from a list, in order to get an interface in my native language.

The country selection itself is trivial, but often the content will be geo-specific as well, and you might end up with things like the wrong currency and so on.


Ahh the “is it the US or British flag next to English” problem.

I’m genuinely surprised that there’s not a falsehoods article that includes things like:

* The mapping between languages and countries is 1-1.

* Every language has a mother single mother country.

* “English” refers to a single language.

* “US English” is good enough for all English speakers.

* US English is well defined and refers to a single language.

* You can partition a map into areas for which there is a single reasonable default language.

And so on.


It (long) predates "falsehoods" style articles, but this article is pretty commonly cited: http://jkorpela.fi/flags.html


That article is more about aesthetics than anything.

Also:

> There is a perfect symbol for any language which you can use on the Web: the name of the language in the language itself, such as English (or British English or US English, if needed). Be careful with the grammatically correct use of upper and lower case here! If a reader doesn't know the name of language X in X, he probably does not know X enough for the link to be of use to him.

So now that I'm on this Korean site, with no idea how "Korean" looks in Korean, how am I supposed to find the language picker?


I believe you misunderstood the author.

He is not saying to use the current language's hame for the language picker's icon (I would use a globe, personally), but instead to use the language's name in the list.

For example:

    [GLOBE]
    >English
    >日本語


> * “English” refers to a single language.

>

> * “US English” is good enough for all English speakers.

>

> * US English is well defined and refers to a single language.

There are certainly pretty extreme differences in spoken language, especially in the UK with its vast collection of local dialects, or in places where English is on a continuum with a creole language (Jamaica, Liberia, etc.)

But I would have thought that any regional variety of written English could be readily easily understood by most functionally literate speakers. I can browse English-language newspapers from the US, UK, Jamaica, India, and the Philippines and understand everything or nearly so. Is my assumption incorrect?

Anyway, I'd add another falsehood to your list:

* People prefer to consume content in their native language.

I think most bilingual people would prefer to read original content in their non-dominant language than a (poorly) translated version in their native language.


If you're going to use definition of 'language' so narrow that languages effectively don't exist, your article is not going to be useful. Kinda want the falsehoods to actually be false, you know?


Pretty much, yes. But the situation is even more messed up here in Europe and I am especially happy that I'm not a native German speaker.

It would cause a bunch of other problems, of course, but it would be nice if we could just have a bunch of languages with an EU flag next to them. At least from an UI perspective. :D


I remember Spybot used the actual flag of England!


Switzerland?


Yep! I grew up in French-speaking Switzerland.


So many websites do this. It's been very frustrating for years. I have everything set up to Catalan or otherwise English, but so many websites decide they should force me into their Spanish version. I don't even live in a Spanish-speaking country. I get it, you see Catalan and think, hey, we don't have Catalan, but we can offer Spanish! Well, not all Catalan speakers live in Spain. Catalan has been spoken for centuries in other areas. Consider the case of my kids who read and speak Catalan and English, but not Spanish.


I'm in the exact same situation and it is terribly infuriating! As a good thing, this has somewhat forced me out of google search and now I get to enjoy duckduckgo which does not seem to pull this kind of shit on you.


This is one of my main pain points with a lot of websites, including Google. I live in Hong Kong, and it constantly keeps setting itself in Chinese. Quite a few websites do this, even though my browser is set to English.

Worst of all, even when I set Google to English, the OAuth popups remain in Chinese with no option to change.


My favorite was getting a recaptcha in Thai when logging into LinkedIn during my first week in Chiangmai.


Youtube has this "feature" where it translates video titles for me (and it is always horrible). I feel like it never occurred to them that a person could speak more than one language.


Yeah this feature is pretty stupid. It makes you think the video is in a different language than it really is and makes search much more complicated.

I like that you can set language and region on top of the browser settings though and it's cookie based. This way I have a firefox container for Spanish another one for English, etc. Same Youtube account different languages.


Ah yes, that's horrible. No matter if the user couldn't understand a word in the video itself if he needed that translation, let's just deceive him by showing him a badly translated video title in the wrong language. Meanwhile I have to set the site to dark mode and English again multiple times a year because Google struggles to persistently store this simple user setting.


Ow, yes, the translated titles are so confusing. You think you're getting a video in your language, but no, you don't. It's just a badly translated title and captions.

And don't get me started on those captions! Youtube, please stahp! Why do you keep forcing these? I don't want them, stop pushing them.

Whenever we use Chromecast with multiple people, Youtube enables the auto-translated captions. So, we turn it off, next video youtube turns it on again, we turn it off again, next vid, it's there again. arrgghhhhhh


The youtube app recently got awful wrt caption. It always enables them now, so I end up disabling them manually. But then if there's an ad in the middle of the video, after the ad, they're back! And that's with subtitles being disabled in the app settings!


Is that feature auto? I mean, I find that it is almost always require the uploader to approve the language. Human translator can be horrible too.


I don't really know. I assumed it was auto-generated since it has always been bad.

But my point was more that I didn't want localized video titles and I should just get the original one since the video is in that original language anyway.


If it is the intention of the uploader to create a localized title and description, shouldn't you be getting the localized one according to your language setting? I also find it is annoying, but I think it is intention of the uploader.


On a related note, always leave the text on the page as an actual text. Don't put it into an image. This gives visitors a chance to easily translate the text. I've had this horrible experience so many times in a foreign country.

Somewhat ironically most of the time those would be governmental websites or some important announcements.

If you've made this fancy image that looks like a brochure and you must put it on a website and you can't be bothered making it in HTML with text, at least write all the text on the image in alt attribute or under the image.


I think this goes back to the early days of web development. Before we could add fonts with CSS @include and had to write progressive websites (yay 800x600), everyone who wished to use custom or platform specific fonts had to generate images with that text using a php script or some such. Since government IT is chronically underfunded (IMO) and the web hit critical mass late 90s/early 2000s - long before best practices or new technologies could be widely disseminated - most of them are stuck in that time period because that's when they were first forced to support the web.


I couldn't agree more. When I began to use the internet to read, learn and communicate with people, I eventually found the anglophone community to be bigger and wiser. Also, any content would have its counterpart written in English, which was more detailed and better at explaining the concept. So, now a big chunk of the concepts I know I've learned by reading works written in English. One of the consequences is that every time I need to search for something, I'm not going to write the query in my native language. In this regard, Google wants to be helpful in advance and will rank up results written in my native language, which isn't helpful at all since I'll take longer to understand something written in the former, specially if it's something complex. I switched to DuckDuckGo.

Also, now many documentation websites will try to serve their content based on your location. I'm always clicking around.


I have the same experience, I use exclusively English to search and read the internet (and also set English as the language on all my devices, forcing it also on my wife's phone, not least because it makes it easier to search for error messages and related solutions).

That said, I found it sufficient to switch Google to English and I didn't have to ditch that search engine just because of that reason alone (you might have other good reasons to do it though).

I think I used https://google.com/?hl=en to set the language; but since it remembers that setting honestly I have no idea if it's still the way to switch languages


Google will regularly forget your language setting if you're not logged in.


The browser vendors don't make it easy to change the browser language (and especially not on a per-site basis) so users are unlikely to be able to change the language if it is wrong, so if decide to use the browser language instead of the location, please also have an option in your site to set a cookie that overrides the browser settings.

You can even do this on completely static HTML-only websites that don't use JavaScript or server-side code. Debian is an example of this:

https://www.debian.org/intro/cn#override https://salsa.debian.org/dsa-team/mirror/dsa-puppet/-/raw/ma...


> The browser vendors don't make it easy to change the browser language

In Firefox it's in the first page of the settings: Tools > Options > Language and appearance, there you can change the language of the UI and the preferred language for displaying pages.


I have my Firefox "Language and Appearance" language set to "English (United States)". I'm not sure why this setting even exists, because the operating system also has a language setting, which I've also set to "English (US)". Yet somehow, some parts of my Firefox UI are still in Japanese. Nobody has ever been able to explain why, or how to fix it.

I don't understand why a web browser (or any application) needs a custom language setting, much less a prominent one. It's just one more place that can fail.


> I don't understand why a web browser (or any application) needs a custom language setting, much less a prominent one. It's just one more place that can fail.

For entertainment including games I want them to be in the original languaugage they were developed in (if it's one I can speak fluently) even if that differs from my system language (which differs from my native language (which at many points in my life has differed from the default language for my location)).

I don't personally have a reason to have a different language for my browser UI though, but perhaps someone else does. However I agree that the default for application languages should be "use the system default" - not whatever was the system default at installation time or some other fixed language.


Google is the absolute worst with this. I have to remember to put ?hl=en to the end of every URL for every product they own.


I think their logic is roughly speaking this:

If the Accept-Language header matches "en-*", ignore that. Instead use geoip to try to guess a language.

If the Accept-Language header is something else, use that.

There's probably some cookie/Google-ID-based heuristics going on too.

Please just give us a UI language selector. Don't leave us with something half-baked that works great for 90% of the users and leaves the remaining people perplexed. People do know multiple languages, and want to search for stuff in other languages too, sometimes. (Yes, it does seem like the UI language is influencing the search results, too.)


Have they ever provided a public explanation for their fundamental incompetence here? There’s got to be a good reason, right...?


They are bad at anything user interface related in general. There is no reason to assume good reason.


Google sends me emails and shows me webpages that are English, German and Japanese at the same time..

I'm in Germany, my browser is set to English, and I bought a play store app while I was in Japan using Japanese money.

The other day I wanted to install the "Too Good To Go" app but I had to sideload it because Google thinks the app is not "compatible with your device". It's just region locked and the app should be available to me because I'm not in Japan.

When I tried to change the settings on various Google websites, the language kept switching between the three languages. A forward even failed because of this and I had to find out the next URL and manually edit it so that the language didn't change and thereby restart the settings wizard.

In the end I couldn't figure it out and gave up.


Just this morning I was getting annoyed about exactly this.

If I want the Australian site I'll go to the .au domain name. If I go to .com then I want the global/USA site.

It is SO annoying when going to .com redirects to .au

Maybe this is what happens when companies stockpile so many developers that they have more than they need - everything that can be written does get written.


But then what do you do for some of my relatives who are not making that decision based on the domain and then get made when they can't get the .com stuff in Canada?


I think amazon makes this right. If you go to a amazon.com page it shows you the actual page but also asks you if you would rather go to your local amazom.whatever site.


I've been saying this for years. Every browser offer to configure a whole set of preferred languages, including dialects and the order of preference. Every website should respect that choice (unless they didn't have time to implement more than one language at all).


I have a theory that if there are many ways to do something, but one retrieves more data about the user, that way will win.

For example, cisco webex turns on 24/7 microphone access "to find nearby displays".

this could be a funding model - if your app can plausibly access (contacts, location, microphone, camera, photo library, ...) then it should get more funding (because you can slap on an advertising SDK to "coincidentally" extract more user data)


Your theory sounds reasonable but in the case of webex it's using ultrasound put out from the displays to figure out which room you're in.

https://help.webex.com/en-us/WBX89838/What-is-Cisco-Intellig...


Like this kind of feature should really be “only when I click the scan button” but I have to say it’s pretty neat in practice.

Short distance data channels that solve the “two computers physically next to each other can’t communicate frustration” are always welcome in my book.


See, you will enable it. it is plausible why you should give over microphone access.

(meanwhile I can also add an advertising sdk to listen for nearby television advertisements or recognize nearby music to "add value")


Yes, please! It is incredibly annoying, especially when it is hard to find the button to change it. Google seems a big offender; I have to fix it many times. Very weird as they also present localised ads which I cannot read...


Yes this is super annoying, especially if you're in a country with it's own alphabet, and the 'change language' menu item is written in that script which you can't read.

Google maps, for example.


Why does setting the language based on location even happen? It seems like far more work to do that instead of just checking the `Accept-Language` header.

When I did it, I just mapped the browser language to our languages and called it a day, no complaints so far. So far as I know, most browsers send that header in.


That's exactly what should happen, the problem is a lot of sites don't do that. I'm US, living in Vietnam and half the time the Facebook login screen turns up with Vietnamese and no way to change the language. If anything, this forced me to learn those 'login' words in Vietnamese.


I'm British and also living in Vietnam currently, and this has also been my experience. Also, if I'm in Thailand all the Google search results are returned with timestamps converted to Buddhist calendar years. Genius.

Is it unreasonable of me to be less tolerant of this brokenness when it comes from companies with all the money in the world, and also all the highest paid developers in the world?

Imagine being able to invert a binary tree on a whiteboard, but not being able to follow a basic HTTP specification. Insane.


I can confirm having the exact same issue, Facebook isn't alone though. Google also tries to be clever and fails hard. There's only one way to get the preferred user language, it's to check the Accept-Language header, anything else will fail, please don't try to be clever.


I posted about this 3 years ago[0] and I was met with the following (not verbatim):

> "The amount of people who live in the world who do not change their default OS settings is higher than those who live in foreign countries"

> "it is computationally expensive to read Accept-Language vs geoIP"

> "obviously companies know what they're doing here"

I have seen only a few applications using the accept-language header, Grafana and Outlook Web Access are notable, but they wouldn't necessarily have the luxury of using GEOIP as they're typically hosted on-prem.

[0]: https://blog.dijit.sh/trusting-the-user-they-know-what-langu...


> "The amount of people who live in the world who do not change their default OS settings is higher than those who live in foreign countries"

They'll get computers with an OS and a browser on their language.

There are people claiming that in some places the computers will be in English even though people do not speak English... But this is such a suboptimal situation that I can't believe it happens in any large place, and those people will certainly learn how to set their browser locale.

Much more likely is that people will get a computer on a different variant of their language, like many countries in Africa that get computers set for the European variants of their language, so ignoring the variant may make some sense. But still it would make much more sense to not ignore the variant, and let people change it on your interface.

> "it is computationally expensive to read Accept-Language vs geoIP"

The cost difference is included on the page processing already... and in your firewall, and in your HA proxy, it's so cheap that every node on the path pays it just in case you want it for something.

> "obviously companies know what they're doing here"

Oh, sure.


Minor pet peeve of mine: Some websites put the language selector on the bottom of the page.

I usually first look it up on the top right. Then I go back to editing to URL before scrolling all the way down. (And hoping it doesn't use infinite scrolling...)


Nintendo is the one that bothers me the most. Their website defaults to your local language and if you switch they throw up a huge overlay warning that your language doesn't match your location and wouldn't you rather switch back?


"A much better way (and probably easier) is to use the user's browser/system language. That's the language I want to read on 99% of the time. Otherwise, why would I have my machine in that language? And if it's not, I will change it myself."

I would disagree with this and propose a clear choice. Many people speak 2 or 3 languages. The only reason my browser / OS is in English is because it's easier to troubleshoot or Google error messages that way. Just a bigger pool this fish in for answers.

A little flag in the top corner is best.


I recently launched a belgian beer shop.

The way i thought it was best:

- Give users the option to change

- If the main user browser language is different than the current one, suggest it more on top:

https://www.belgianbrewed.com/nl - will suggest english for the majority here.

[Screenshot] https://gyazo.com/0372490df1b033ac42c8cb7aa3a4198b

My entry page is google. So if they find something in English, i suppose they want the english site.

If they don't, i give them the option to change it to the most obvious "supported" option.

I do redirect them to the main page, so they see an overview of the shop. Showing them the translated (current) page is not a priority (right now)

PS. Google has the option for /ncr . They obviously forgot the use-case where my proxy of work redirects to Paris.

PS2. /ncr changed to https://www.google.com/?gws_rd=cr&safe=active&ssui=on => No Country Redirect.


My suggestions:

* Make the "continue in English" button easier to find. It does not stand out visually, and I had to search for it.

* In the languages dropdown, use the native name for each language (e.g. français, deutsch, English, Nederlands) instead of the Dutch name for all of them.


Could be worse....every few months, my corporate VPN decides I am at HQ in Switzerland, even though I am still in the US. Ich spreche kein Deutsch.


Microsoft Visio set itself to English on my computer even though its (Microsoft Windows) system language was set to German. The reason? It didn't recognise the region-specific language setting "German (Austria)". There was no way of setting or changing the program language other than reinstalling the whole thing with a different system language set.


What should I do if I have different markets? Should I translate all the markets to all languages?

In my experience, the problem is different. Company X does not want to translate into different languages, different markets. For example: Apple, Microsoft, Samsung. Amazon video. If you want to see German available products or prices, it have to be in German.


I am living in Belgium exactly on the linguistic border. My side of the road is French, the other size is Dutch. Almost all Belgium web sites are in Dutch and google ads keep showing me ads in Dutch that are irrelevant. I try to train google ads but there is no option to say don't show me ads with this language...


It could be much worse. I for one often get web sites open in French...


Same thing here. I'm in Flemish Brabant, very close to the Antwerp border. Google Maps geoip puts me even more north. I have an English browser and OS (granted, with some Belgian regional settings). Yet a lot of web sites choose to show their French version as default.

And to top it off the language switch is often hidden away in some bottom corner so it takes you way too long to find it.

Give me back my old internet!


> That's the language I want to read on 99% of the time. Otherwise, why would I have my machine in that language?

In the era of Windows 7 and before. Maybe Windows 8 - don't remember when it changed, BUT someone at Microsoft considered localization a premium feature of Windows Ultimate. What a "great" idea.

End result in our small country? Understand you English or not, but that was the version on majority of PCs sold on retail stores and used at home. The other part of the issue is techies don't love localized Windows here. But even if it did, it costs you money no-one will be spending to switch that language for their Mom/Dad/Uncle/... or myself.

Luckily Windows lets you set Country or region apps should use. Don't know if browser takes data from that setting or not.


Related: if you're going to use location, then use the location my browser gives you¹ rather than pulling something out of your ass based on my IP address, especially if you're trying to sell me something. My ISP spans the country, and if you insist my ‘local store’ is 2000 miles away — well, I'll shop somewhere closer.

¹ Firefox: config setting geo.provider.network.url returns JSON in the form of https://ichnaea.readthedocs.io/en/latest/api/geolocate.html#... — e.g. set the config value to: data:application/json,{"location":{"lat":43.5,"lng":-80.5},"accuracy":1000}


Question: When is it appropriate, or not, to use language negotiation?

Answer: The short answer is: always.

https://www.w3.org/International/questions/qa-when-lang-neg


Absolutely. Not only stop showing me cyrillic letters when I click on a clearly english page; but also please bear in mind that sometimes you cannot guess which language is correct. Some countries have troubles identifying even their own language, like mine.


I've always been annoyed at this too, especially when I was using a VPN with an exit node in Finland even though I don't speak Finnish myself.

I've asked localisation experts about this and the answer I've gotten is that `Accept-Langauge` and other signals that are available to provide a hint as to the user's preferred language are teribble. For most people they are incorrectly set to some form of English(en-US, en-GB) even though this is not what the user wants. For this reason the IP/geolocation method is preferred, it also generates false negatives but per the people I've spoken too they are fewer than if you just respect `Accept-Language`.


> For most people they are incorrectly set to some form of English(en-US, en-GB) even though this is not what the user wants.

This stopped being true a long time ago. It was once a problem, but not during the last decade, and certainly not now.


If that's the case I guess the industry has not caught up. I had these conversations about 4 years ago FWIW


Ironically just below the article is this "helpful" hint:

> Sore eyes? Go to the "misc" section of your settings and select night theme

If only there were some built in way for browsers to tell sites that user's want dark themes. If only...


By the way, it also is important to distinguish between the preferred language for the UI, the preferred language of the content, the preferred localization (geographical relevance) of content, the preferred currency etc.


Perhaps for some of these websites, this annoying design is helping improve monetization? Perhaps the users being inconvenience by this design is only a small minority and what they perceive of as a flaw could be the result of A/B testing with increasing profit as a goal?

Alternatively, some website consultant/'expert' is charging by the hour and adding this 'features' is a way for them to charge more?

Or, some technically clueless manager is asking the consultant why the website is not showing up in the local language when it is his browser that is misconfigured?


From a UX perspective, what is the best way to indicate a user can change the language on a website? I see websites using the globe icon a lot.

But what I see more, is; websites translating "change language" into the language the website is currently in. How does this even make any sense, if your website is in German, the people who would want to change the language most likely don't speak German. So why is the "change language" link translated in German?


Depending on your website market you also shouldn't set language based on browser preferences, but should be user selectable.

I've spent years working with desktops builds from US-based IT teams that have then been deployed globally (so language is US and paper size is letter). And then access control is added over the top to prevent end-users changing those settings because when they get it wrong it causes excessive support calls.


Yandex Browser has been serving me up random websites in Russian for years now. I don't know what algorithm it's using to do so. My system language, browser language and Yandex profile language are all set to UK English and I'm located in the UK. So it's quite a feat of getting it completely wrong, for the browser to still think I might want to see the Russian versions of so many sites!


If you go to http://myhttpheader.com/ and look at 'Accept Language' what value does it give? On Firefox I get `en-GB,en;q=0.5`. Maybe Yandex is serving up ru-ru to websites


Nope. Accept language[s]are as expected:

en-GB,en;q=0.9,ga;q=0.8,es;q=0.7

I could be wrong. This is a complete guess, but my suspicion is that Yandex Browser is doing some very lazy checking of a user's language preferences and defaults to Russian if the visited site is not available in the user's preferred language[s]and user hasn't got 'en-US' defined as a fallback.

[My language preference are set to: English UK > Irish > Spanish > English]


This also applies to currencies. I'd rather have a popup modal that tells me I can choose another currency later. By default leave it set to USD.


Yes, please. I don't mind even if you set it it by location, but at least provide me a way to change it manually. I live in a north African country, but I get the currency set to south Africa (looking at you origin) without the ability to override!


Not being able to override it part sounds intentional since those stores has regional prices and they don't want people to change currency/region easily.


Surprisingly many sites also change the content and layout of the site completely. Nvidia for instance turns from a site with company news and a clear path to download your drivers on the US site, to essentially an online store as it defaults to Swedish. The link to download drivers is then moved from the top of the site to the very bottom, where a link to the UK download site is discretely placed.


Some websites (Mozilla) doesn't even show a language change option on all of their deep link, which is annoying on a whole new level.


On the other side of the coin: Don't try to guess the user's location based on the browser's language preference.

It's not as common, but plenty of e-commerce type sites try to redirect me to their site for a country that's on an entirely different continent, based on my browser being set for a language that's spoken plenty of other places, too.


Completely agree! I run ProtonVPN pretty much at all times and they have the option to simply connect to the fastest server. Often it happens that it is from a country I don't speak the language to so I hate when sites automatically show me that language. I understand the idea but there are better ways of doing this.


I guess this begs the question of why this is so widespread?

Is it common for users to have the language preferences of their browsers misconfigured?

If so then I can see why this is common practice.

If not then we should stop using the users' location.

Are there any stats anywhere on how likely a user is to have their language preference configured in their browser / OS correctly?


My feeling is that it's very rare for people to configure their preferred language in the browser. It's a setting buried somewhere in the menus, and anecdotally I would say most people don't even know such a setting exists. I suspect that, for the vast majority of people, their preferred language list is the default, which is then one entry, the same as the browser's UI language.


> Is it common for users to have the language preferences of their browsers misconfigured?

At the last millennium it was. Just like some people are still complaining that HTTPS is too CPU intensive, because it used to require a visible share of the cycles of a 486.


The site shouldn't even bloody know my location. Most of the time geolocation seems to completely cock it up anyway because it thinks an IP is based somewhere when it's not.

Google like to think I'm Arabic at the moment, bouncing around various Middle Eastern countries. Google Maps sends me to the UAE right now. Y tho?


I did a writeup about this 3 years ago: https://news.ycombinator.com/item?id=14175238 ... I thought "ok, that's it! Things will change now! done and done!" well ok, alright, I only fantasized it...


Belgian here. This has gotten considerably better over the years. 10-15 years ago, it felt like every website threw a 2-sided dice to decide between Dutch and French. Even though I'm in the Dutch-speaking part, and not particularly close to the French-speaking part (for Belgian standards).


Still happens. Even worse, there are sites that still think French is the only language in Belgium. Sometimes they offer French and English for Belgium, even though they do have a Dutch-language site if you choose the Netherlands instead of Belgium. I don't understand where they get their info on languages in Belgium.

For those who don't know: in a long gone past, any official business in Belgium was done in French, even though about half of the population spoke Dutch. But that's long gone, and certainly dates from long before the rise of the world wide web. These days we have three official languages: Dutch, spoken by about 40% of the population; French, about 40%; German, less than 1%.

EDIT: Example: Nvidia's site. Opens in French for me, and the "Select your location" page has only "Belgique (Belgium)" for Belgium, which links to a site in French. For our Dutch neighbors in the Netherlands they do have a site in Dutch. I don't even understand why they don't just offer a language choice instead of a location/language choice. The specs and drivers for a video card are the same whether the card is in Belgium or in the USA or anywhere else.


> 2-sided dice

A coin?


If this affected the language only. I had a creditcarma US account. But when in Canada, they automatically redirect you to creditcarma canada, which has a completely different user database. So there was no way to log into my account, apart from using a VPN and selecting a US IP address.


This makes me wonder if Quebec uses the comma as a decimal separator as in France? That could yield to some serious mishaps.


Ugh... (that's the most I can add :)


When I access Google News, I get it in Norwegian, with news from Norway, even though I live in Denmark (they don't support Danish news). I use a browser with English language settings. I'm interested in getting world news, not something country specific.


Don't assume any language based on your location. It's a personal preference whatever language you want to use, please respect and allow for me to use the language I am comfortable with.

There is only so much EXCEL formula translation I can cope with pr. week.


What's worse is Facebook's automatic translations of things you post in a different language. Depending on language, the quality is terrible. And if language X is translated into language Z, bypassing English, it's usually even worse.


I'm from El Salvador and our country ISO code is "sv" which some websites confuse for the ISO language code for Swedish (Svenska) "sv".

It took Spotify a long time to fix that! MSN/Microsoft used to have that issue too.


Related:

Android and iOS, change your spell checkers to accept multiple languages in the same phrase. Lots of people mix English with their native language, and how about, say, Belgium where they speak 3-4 languages regularly?


It's worse when the language is only in half of the interface. I often see sites in "spanglish" and that "language" never fails to make me want to tear my eyes out.


aliexpress had the worst version I had ever seen. I clicked on a link to the French site and got the french version, then I tried to find a way to switch it, saw nothing (couldnt access the footer due to infinite scroll) so I went to the .com version and it was still in french. Cleared my cookies for that site and it was STILL in french for the main page on the .com domain. No idea _what_ they were doing, must have been browser fingerprinting or saving it by IP address. I was not logged in.


nvidia.com always lands me on their french homepage even though I speak Dutch, live in the Dutch speaking part of my country and have my browser preferred language set to English.


Site language while I'm there is one thing but Czech language adverts followed me around for quite a while after I came back home after a few day trip to Czech Republic.


Food Network is also horrible at this. You try to go to a .com URL and it forces you to .co.uk, where the page doesn't even exist, so you get a 404 instead!


Yes Completely agree. I live in India - we have 30 + languages. I speak and read 3 of them.. So most of the time when sites try this, I am struggling.


Also love those Chinese e-commerce websites that use automated translations based on location for every text on their website, even on product names...


Especially if you think that just because Swisscom routes my traffic from Lausanne through Zurich that I speak German, damn it.


*looks confused at this while living in Switzerland as a foreigner.


Yes and no.

I’m in Switzerland, please follow my browser language. Don’t guess whether I speak Swiss, French, Italian, etc

I’m in Laos, my OS is in English. Please show me Laotian.

However, do make it easy for anyone to change the language. I shouldn’t have to hunt the settings page when traveling.


Why would you want to see Laotian?

Agree with the op. Not only do I regularly struggle with location-based internationalization, sometimes I can't even /see/ pages depending on location. Tried to find the product page for new google ear buds thing (in Korea) and they refuse to even display it. Of course, setting up local ssh tunnel to ec2 machine based in US takes < 60sec but it's still annoying.


> Why would you want to see Laotian?

Statistically speaking, Laotian users speak Laotian. As a traveler, I’m the minority.

Regarding the rest, I feel you. They can guess whatever language as long as they make it easy to change it, without unnecessary redirection games.

Apple.com is relatively good with this:

> Hey I see you’re in Thailand, maybe you want to check out the Thai site.


I thought you were suggesting that you would prefer to see Laotian despite OS/browser language settings, nvm


Exactly, there isn't really a right answer.

In my case: I want Danish, if and only IF the site is a Danish website. If you're not a Danish website, I would like English, even though a Danish version may be available.

Of cause that bad advise for many sites, because basically my request is that sites like Linkedin or Facebook just drops localization, but that's not what my mom wants.


Foreigner living abroad, can confirm this sucks.


software UX suffering doesn't nearly enough translate to software developers' suffering.


Oh, it translates into software developers' suffering, it just doesn't translate into project managers' suffering.


This, and currency too.


True


God yes.. in particular Google is horrible with this. They have the interface language and the search language as different setting, both default to German if you're in Germany. Have you tried using German google? It's abysmal. Try googling for Any piece of open source Software. You'll end up at a third party clickbait website that offers an infested download (often chip.de). That's why many Germans end up with horribly infected PCs.


Chip.de is a reputable site. I see your argument for going tonthe primary source of a software and this is what I always try to do. But I don't get your hate. They don't repackage things the way Sourceforge tried to or anything like that. So all the downloads I made from their site were maybe outdated, but they were all genuine.


I stand corrected if that changed. I definitely remember that they offered some own binary downloader in the past (might have been a decade though). SEE EDIT

At the very least they should not be the first hit if you search for the program name. I don't get how that could possibly change with language selection.

edit: Inkscape results in a "Inkscape - CHIP-Installer.exe" download with my antimalware immediately sprinting to my rescue.


Whoa, I cannot reproduce that. I don't doubt your report, but I see a completely different behavior.

When I want to download Inkscape for Windows, I get a zip file. When I download GIMP for Windows, I seem to get a genuine installer with the same size and filename as what is offered on gimp.org. I didn't download these files on Windows, though.


I can reproduce this easily.

I went to their website[1], and clicked the prominent Download button[2]. Next to that button it says "Sicherer Download" (secure download). The executable file downloaded is not the original installer but the a binary with their chip icon and signed by Chip GmbH.

Running that "installer" then asked me if I wanted an amazon desktop icon (with their affiliate link in it, I am sure), and clicking just Next asked me again if I wanted it because I "did not make a selection". Then it offered to "block annoying ads" (the irony!) by installing Opera (again asking me again when I clicked next).

Then it finally downloaded something. Says that something was checked by Kaspersky. The download progress screen also asked me if my PC was slow, and if I wanted to call some "free" number to have experts check my computer for free(!) (via Teamviewer or telephone, wat). And if I did call those experts, I'd even get a free McAfee license! (what do Kaspersky, who scanned the download, think about that?). The "free" number is actually a number somewhere in Frankfurt am Main, so it's not actually toll free as far as I can tell; if I am correct, this would be a direct violation of German law which states that ads giving you a number to call have to correctly state the charges associated with a call.

I eventually ended up with a .zip file that contains the actual Inkscape installer. Or rather installers; it contained both the 32 bit and 64 bit installers. Those installers are not launched automatically by the way. So the usual "unsavvy" user will end up with two files in a zip with no idea what to do next. So the Chip "installer" is just for displaying those ads, pushing their crapware, but will not actually help you install the software you wanted.

Here are some screenshots https://imgur.com/a/tyIopku .

And rather on-topic it displayed the UI as a mix of English and German because I was using an English language Windows Sandbox...

If you just want the zip without the adware "installer", you have to click the regular "Manuelle Installation" link (far less prominently featured than the crapware button), then again click something, and then it will download the same zip without the "installer".

[1] https://www.chip.de/downloads/Inkscape_15274752.html

[2] https://i.imgur.com/Bn2GU3A.png

[3] https://imgur.com/a/tyIopku


Okay, everything in your lengthy post was exactly NOT what I was seeing. And I finally figured out the reason for it: the site behaves completely differently if it doesn't think the browser accessing it is running on Windows. Then you get the actual installers for download. But if it DOES think you're running windows, the site hands out the wrapper executable. My guess is that the wrapper only works on Windows and they don't want to appear broken for users on other operating systems.


The irony of adware asking you to install a different browser to block ads.


[flagged]


Haha, maybe were all hoping other devs will notice and remember next time this comes up?


I think there is enough collective whining on the internet that this little impromptu choir is going to get drowned out...


This is only a good suggestion if all the other people in Germany that want German content have their browser languages correctly configured.

My guess is that they don’t, and this fix would hurt more users than it helps.


Why wouldn't people have their language set correctly? Usually your browser language defaults to your system language, and presumably when you bought your computer, you selected your preferred language during the initial setup. If you had your browser set incorrectly, you would probably have dealt with that problem immediately when you saw all the menus and such in an unfamiliar language.

Perhaps some multilingual users might have one of their secondary language(s) set instead of their primary/preferred one, but at least it'll be a language they speak.

More importantly, even if the user has their browser screwed up, it's something that can be easily fixed on their end. But on sites that set language based on location, there isn't such an easy fix available; short of relocating or using a VPN, people in OP's situation are kinda screwed.


I don't run a German website, so I can't give you exact numbers, but in my experience, software can often default to something like 'en-US' in a variety of cases where you might not expect it to.

This is especially common in poorly localized tools. For example, a poorly implemented browser component inside some other tool or phone app might not properly set this value, and instead default to en-US.

Switching to the proposed method might fix the author's problem, but create a bunch of problems for other users in other scenarios.


Why wouldn’t Germans have their “browser languages configured correctly?”

German is well supported by software. If Germans want German content, they’ll have their OS set to use German.

Filipinos on the other hand would be a better example: Their software is likely to be in English but surely they prefer reading Tagalog or Cebuano.

- -

As a traveler, I’m thoroughly annoyed by being shown websites in the local language, but that would be perfectly fine if it was easy for me to change the language.

Sadly though changing the language often means having to learn what “Settings, Language, <language name>” looks like in the current country.


I don't run a German website, so I can't give you exact numbers, but in my experience, software can often default to something like 'en-US' in a variety of cases where you might not expect it to. This is especially common in poorly localized tools. For example, a poorly implemented browser component inside some other tool or phone app might not properly set this value, and instead default to en-US.

Switching to the proposed method might fix the author's problem, but create a bunch of problems for other users in other scenarios.


Not sure about German-speaking countries, but in Francophone countries, everything is in French. Even if the default is English, the user would insist on switching to the French version.


He's missing the why they're doing this.

Tons of websites are server-rendered, which means the decision of which language to show has to be made upfront: at the time of the first HTTP request, so before sending the page to the user. And we don't know the user's language preferences until we reach the browser and can execute some JavaScript. If we do as he suggest, it would paradoxically lead to the very behavior he is criticizing in the post: page loads default (e.g english), (then reads user preferences with JS, e.g german), then reloads to show german instead.

So why pre-populating the page with the langage the users in that particular country are most likely to wanna use a bad 'default'? Would it be worth it to rather worsen their experience by forcing all german users to load english first, and then repaint the page with german?

I think only SPAs could afford to implement the whole thing based on user local preferences without major UX drawbacks.


> we don't know the user's language preferences until we reach the browser and can execute some JavaScript

This is untrue: the HTTP "Accept-Language" header tells the server what language the browser wants to get, right before any request get served. There is no need for Javascript.


Alright, fair enough


Your browser sends an accept-language request header so JavaScript isn't needed to determine the wanted language.

My browser sends "en-GB" in this header but Google always defaults to Chinese because I am using a Hong Kong IP.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: