Not accepting Accept-Language is one of my major pet peeves. What makes it worse is that many multilingual websites translate their language-switching buttons and the list of languages to the current language .... which is beyond fucking stupid and defeats the purpose. Wikipedia does this right. The button to switch languages is clear, using a universal multilanguage icon, and a list of languages (using the name of the language in that same language) in alphabetical order, with the most likely candidates on the top (presumably based on geoip).
E.g. an English Wikipedia page will present me with the following language suggestions:
Suggested languages
Deutsch
Français
Nederlands
When you assume a language, you make an ass of you and of me. Don't be an ass. Be like Wikipedia.
I also hate the youtube "feature" that translates the titles of videos to your setting's language. This is so annoying. I can understand English and don't need these automatic translations.
So much this. I also hate the implicit assumption that everyone understands just one language that's baked into this kind of design. I can comfortably read in four languages, and naturally prefer the original language to (typically) bad localization. So your guess at what language I would prefer based on my IP is virtually guaranteed to be wrong. Seriously, just look at what languages I'm already telling you work for me. There's no reason to assume I'm not smart enough to correctly configure my browser's language settings.
It gets even worse with YouTube and their awful AI dubbing that's always on by default. So now for solidly half the videos I watch, I need to (1) open it, (2) click through the settings to turn off the AI dubbing, and then (3) rewind back to the beginning and start over. It doesn't take a lot of time, but it's incredibly annoying.
My biggest annoyance is with Google. They know who I am, they know I am traveling, they know my language preferences (English) and yet I still get language based on my location on certain pages.
I let you track me Google, please use it for some good UX and not just advertising.
Much more importantly: Never ever auto-translate content to the user's language.
Present what languages you actually have the data in. The user is smart enough to click the "translate" button in the web browser should they want. That translation is also likely to be better quality.
English is not my first language. Or my second. But I understand it well enough to work in it every day. And I never ever want to wade through auto-translated garbage just to find the right button to read the original English version. Because for some reason this is only a problem for English, web sites using other locales never do it, which should be indication enough that international visitors hate it.
If you ever think about using machine translation tools for you web site, first you must do a full translation round trip for every language before publishing. Translate, paste back the result and translate back. That is roughly what you intended to publish. Don't do it.
> Every browser sends an Accept-Language header. It tells you what language the user prefers, not based on location, not based on IP, based on their OS or browser config. And yes, users can tweak it if they care enough.
This is also a broken assumption.
First, Accept-Language is an ordered list, and most daily-multilingual people don't have an absolute order of preference, and more a topical list of preferences.
If I read an English news site that has a translated French version, it doesn't matter if I'm most proficient in French, I'll want the English version.
Then, as an affect of the first point, users will specify their most practical language, not some actual preference. For instance local non-English sites tend to do less shenanigans than international English ones, so having one's language set as English only will force English display for the former, with few impact on most other sites.
A French site ignoring all preferences and just pushing the French version by default actually helps in that case.
If anything, I just wish site owners stopped trying to be cute or clever and just had a very obvious and quick interface to switch to other versions. Wikipedia does it decently well for instance.
I worked on a project where I was responsible for implementing accessibility and multiple language support for a government adjacent site. I used Accept-Language to decide which of our supported languages to use as the default. The PM over-ruled that decision and forced a EN default.
The accessibility auditor put "use Accept-Language" into they audit report as a "red" item and then ripped the company a new one when they found out it had been initially implemented that way but then reverted.
I got another couple of weeks of contract work for this and other such stupidity.
Seems this is a free-for-all to drop language gripes, so here's mine about Apple TV.
Have a family member who only speaks Japanese. My Apple account is in Finland. We wanted to watch The Martian together, but can't select Japanese dub even though that audio track definitely exists. They just don't show you the options not relevant to your account country, and the only way around is to change your whole Apple account to a new country.
Which you cannot do while you have an active Apple TV subscription.
I have told the story here before, but I built a neat little system to parse Accept-Language weighing the users priorities and using the closest thing we have on offer to the users preferences. As an example, we have a Brazilian Portuguese translation but not Portugal Portuguese, so we would offer the prior to users requesting the latter for instance unless they had a lower priority but more exact match.
From my technical standpoint it worked really well and the code was very slick. It was a lot of fun to build.
From a user standpoint most of our users really just wanted English regardless of their Accept-Language header. They had the option to change it in the footer but this apparently wasn't obvious enough.
It's entirely ridiculous when you're abroad. Also annoying when in your home country, but the localized versions are not equivalent like e.g. programming documentation. Even in the ideal case you'd probably prefer the English original, but often they're machine-translated anyway and much worse.
Another extremely annoying thing I've noticed more often now are machine-translated versions of content in the search results. Reddit for example does this now, and it's just terrible. One of the main reasons I use non-English search terms is to get non-English results, e.g. because I'm looking for information on topics that is not globally applicable.
I really wish for a language setting that says: If the original text is in one of the following languages, use the original text. I might not be equally fluent in all of those languages, but reading the original text is better than reading a translation most of the time.
Yeah, this is has become of pet peeve of mine since moving to Spain. US sites that automatically redirect me to their Spanish site (which often doesn't have the actual article the original link pointed to!)
As much as I agree Accept language should be enough, the problem is that English is the default value, so if it's default it's likely to be wrong so I understand guessing because most people don't know you can tell the browser what language you want to use. Partly to blame is also the websites that don't have other languages can't respect the header anyway. I've had plenty of users complain about localization issues and I have to explain that they can just tell the browser what language and region to use.
One of the many, many tedious things about the modern globe-spanning internet, used by hundreds of millions of people who regularly travel far and wide, is this bizarre, stupid forced algorithmic balkanization in which you're pigeonholed right into either being denied access to certain content based on your location, or having your supposed language tendencies modified by default.
I'm not sure what the purpose of this idiocy is. Is it a dark pattern of some kind? Or is it just so hard for grey, cubicle-dwelling functionaries at companies that are themselves often very international to set systems for leaving one's language defaults static unless otherwise adjusted by said site user?
If you're already tracking me and every single one of my digital activities through my devices, then at least give me some modicum of convenience from all the bother.
While others have expressed sentiments about YouTube and Google, let me tell you what I really hate - translated reddit posts.
They're polluting search results and it's the ultimate disrespect against multi-lingual users... it's made my life hell when trying to find localized information (for example, in Portuguese), when my computer is set to Portuguese but I'm searching in English.
Before we even get as far as the wrong language being chosen; The GeoIP databases are rarely even up to date so they've got you in the wrong location to begin with.
I've been on static IPs for a decade or so; my last home's static IP was regularly Geo-located to Romania, the next one to the Netherlands, and sometimes even further afield; I'm in the UK.
I started to have a heart attack just yesterday because Zenarmor on my OPNSense box was suggesting that a particular device was sending traffic to a region it has no business sending traffic to; turns out the DB is just wrong and a quick search indicated it actually (currently) belongs to the UK.
In a separate incident (also yesterday, as I then got into investigative mode), I installed Rethink on my phone, which suggested, yet again, that devices (including my phone itself) were sending traffic to places they shouldn't be; again, false alarm, turns out they were all UK IPs, one of which being my own static IP which was being wrongly attributed to another region.
If this part of locating the IP can't even universally be done correctly; why on earth is anyone even considering trying to use it to guess a person's language.
EDIT: The result of these issues, particularly with my home IPs usually manifests in certain sites displaying in languages and with currencies neither I nor my family speak/read or understand, for me I'm used to it and will look for where/how to change the language/currency, but for my wife and kids it's just confusing.
Here is one big reason some sites do geolocation nevertheless: pricing and legal. Does not matter what language you speak - they still have to look up proper prices in your local currency and offer you country or region-specific deals and legal language. E.g. in Canada Quebec limits what kind of sales or raffles you can offer so websites prepare different site copy. Yes, there are French speaking people outside Quebec and English speaking people in Quebec, but company may not have resources and time to prepare 4 copies instead of 2.
Why oh why does Google Maps think that "miles", "feet", and "yards" are words that have any meaning at all?
Only like a 20th of the world even knows what these obscure things are. Just because I'm currently located in a country that nominally uses these arcane units doesn't mean that I know what they are.
Oh you can change it to real units temporarily. But if you look away for a split second it changes it right back.
Going one step further: do not guess my regional preferences from my language. I want to have an American English UI but use little-endian dates, whitespace and comma as thousands and decimal separators, ISO week numbers in calendars (with Monday being the first day of the week), and metric units. I want English subtitles, but not ones meant for the hearing impaired.
This is a real pain in the ass in Belgium. Many websites assume I speak French while my native language is Dutch. Some websites only offer a French version of their Belgian storefront, even though Dutch accounts for ~60% of Belgians. I can't imagine what it's like for German-speaking Belgians.
This is not only an issue on websites but also on apps. For example, the Books and Podcasts apps on iOS show me both Dutch-speaking and French-speaking titles. I tried to raise this issue back when I worked at Apple but they only have 1 storefront per country and didn't feel like changing it.
Also: don't guess shipping options or other stuff based on my browser's language!
My computers are all set to English even though I'm a German living in Germany, and I absolutely hate it when local business websites give me the "we don't ship abroad, sorry" just because of my browser's language settings.
I don't understand why Google, of all sites, picks your language based on your IP. It ignores not only Accept-Language, but my Google Language settings as well. Their language handling seems to be getting worse over time. Not to mention the long-gone days where you could go to google.co.uk to get UK content.
Can we also stop tying e-commerce languages to the commercial zones?
Yes, I want my HPE or Dell or FS.com website to be in English but still get the French catalog and warehouses and VAT. Especially for tech, where the lingua franca of english goes so deep that most people don't bother to translate technical terms to their native language. Heck, I don't know most of those in french!
And also make it easy on the site to change languages. Just because my OS is in US English, doesn't mean that I don't prefer certain sites to be in other languages when I choose to. Many of us are multilingual.
I think this is a case where it is unfortunate that the biggest players are from the USA, because they are notoriously mono-lingual and cannot fathom what it means to know more than one language.
If they did understand, no site would ever propose you an automatic translation into your primary language over the original text written in any other of the languages you can read.
This was the bane of my existence when I lived in Uruguay! Despite having the Accept-Language header set permanently to en_US, Google would constantly reset my UI language to Spanish, despite being logged in and having the account language set to English.
The worst offender was eBay which would machine-translate listings from English to Spanish.
> No, “but the big websites do it” doesn’t make it right.
Also, it's only partially true, e.g. Amazon doesn't force the language at all, and while it presumes the country of delivery (which makes perfect sense as not all products are available everywhere), it explicitly nags me about it so I can change it with one click.
It's easy to make Django react to "Accept-Language" headers, I love how the LocaleMiddleware supports it out of the box [1]. I implemented automatic language detection to show either German or English content and was surprised how many users hated it. We're located in Germany but a lot of people have their browser set to English for some reason, yet they still expect to see pages in German. Of course I had provided an explicit language switch but many users did not like the site guessing their language.
As someone who lives in Spain, but prefers to browse the web in English and has all my computing stuff setup in English, good look convincing the world to change this :) It's been utterly broken for as long as I can remember (back when I had a 56k modem) and it'll probably remain so.
It's a uphill battle where you cannot convince others, so the best thing you can do is figure out how to adjust your own setup to make it less of a hassle.
> Do it right or don’t do it at all.
I'm fairly sure we wouldn't have the internet nor the web if everyone thought like this. I personally also strive for making things as good, right and correct as possible, but obviously I cannot force others to think alike, especially for-profit businesses that don't really care about "correct", only about "good enough".
What's really annoying is when it sets the script to the local language which could be something like telugu, and then the writing is unreadable if you can only read the latin alphabet.
And then the 'change language' menu is rendered in the unreadable script.
In Switzerland pretty much all sites have a setting for French, German, Italian and often English. It is very much a multi-language country.
It is great to be able to select individually per site. I often like to use the native French and just drop back to English if its technical language.
I do find that every site has the setting in a different place which is annoying, it would be great to be able to select it in a standard place on the browser.
The worst offenders are the single language per country sites. For example Ebay insists on only using German in Switzerland, which is rather frustrating since I only know English and French so far.
In India, if you don’t know the user’s language precisely - just default to English which is the only business link language. Using an alien language like Hindi to non Hindi speakers will backfire badly.
I live in Finland where they have two native languages: Finnish & Swedish. In a lot of places you'll see both the Finnish & Swedish place name on road signs. Without getting into politics, it's a good assumption to assume that Finnish is the mother-tongue of most of the population - with some areas having Swedish as their native language but also perfectly capable of speaking Finnish fluently.
I have my phone's language set to English as a native English speaker. Google maps reads me the Swedish road signs, in English.
I hate that this is a thing on physical products aswell. Panasonic being the latest offender by "supporting" my language. Then, when opening the safety instructions for the machine it reads grammatically correct but materially incorrect advice. Someone not following through with enough critical thinking could end up killing themselves.
Reading up on the english version it becomes clear it was machine-translated with zero persion checking on if any of it was proper.
It is particularly annoying with Google. They recently forced results translations, which are of extremely bad quality. So, even if I'm searching for computer science topics or machine learning (where I'm only interested in English results) they insist that I must speak spanish and read useless translations.
I ended up switching to Bing just because this issue. Google is absolutely useless for me now.
Every couple months, Facebook's web interface glitches out and displays the geolocation-based language instead of my preferred language in parts of the UI.
I don't know how that happens. Like, do individual teams within Meta have to re-learn that users in their own system have a language preference? (Not even talking about Accept-Language, it's a Facebook user setting.)
The most useless thing Google Maps does on my US-localized phone here in Germany: literally translates the proper names of businesses. For example, listing Stoff Bauer as "Fabric Farmer" in the results when I search for "Stoff" - the reverse of helpful (Bauer is a very common German surname, but also literally means "farmer").
This reminds me of AliExpress that constantly corrupt its language (but not country) preference by randomly serving me a foreign language not in my Accept-Language list.
Language determination should be, by decreasing order of preference:
1. URL param (temporary override)
2. Cookie (optional, set by a flag image list drop-down conflating country with language)
3. Accept-Language (prefix) (optional)
4. GeoIP (guessing at conflating language with country by demographics as a starting point)
Country, by decreasing order of preference (for pricing, shipping, legal, regional content):
1. URL param (temporary override)
2. Cookie (optional, set by a shipping address or preferred region preference)
3. Location (optional)
4. Accept-Language (suffix) (optional)
5. GeoIP (guessing at current location as the desired country of interest)
Note: It's important to make a default guess at the statistically most likely possibility to reduce the burden on the most users, but not prevent users in the US from using the site's French i18n.
Yeah I've worked with geolocation databases in the past and they're essentially just hot air. It's wild that even google can't guess my location anywhere close to home. And I live in a big german city, it wouldn't be that difficult to be right. But they've actually never been right about my location. Sketchy is a fitting description.
When we added translation features to our news site I went down this rabbit hole and wholly agree with the author. I checked what others were doing and very often there was this ip lookup happening, and then a redirect or other unnecessary behavior.
In our case, less is more. We decided to not do any of that, and were a bit paranoid that maybe we were going against a 'best practice' somehow?
All we do is look at navigator.language to get the language code:
and if we support that language then we will change the "Translate" button label to that language and default behavior to shortcut to that language version (you can still get the full list).
A sad example is Amazon Prime Video. 'I see you're from Belgium so I'll serve you a lott of films dubbed in French exclusively. My native tongue is Dutch, but I prefer watching films in their original version, not dubbed.
(Btw, my Prime sub is on the German Amazon, but they don't care. You're from Belgium so French it is)
Not just language. Some retailers' websites (e.g., Target, Home Depot) use IP geolocation to guess the nearest store to you. It'll even override your preferred store if you set it to the correct one earlier. If you're on a cellular connection, it's absolutely useless.
To anyone working in tech: stop trying to outsmart the user.
Once my Google suddenly turned into Hebrew (I'm Finnish so that was pretty wtf). It was around the 2023 Hamas attacks so I initially wondered if I'd been hacked by some pro-Israeli group. Soon I realized it only happened if I used my home network and then restarting my router to get a new IP fixed it.
Whenever I've visited Aliexpress (for cheap ESP32s of course) I seem to only get served the French version of the site despite having a UK based IP, UK language flags and actually telling the site to use the GB store. Next time I visit though it will display in French again.
I think there's some too down agenda to force people into bilingualism, big tech doesn't like how the internet of the 00s and 10s made many people polyglots that look behind their borders' information and media markets.
Here I am losing my mind. My phone’s set to Portuguese (EU), I live in the US, and somehow I get ads in German and Spanish, and news exclusively for Portugal. No ties to Germany at all. Just lost in some algorithm’s fever dream.
Accept-Language still cause quite a bit annoyance to me though. Because the fallback rule most implements still follows similar assumption as the first point in this article. Languages in the same group doesn't mean the user would accept it.
I don't care if there are any other auto-translated thing that you though it's close enough because they have same prefix that would help.
NO, absolutely NO.
I even specified the en-US or any other language that original content uses as the secondary candidates, then most just ignores it and serves randomly translated thing that you think would be close enough because you can't tell.
There's also a commercial argument here. If your website or app sells stuff, you might want to care about your audience and addressing them in their own language.
There are hundreds of millions of people around the world that aren't fluent in the local language of wherever they are. Many of them probably speak English. Quite a few of those are possibly not that poor either and have disposable income.
So, if your business is selling stuff online, you could do worse than serving up stuff in English when being informed by the Accept-Language header that that is a preferred language. It's not that hard.
Don't guess my anything. If you're not sure what I want, ask, or at best do nothing. You don't actually know what I want, and every time you decide you think you do, you make everything worse, not better.
Me: Visits Morroco (or pretty much any other country), has smartphone set to english.
Also me: Gets youtube ads in Berber language. Has no idea what the ad is about or why someone would pay google to show it to me.
Another annoying version of this is localized google results. I'm originally from country A, live in country B, but work in English, which is not the language of either place.
But google will then localize results to where I am, which typically deprioritizes English results because I'm not in an English speaking country.
You can set your google settings to act as if you're in the US permanently, but then googling anything local/regional will serve results aimed at people a continent away.
All this "guessing what the user wants" has become detrimental to actual UX.
> If you want to use GeoIP, fine — but only for currency, shipping, legal stuff
Possibly not even then. Shipping should depend on the address it's shipped to, not the IP. Currency, I prefer in your original currency. I don't want you to convert currency for me, because my bank does it cheaper.
And of course geoIP can be wrong because of VPNs. Only use it when other methods like user preference and `Accept-Language` or similar have failed, and make it easy for the user to correct your wrong assumptions.
Timely. I’m working on this right now for a product and have everything in place using the accept-language header and then adding a url param.
I’m currently agonizing about how to let the user change their language, because I want to respect locale as well (es-MX vs es-ES for example). And I haven’t found a good UX pattern for changing language+locale. I’ll likely just implement a big list that the user can select, and have the current language be a link that they can click to change via a modal.
One reason this happens: the product is slightly different in every country due to market and regulatory nuances. Therefore the source content is different in every country also. We are not going to push every (country, language) permutation through legal review. Therefore we have a few "Accept-Language" values we respect for each IP geolocation. If it's not on the list, you get the country's default.
Even Accept-Language isn't enough, although this probably falls under "respect it".
A lot of websites seem to assume if you have a non-English language in it, they should use that language, even if English has the highest score, because obviously it's your "real" language and English was just a default. E.g. `en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7` is read as "we should serve the Chinese version".
Google is the biggest offender. If you have had legitimate use cases where you browsed sites or routed your traffic via a Cloud VM at different locations (or if you're one of those rare people like me that use a damn VPN!) you probably already know this. I have to memorize 'accept' (to accept their ToS prompt each time) and figure out how to change the language.
I’m glad someone said this. As someone from Pakistan whose first language is Sindhi and who detests the imposition of Urdu as a ‘lingua franca,’ I find it very frustrating when Google forces Urdu on Gmail, YouTube, and Search.
It also flips the entire user interface to a right-to-left layout to match Urdu’s writing direction, which feels completely unfamiliar and disorienting to me.
I suspect that many people who deal with languages only speak English and never left the US. They have been told that other languages exist and that foreign countries exist, and they have to do something about it, and they did... something.
I remember a company I worked with used to have its internet connection go through German servers, even though it was in France. I remember the presentation page for one of Google's phone was in German with no way to have it in anything else. Using a ".fr" domain, "accept-language", logged into a French Google account, I also tried English too, no luck. I only managed to get some UI elements in something other than German, it felt like a troll. I wonder how the Swiss (a small country with 4 official languages) are doing.
In addition to the idea that the IP address is a pretty bad indicator of the language you speak, some websites have trouble with the idea that people can understand more than one language.
Hey, YouTube, I know I have set my account to French, but I understand English and you know it, so please don't auto-translate video titles for me and do a terrible job at it. And I don't want to set my account to English, because I guess it would translate French titles into English, which I want even less.
If language guessing is not ok, then why would currency and shipping guessing be ok? If you are VPN'd to Hong Kong and don't understand Chinese, how does it help to expect HKD payments?
Ideally a browser should ask for languages and country when being installed, in order to correctly fill the Accept-Language field. But that doesn't happen because it would introduce friction.
As a bilingual Portuguese/English speaker who essentially spends most of his waking hours working in English but switching back when I leave my home office, I have been very much annoyed by this since the dial-up days.
Infuriatingly, there was a train of thought at one time that used website analytics as a justification for either setting the default language of a site or trusting an external third-party like IP addresses databases (often just relying on the free, unmaintained stuff that broke after 3 months as the Internet expanded).
Then came the browser geolocation prompts, etc. -- and most people, lacking a basic understanding of how HTTP works, preferred chunks of JavaScript they could "see" to HTTP header information they didn't understand, to the point where that got codified as "best practice".
It also doesn't help that most CMS frameworks completely fail to make use of that information and pass it down the stack, or that people have turned to doing SPAs (which _can_ just use navigator.language, but just do a search in any framework's source code and see how often that is used).
More generally, if you've never dealt with foreign languages (for real, not just in school), don't assume anything about multilingual support. You'll get it wrong.
And while we're at it: Google, you know literally everything about my life. You know which languages I speak, which countries I live or have lived in.
So why is it impossible to find results relevant to country A, in country A's language, while browsing from country B, but with both languages A and B in my "Accept-Language", and me having lived in both A and B for years?
Why does the "languages I speak" setting on Google's search settings, which seems to be the only way to maybe make Google get the message, auto-reset at random all the time? How is using a VPN to get around this limitation a thing in 2025?
On a related note: whatever idiot started using keyboard language instead of system language for emoji autocompletion on certain MacOS and iOS Apps, please go die in hell somewhere... I have had this issue randomly pop up with the Telegram client I am using, and it infuriates me beyond belief. Every single setting on my machine indicates that the language I am using is English, why is the search text of emojis tied to the one setting I cannot reasonably change because it is tied to a physical property of my device and not the 4 settings I can and did change.
Could we also agree that bilingual (or more) people exist? I hate playing whack-a-mole with YouTube captions: Apparently me turning them off on English videos means I only speak English, so the next time I watch a German video, I'll have to turn off captions again, which apparently means I forgot English and only understand German.
I mean, doesn't Google have employees from multiple countries? Shouldn't diversity fix this in the sense that some bilingual person there notices this?
Linguistic nit: that's not what cargo cult means. Cargo cult refers to doing things that don't in themselves do anything, just because XYZ did them, in the mistaken belief that "showing signs of XYZ-ness" will lead to the same results that XYZ sees/produces.
Copying big-name-here's practice of localizing based on IP is not that. Copying "the way they comment the start of every file" would be. Or "using the same pep talk to the full company" would be. Actually using an approach that has both code that actually does something, and has an immediate and measurable effect on the user, isn't.
I mean, Google does it, and they employ some of the most brilliant people on the planet. Showing people their website in the wrong language is clearly losing them money, so minimizing that is a very direct way to increase profits. There must be some reason they rely on IP more than on Accept-Language. They don't leave money lying around, and there's no way Google engineers aren't aware of that header.
I don't know why they do it, but somehow Accept-Language must be less reliable than IP. No other explanation makes sense in this context.
> You don’t override screen resolution or color scheme with your own guess
They absolutely do lol.
Like it or not, people like you are outnumbered by people who set their Accept-Language header wrong and don't know how to fix it. Those people probably buy more too (or at least buy more that shows up in tracking, since you sound like the kind of person who disables cookies etc. too).
Don't guess my language
(vitonsky.net)661 points by e-topy 19 May 2025 | 365 comments
Comments
E.g. an English Wikipedia page will present me with the following language suggestions:
When you assume a language, you make an ass of you and of me. Don't be an ass. Be like Wikipedia.It gets even worse with YouTube and their awful AI dubbing that's always on by default. So now for solidly half the videos I watch, I need to (1) open it, (2) click through the settings to turn off the AI dubbing, and then (3) rewind back to the beginning and start over. It doesn't take a lot of time, but it's incredibly annoying.
I let you track me Google, please use it for some good UX and not just advertising.
Present what languages you actually have the data in. The user is smart enough to click the "translate" button in the web browser should they want. That translation is also likely to be better quality.
English is not my first language. Or my second. But I understand it well enough to work in it every day. And I never ever want to wade through auto-translated garbage just to find the right button to read the original English version. Because for some reason this is only a problem for English, web sites using other locales never do it, which should be indication enough that international visitors hate it.
If you ever think about using machine translation tools for you web site, first you must do a full translation round trip for every language before publishing. Translate, paste back the result and translate back. That is roughly what you intended to publish. Don't do it.
This is also a broken assumption.
First, Accept-Language is an ordered list, and most daily-multilingual people don't have an absolute order of preference, and more a topical list of preferences.
If I read an English news site that has a translated French version, it doesn't matter if I'm most proficient in French, I'll want the English version.
Then, as an affect of the first point, users will specify their most practical language, not some actual preference. For instance local non-English sites tend to do less shenanigans than international English ones, so having one's language set as English only will force English display for the former, with few impact on most other sites.
A French site ignoring all preferences and just pushing the French version by default actually helps in that case.
If anything, I just wish site owners stopped trying to be cute or clever and just had a very obvious and quick interface to switch to other versions. Wikipedia does it decently well for instance.
The accessibility auditor put "use Accept-Language" into they audit report as a "red" item and then ripped the company a new one when they found out it had been initially implemented that way but then reverted.
I got another couple of weeks of contract work for this and other such stupidity.
Have a family member who only speaks Japanese. My Apple account is in Finland. We wanted to watch The Martian together, but can't select Japanese dub even though that audio track definitely exists. They just don't show you the options not relevant to your account country, and the only way around is to change your whole Apple account to a new country.
Which you cannot do while you have an active Apple TV subscription.
End result: unable to watch Apple TV as a family.
From my technical standpoint it worked really well and the code was very slick. It was a lot of fun to build.
From a user standpoint most of our users really just wanted English regardless of their Accept-Language header. They had the option to change it in the footer but this apparently wasn't obvious enough.
We just ask now, and our users are happier.
Another extremely annoying thing I've noticed more often now are machine-translated versions of content in the search results. Reddit for example does this now, and it's just terrible. One of the main reasons I use non-English search terms is to get non-English results, e.g. because I'm looking for information on topics that is not globally applicable.
Your payment provider's automatic conversion is most likely more predatory than my bank's so I don't want to use it.
And even if you guess my location right, how do you know I want a badly/machine translated web site?
I'm not sure what the purpose of this idiocy is. Is it a dark pattern of some kind? Or is it just so hard for grey, cubicle-dwelling functionaries at companies that are themselves often very international to set systems for leaving one's language defaults static unless otherwise adjusted by said site user?
If you're already tracking me and every single one of my digital activities through my devices, then at least give me some modicum of convenience from all the bother.
They're polluting search results and it's the ultimate disrespect against multi-lingual users... it's made my life hell when trying to find localized information (for example, in Portuguese), when my computer is set to Portuguese but I'm searching in English.
I've been on static IPs for a decade or so; my last home's static IP was regularly Geo-located to Romania, the next one to the Netherlands, and sometimes even further afield; I'm in the UK.
I started to have a heart attack just yesterday because Zenarmor on my OPNSense box was suggesting that a particular device was sending traffic to a region it has no business sending traffic to; turns out the DB is just wrong and a quick search indicated it actually (currently) belongs to the UK.
In a separate incident (also yesterday, as I then got into investigative mode), I installed Rethink on my phone, which suggested, yet again, that devices (including my phone itself) were sending traffic to places they shouldn't be; again, false alarm, turns out they were all UK IPs, one of which being my own static IP which was being wrongly attributed to another region.
If this part of locating the IP can't even universally be done correctly; why on earth is anyone even considering trying to use it to guess a person's language.
EDIT: The result of these issues, particularly with my home IPs usually manifests in certain sites displaying in languages and with currencies neither I nor my family speak/read or understand, for me I'm used to it and will look for where/how to change the language/currency, but for my wife and kids it's just confusing.
Why oh why does Google Maps think that "miles", "feet", and "yards" are words that have any meaning at all?
Only like a 20th of the world even knows what these obscure things are. Just because I'm currently located in a country that nominally uses these arcane units doesn't mean that I know what they are.
Oh you can change it to real units temporarily. But if you look away for a split second it changes it right back.
I'm LOGGED IN. How could you not remember?!
This is not only an issue on websites but also on apps. For example, the Books and Podcasts apps on iOS show me both Dutch-speaking and French-speaking titles. I tried to raise this issue back when I worked at Apple but they only have 1 storefront per country and didn't feel like changing it.
My computers are all set to English even though I'm a German living in Germany, and I absolutely hate it when local business websites give me the "we don't ship abroad, sorry" just because of my browser's language settings.
Yes, I want my HPE or Dell or FS.com website to be in English but still get the French catalog and warehouses and VAT. Especially for tech, where the lingua franca of english goes so deep that most people don't bother to translate technical terms to their native language. Heck, I don't know most of those in french!
If they did understand, no site would ever propose you an automatic translation into your primary language over the original text written in any other of the languages you can read.
The worst offender was eBay which would machine-translate listings from English to Spanish.
Also, it's only partially true, e.g. Amazon doesn't force the language at all, and while it presumes the country of delivery (which makes perfect sense as not all products are available everywhere), it explicitly nags me about it so I can change it with one click.
[1] https://docs.djangoproject.com/en/5.1/topics/i18n/translatio...
It's a uphill battle where you cannot convince others, so the best thing you can do is figure out how to adjust your own setup to make it less of a hassle.
> Do it right or don’t do it at all.
I'm fairly sure we wouldn't have the internet nor the web if everyone thought like this. I personally also strive for making things as good, right and correct as possible, but obviously I cannot force others to think alike, especially for-profit businesses that don't really care about "correct", only about "good enough".
And then the 'change language' menu is rendered in the unreadable script.
<Cough> google maps, in fact most google apps.
It is great to be able to select individually per site. I often like to use the native French and just drop back to English if its technical language.
I do find that every site has the setting in a different place which is annoying, it would be great to be able to select it in a standard place on the browser.
The worst offenders are the single language per country sites. For example Ebay insists on only using German in Switzerland, which is rather frustrating since I only know English and French so far.
Are biased heuristics for the benefit of (a) the website user (the ad target) or (b) the so-called "tech" company and its advertiser customers?
What other HTTP headers are websites ignoring?
I have my phone's language set to English as a native English speaker. Google maps reads me the Swedish road signs, in English.
Reading up on the english version it becomes clear it was machine-translated with zero persion checking on if any of it was proper.
I ended up switching to Bing just because this issue. Google is absolutely useless for me now.
I don't know how that happens. Like, do individual teams within Meta have to re-learn that users in their own system have a language preference? (Not even talking about Accept-Language, it's a Facebook user setting.)
Language determination should be, by decreasing order of preference:
1. URL param (temporary override)
2. Cookie (optional, set by a flag image list drop-down conflating country with language)
3. Accept-Language (prefix) (optional)
4. GeoIP (guessing at conflating language with country by demographics as a starting point)
Country, by decreasing order of preference (for pricing, shipping, legal, regional content):
1. URL param (temporary override)
2. Cookie (optional, set by a shipping address or preferred region preference)
3. Location (optional)
4. Accept-Language (suffix) (optional)
5. GeoIP (guessing at current location as the desired country of interest)
Note: It's important to make a default guess at the statistically most likely possibility to reduce the burden on the most users, but not prevent users in the US from using the site's French i18n.
In our case, less is more. We decided to not do any of that, and were a bit paranoid that maybe we were going against a 'best practice' somehow?
All we do is look at navigator.language to get the language code:
and if we support that language then we will change the "Translate" button label to that language and default behavior to shortcut to that language version (you can still get the full list).Thats it. Keep it simple.
Example: https://restofworld.org/2024/filipino-ai-chatbot-launches-20...
(translation UI in the byline area, under lead image)
(Btw, my Prime sub is on the German Amazon, but they don't care. You're from Belgium so French it is)
To anyone working in tech: stop trying to outsmart the user.
I don't care if there are any other auto-translated thing that you though it's close enough because they have same prefix that would help.
NO, absolutely NO.
I even specified the en-US or any other language that original content uses as the secondary candidates, then most just ignores it and serves randomly translated thing that you think would be close enough because you can't tell.
Just please, follow what user asked first.
Edit: formatting
There are hundreds of millions of people around the world that aren't fluent in the local language of wherever they are. Many of them probably speak English. Quite a few of those are possibly not that poor either and have disposable income.
So, if your business is selling stuff online, you could do worse than serving up stuff in English when being informed by the Accept-Language header that that is a preferred language. It's not that hard.
But google will then localize results to where I am, which typically deprioritizes English results because I'm not in an English speaking country.
You can set your google settings to act as if you're in the US permanently, but then googling anything local/regional will serve results aimed at people a continent away.
All this "guessing what the user wants" has become detrimental to actual UX.
Possibly not even then. Shipping should depend on the address it's shipped to, not the IP. Currency, I prefer in your original currency. I don't want you to convert currency for me, because my bank does it cheaper.
And of course geoIP can be wrong because of VPNs. Only use it when other methods like user preference and `Accept-Language` or similar have failed, and make it easy for the user to correct your wrong assumptions.
I’m currently agonizing about how to let the user change their language, because I want to respect locale as well (es-MX vs es-ES for example). And I haven’t found a good UX pattern for changing language+locale. I’ll likely just implement a big list that the user can select, and have the current language be a link that they can click to change via a modal.
As a reminder, such a cookie would not require a cookie banner.
https://commission.europa.eu/resources/europa-web-guide/desi...
A lot of websites seem to assume if you have a non-English language in it, they should use that language, even if English has the highest score, because obviously it's your "real" language and English was just a default. E.g. `en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7` is read as "we should serve the Chinese version".
It also flips the entire user interface to a right-to-left layout to match Urdu’s writing direction, which feels completely unfamiliar and disorienting to me.
I remember a company I worked with used to have its internet connection go through German servers, even though it was in France. I remember the presentation page for one of Google's phone was in German with no way to have it in anything else. Using a ".fr" domain, "accept-language", logged into a French Google account, I also tried English too, no luck. I only managed to get some UI elements in something other than German, it felt like a troll. I wonder how the Swiss (a small country with 4 official languages) are doing.
In addition to the idea that the IP address is a pretty bad indicator of the language you speak, some websites have trouble with the idea that people can understand more than one language.
Hey, YouTube, I know I have set my account to French, but I understand English and you know it, so please don't auto-translate video titles for me and do a terrible job at it. And I don't want to set my account to English, because I guess it would translate French titles into English, which I want even less.
Infuriatingly, there was a train of thought at one time that used website analytics as a justification for either setting the default language of a site or trusting an external third-party like IP addresses databases (often just relying on the free, unmaintained stuff that broke after 3 months as the Internet expanded).
Then came the browser geolocation prompts, etc. -- and most people, lacking a basic understanding of how HTTP works, preferred chunks of JavaScript they could "see" to HTTP header information they didn't understand, to the point where that got codified as "best practice".
It also doesn't help that most CMS frameworks completely fail to make use of that information and pass it down the stack, or that people have turned to doing SPAs (which _can_ just use navigator.language, but just do a search in any framework's source code and see how often that is used).
But yes, many ignore the selected language or units completely.
And while we're at it: Google, you know literally everything about my life. You know which languages I speak, which countries I live or have lived in.
So why is it impossible to find results relevant to country A, in country A's language, while browsing from country B, but with both languages A and B in my "Accept-Language", and me having lived in both A and B for years?
Why does the "languages I speak" setting on Google's search settings, which seems to be the only way to maybe make Google get the message, auto-reset at random all the time? How is using a VPN to get around this limitation a thing in 2025?
I mean, doesn't Google have employees from multiple countries? Shouldn't diversity fix this in the sense that some bilingual person there notices this?
Copying big-name-here's practice of localizing based on IP is not that. Copying "the way they comment the start of every file" would be. Or "using the same pep talk to the full company" would be. Actually using an approach that has both code that actually does something, and has an immediate and measurable effect on the user, isn't.
I mean, Google does it, and they employ some of the most brilliant people on the planet. Showing people their website in the wrong language is clearly losing them money, so minimizing that is a very direct way to increase profits. There must be some reason they rely on IP more than on Accept-Language. They don't leave money lying around, and there's no way Google engineers aren't aware of that header.
I don't know why they do it, but somehow Accept-Language must be less reliable than IP. No other explanation makes sense in this context.
EDIT: not any longer?
They absolutely do lol.
Like it or not, people like you are outnumbered by people who set their Accept-Language header wrong and don't know how to fix it. Those people probably buy more too (or at least buy more that shows up in tracking, since you sound like the kind of person who disables cookies etc. too).