R – How should web sites deal with localization settings? (from “What are common UI misconceptions and annoyances?”)


I’ve chosen to take this as a question in its own right since it was generating so much debate in the comments of the original post.

It’s interesting to see that a lot of people on SO (who are developer's) just don't get localization. Here’s my take on how it should work:

In all browsers that I've looked at (and for the .NET developers out there too) when you look at a user's culture preferences it is in the following format:

So we have:

  • en-GB – English language – UK culture
  • en-US – English language – US culture
  • en – English language – Invariant culture.
  • fr-FR – French language – French culture
  • fr-CH – French language – Swiss culture
  • de-CH – German language – Swiss culture
  • de-DE – German language – German culture

See MSDN for a complete list that the .NET framework supports.

When I go to a website it knows that I want the English language from the en part and it knows I’m interested in it being slanted to the UK (number formatting, date formatting). So when I go to google.com and it takes me to google.de (because of my IP address) that’s completely fine if google.de displays everything to me in English but completely wrong since google.de is in German. I have little control over my IP address but complete control over my language and culture settings. If you’re interested Microsoft’s new search engine (bing.com) handles things properly. Let's hope Microsoft can learn how to do search as well as Google or Google can learn to localize as well as Microsoft 😉

MSDN has another good article here for more information

So what are your recommendations for how sites should deal with localizations?

Best Solution

The solution here is so simple, it's annoying that dev's do anything else.

  1. Respect the browser setting. If it says English then by god it's English.

  2. If you absolutely must, then simply add a button at the top to pick something else. Then, and ONLY then, do you override the browser.

  3. If you think your way is better. Stop, have someone slap you. It's not. Repeat as necessary.

  4. Get rid of those web splash pages that ask for someone's country. Just show your normal page, based off of the browser defaults, and see item 2 above. I have yet to run into a site where it actually matters. update: a few years later and there is now a reason to do this. In 2013 the UK instituted policies surrounding cookies that website operators need to respect for sites based in that country that are serving pages to visitors from that country. So pay attention to the laws in the countries you are hosted in.

  5. IF you happen to have a site that really is served by multiple servers across multiple countries, then you can probably detect which one of your servers is really closer to serve from. If you can't, just stop the redirecting madness and then don't try and make a determination for them.