With Brazil (Portuguese), Finland (Swedish) and my home-country (the United Kingdom) as perfect examples, Jukka Korpela tells us why the use of flags to represent language options on the web is “plain wrong”.
In a perfect world, there would be no need for explicit links to versions of a document in different languages. Even in this imperfect world, the Web might evolve so that a server and a user agent smoothly select a version according to language preferences which the user has given when configuring the browser. (There are methods for such negotation in the HTTP protocol, but they are rarely used in practice so far. […] This should not be confused with the misguided “forced redirection” e.g. by Google, which uses undisclosed heuristics to send the user to a page in a particular language.)
After the compelling arguments are presented, Korpela recommends complying with the recommendations from the European Committee for Standardization: