A slightly ranty talk about why language picker widgets should not include country flags as prettifying icons
Just to repeat the title for emphasis ...
Languages don't have flags, countries do
It may be true that in your specific case this isn't a problem. Maybe the set of languages you're supporting and countries of your users don't fall into these categories. Maybe your specific situation means your users are particularly forgiving, or tied to using your site/app however annoyed they get. Or maybe you just don't care about how annoyed your users become.
But if you're supporting a fair set of widely spoken languages, with users from multiple countries, and you're quite interested in not annoying them - that big red warning above applies to you.
There are many blog posts, and even a whole website set up about this problem:
- WPLANG - WordPress Multilingual
- A Language Selector Is No Place for Flags
- language choice: flags, text, both, neither?
Anyway, to get into the details, there are three main practical reasons not to do this...
Languages are not countries. The most popular languages are spoken across multiple countries. Even if a language has a specific origin country, some of the people who speak that language live in another country. This gets problematic in all sorts of ways, to give a few examples:
In the USA, they speak English (well, near enough). Should we show the Union Jack flag as their language? Actually USA has loads more people and a lot more software development than England, so really we should show the Stars and Stripes for the English language. If you're English or American and had a little niggle of annoyance at either idea, that's the problem.
Similarly, in Brazil and Portugal the main language is Portuguese, and again the origin country is not where most of the language speakers live. Showing a Brazil flag next to the Portuguese language "makes more sense" (and annoys some of your users in Portugal).
Unsurprisingly, a lot of the most widely spoken languages are spoken in multiple countries (with some variant), and are often also the primary language in multiple countries - each of which has different flags. It usually doesn't make sense to pick one of those country flags to represent all the speakers of that language.
Hi there Belgium, Canada, India, and many others. These are countries with more than one official language. In addition to official country-wide languages, a large number of countries either have multiple widely used languages, or different languages for their various regions. The problem here is that showing a country flag doesn't help the user chose a language.
I'll use Belgium as an example; it has three official languages: Dutch, French and German. If we use a country flag for our Belgian friends, do we use the same Belgian flag next to all three languages? Or do we use the Dutch, French and German flags next to those languages? Despite the fact that the Flemish region mainly speaks a Flemish dialect of French, which the French in France will find weird, the Dutch spoken in the Wallonia region is a Walloon dialect and the German dialect apparently isn't widely spoken anywhere in Belgium despite being an official language.
Belgium is one of the more benign examples, they're seemingly quite relaxed about their whole European position and languages and well educated about their neighbours flags. But even then, there's probably a tiny bit of annoyance when they see another country's flag against the language they speak, or their own flag against a language which isn't the one they expect.
Imagine it's the US war of independence and you're telling an American the Union Jack flag is the one they need to pick for their preferred language. The offence/outrage that would cause can still be caused by certain language/country/flag mix-ups today.
Take Chinese as an example - actually the example which has caused me to spend the most time re-explaining this whole concept. People in Taiwan speak Chinese - people in Taiwan object to being called Chinese, and most definitely object to being told the country they live in is China. So if you tell them to pick the flag of China to represent the language they speak - you have a problem (and a very hard time doing business in Taiwan).
However, if you try to fix this by showing a Taiwanese flag next to the Chinese language, China itself is going to take quite severe offence. To them, Taiwan is not a country, but a province of China, and they really don't think the Taiwanese flag belongs as the icon of the Chinese language.
Now there are two variants (actually many, but two main ones) of written Chinese used by most speakers - Traditional and Simplified Chinese. Taiwan mainly uses Traditional and mainland China mainly uses Simplified. So, maybe your site/app could support both variants and use the Taiwanese flag next to Traditional and the Chinese flag next to Simplified. That might, kind of work. But both those country flags will be appearing next to each other, and both sides are pretty touchy about the whole national flags subject.
If you want an example of a language where there's going to be really serious offence caused - consider Arabic. Really, go look at any recent history, or even today's news (on any day you care to pick) - they apparently all speak the same language, which one of those country flags do I use to associate with the language they're speaking? I've seen the Saudi Arabian flag used for Arabic, and I can't imagine the offence that would cause to website users in Syria, Lebanon, Iraq, etc.
Ok, so I said three reasons, but this one is more of a UI consideration rather than something that will cause offence.
A lot of country flags look very similar, maybe even identical. britannica.com has a good set of examples. If you're using some of these flags to represent different languages, you're basically setting the user up to pick a language they don't speak, and that's not going to make them happy.
Also some users may not know the country flag which "goes with" the language they speak. Take English as an example - the English flag is actually the George Cross NOT the Union Jack. But if you used the George Cross to represent the English language, I'd expect a majority of Americans, Australians and English speakers to be understandably confused about why that flag is next to the language they speak.
So the summary is: Even if you take great care trying to get the "right" flag for each language, you're going to end up confusing, annoying or offending various groups of users.
Now for the good news - for some languages, countries and users, there isn't really a big problem. If you show a Union Jack flag next to the English language, some patriotic Americans and Aussies may feel slightly annoyed, but they know the language it represents and that the painful history was long ago and we're all friends now (unless there's cricket or rugby going on).
Similarly, if you chose to show the Stars and Stripes next to the English language, us Brits will wince and feel sad that no one cares about "our glorious empire", but yeah we're now just another small country that speaks the same language as America. Apparently the Portuguese get the same feeling seeing Brazil's flag next to their language.
If you want your Belgian friends to pick their preferred language, it's best not to show them the same flag 3 or 4 times with different language names, just because that's confusing. If you're dead-set on using flags for languages, at least pick flags that will help users pick the right language!
But, those are the easy cases. In some places that "painful history" is current events, playing out with threats (and even deaths) happening in the news. So, if you want your Taiwanese friends to click on the language they understand, don't stick a Chinese flag next to it, just write the name of the language, in that language and accept your pretty dropdown list isn't quite as pretty as you'd hoped.
That's the advice given by most linguists and i18n experts these days - don't try to use any graphical icon for languages. Instead show each language name, in its own language, maybe including the dialect/variant, preferrably sorted by ISO language code.