ISO language codes and country codes don't mix

In 2012 I wrote about Deezer mixing up ISO country codes and languages codes — specifically Montserrat for Melayu and as a result using the flag of a small English-speaking Caribbean island for the Malay language. (Deezer has since replaced their flags and languages with a simple list of languages presented in their native name).

I recently spotted a similar set of mix ups on a plug in for accessibility and translation from Recite me used on sites such as London’s Gatwick Airport.


There are some curious flag choices made for representing languages: such as Andorra for Catalan. With a population of around 80,000, there are are fewer people in Andorra than the seating capacity of Catalonia’s largest football ground, FC Barcelona’s Nou Camp (almost 100,000 people).

Traditional Chinese is represented with China’s flag while it is far more commonly used in Taiwan (where Simplified Chinese is rarely used).

The Indian flag is also used three times — for Hindi, Tamil and Telugu. However, Gujarati does not have an Indian flag: instead it has the flag of Guam. Galician also has the Greenland flag.

This is where checking your country codes and languages codes is very important: the two-letter ISO language codes for Galician (GL) and Gujarati (GU) are the same as the two-letter ISO country codes for Greenland (GL) and Guam (GU) respectively.

However, by far the strangest combination of flags and languages here is the first one: Afrikaans is shown with a Saudi Arabian flag. Another mix up possible with the “SA” abbreviation of South Africa (where Afrikaans is spoken) and Saudi Arabia?

Confusing language and country codes is one pitfall of using flags to represent languages: another is the added onus of having to ensure you’re actually using the “right” flag (and determining the “right” flag is also full of pitfalls).

Had this language selector used a simpler approach with just language names presented in their native name and script then mixing up and even confusing flags wouldn’t even be an issue.

8 thoughts on “ISO language codes and country codes don't mix”

  1. I’m curious what you think about having a translator on a website at all. I run a site that has 89% English speaking visitors. Many of the visitors of other languages are visiting in Chrome, which has its own built-in translation. Do you think it’s necessary to provide a translation option on my site for that remaining ~5%? It sounds like the needs of the many outweigh the needs of the few.

    1. Chrome autotranslate is great, and if the majority of your users are using Chrome, then it’s probably not worth the outlay of an extra translator. But Google Translate isn’t perfect, and if your site is of a specialist or technical nature, the translations might not be of a sufficient quality. Depends on your content really!

  2. People often mix up the South Africa country code, since it is “ZA” and not “SA” (Saudi Arabia).

  3. James,

    I’m relatively new to Recite (having started here in April) and I’ve only today been made aware of this piece.

    I wanted you to know that as a result of this, and other comments, we removed the flags from the dropdown menu.

    Thanks for pointing out the errors in the first place.


  4. Just as a curiosity, Catalan language is spoken by nearly 10 millions of people in the world mainly in Catalonia (with near 6-7 million speakers) but also in Valencia Country and Balearic Islands (and a few in some regions of Italy and France). And of course also in Andorra. The thing is that Andorra is officially and independent country that have Catalan as a solely official language so despite their size is the most official country for Catalan language.

  5. You are overthinking the problem, the reason for flags is to indicate to the visiting user who may not understand the text of your page, and if you write the lange in the page language, then the user is frustrated never to return, for example, here in Hong Kong, we see many pages default to Chinese characters, and a language selection option, especially google, amazon and paypal, have a language change option, but it is written in Chinese, and if you can not read chinese, then you cant switch the language, so those idiots have it all messed up, some smart sites will have a flag, this is a good guide to where the language option is, even if the flag is wrong, it still indicates the possible choices, for example, I want to read English, but I see an american flag, now we all agree, Americans don’t speak English, but I can select the american flag to get to a page that I can understand.
    So the point of the page here is flag is not language, and is correct, but as a navigation Aid, it is a must.

  6. WC3 have been woefully absent on this issue. Quite a few years ago I emailed them highlighting the issue that developers pick flags because they are eye-catching where as EN, DE, ES are not. I suggested we needed at the very least an HTML element and associated standards and best practices with browser support for making sure that the element was noticed by users.

    I got a reply from a rather bored and distracted Phd student who dismissed the suggestion with an air of disinterest.

    Now in 2023 we are still left with a disparity of opinions, the irritation of country flags representing languages on many sites – US CA AU UK flag for English?

    This should have been solved a long time ago by having a standard HTML container for language option widgets so that the browser is aware and can advise the user accordingly – then perhaps designers will feel more assured that the ISO codes for the language will suffice and they don’t need eye-catching flags anymore – until then some designers will always favour the most eye-catching option and the issue propagates.

    People will want to style and design their widgets differently but we could have at least had a standard HTML container.

    Miserable fail by the WC3 !!

Leave a Reply

Your email address will not be published. Required fields are marked *