Inspired by a discussion I had with a colleague recently (not really recently, more like 6 months ago) about the use of flags to choose language, I have reconciliation to assemble this list of best practice where users could select the language and culture on a website.
Ask users to select a culture
From a developer's standpoint, it is not enough that the user to select a language. To format dates, calendar, numbers and the like properly it is necessary to know language and country ("a culture").
| |
en-US
|
en-GB
|
| |
|
|
| A large number with two decimals |
123,321.99
|
123.321,99
|
| First day of week |
Sunday
|
Monday
|
| Short date format |
6/15/2009
|
15/06/2009
|
Within the same language exist culture-specific variations. A good (and now classic) example of this is from amazon where the text on the Add to Cart button varies between the amazon.co.uk and amazon.com site:

Countries are not languages
The classic example of a bad “Choose of language” is the cases where a site prompts the user to choose a language from a list that only contains countries.

http://easportsactive.com/home.action has (until recently) this near to this wonderful misunderstood language selection. Entitled "Please Select your Language" invites the user to choose his language and then present a list of nine countries; several of them have more than one official language:
- Canada has two primary languages: English and French (67.5% speak English only, 13.3% speak French only, and 17.7% speak both)
- Belgium has two predominant languages: an estimated 59% of the Belgian population speaks Dutch (often colloquially referred to as "Flemish"), and French is spoken by 40% of the population.
Don’t display flags only
For many years, the experts recommended that you do not use flags for language selection. This recommendation has also found its way to W3C Working Draft “Authoring Techniques for XHTML & HTML Internationalization: Specifying the language of content 1.0”, Technique 16: Don’t use flags to indicate languages:
Flags represent countries, not languages. There are many countries that use the same language, and numerous countries that have more than one official language.
Yet there is a tendency that many sites still chooses to use the flag, this is linked to it may be difficult to scan a long list of countries and that a flag is a familiar and easily recognizable symbol.
When the flag is not used as the only symbol, but is followed by the country name and proper title (“select country”) it may work fine. For countries with multiple languages, these will appear after the country name as on www.tradedoubler.com where this technique work fine (note the two variants of Belgium and Switzerland).

Treat the flag with respect
If you choose to use flags on a website it should be done with due respect to both form and color. Changing the flag can offend people's national sentiment but also actually be prohibited by law. In several western countries it is forbidden by law to scold other nations' flags. In Denmark, the only legal way to dispose of a national flag (Dannebrog) is by burning it while it is banned in Denmark to burn flags of other nations.
Apple.com has a complete overview of how not to treat all the world's flags. Under the heading "Choose your country or region" is a complete list of all the world's mistreated flags.

Who may, for example recognize the Japanese flag:

I dare not think of what a Muslim like the way the text (the Islamic declaration of faith) in the Saudi Arabia flag is pruned

For some reason it seems to Luxemburg and the Netherlands have the same flag, despite that the two flags are different on both the red and blue color (I think Luxembourg is the correct one).

Write the country and/or language name in its native tongue
 |
If a person who speaks only German enters the French version of the Delta Airlines website, it can be difficult to know that Germany is called Allemagne in French – Deutschland would be more correct |
Language only
If the website does not have culture-specific formatting needs so it may be sufficient to let people choose a language and nothing else. Flickr has a list of languages written in native tongues:

Language (followred by culture)
Facebook has chosen a solution where they listing language first followed by culture, if present: Français (Canada) and Français (France).
In the same way it’s possible to show both versions of Norwegian and it also opens the possibility to invent new cultures, notice “English (Pirate)” and “English (Upside Down)”, which is only possible due to this construction.

Multistep culture select
Few websites offer users to select their culture through a multistage process. Pixmania.com is one of them, not graphically pretty :-) And it also assumes that the user knows his country's location on a map

(By the way – what has happened to Cyprus, it disappeared completely behind the "flag")
Clicking on the Switzerland flag on the map, shows a popup asking the user to select one of the 3 languages used in Switzerland

On the site the currency is default to CHF and the site still offers me to switch to one of the 2 other languages relevant for Switzerland.

The selected country and language is then shown in the address:
- pixmania.com/ch/de/home.html
- pixmania.com/ch/fr/home.html
- pixmania.com/ch/it/home.html
Automatic culture selection
if the website uses Automatic culture selection: be polite and tell it to the user and give the opportunity to change back. Youtube automatically sets the user's language at the first visit ,from your browser's preferred language and shows a brief message about the choices made.

Suggestions instead of automatic selection
AlaTest suggests user to visit another domain (culture) version when the browser settings for preferred culture is not matched with the website culture.

No language
Finally consider if you need to have language selection at all.
Some sites don’t offer the user to select any language, if they have sites in different countries it’s possible to select the country and then gives the default and only language available for that country.

amazon.com is an example of a side who don’t have language versions of their national sites. On the US site users is able to select Canada and are then getting the Canadian site in English.