WordPress & multilingual sites

Language Switcher Design: User-Friendly, Accessible and SEO-Safe

Flags or language names? Top-right corner or footer? The principles of a language switcher that visitors can find, use with a keyboard and that search engines understand.

By AYM FlowPublished: 5 min read

Good language switcher design means a menu that sits in the same place on every page, usually the top-right corner, lists languages by their own names (Deutsch, Español, Türkçe) and, when a visitor picks one, takes them to the equivalent of the current page rather than the home page. Flags should only be a supporting cue next to the language name, and the menu must work with a keyboard and a screen reader. This article covers placement, the flags-versus-names debate, the risks of automatic redirects, accessibility rules and how to set up a switcher properly in WordPress, using the switcher on this very site as an example.

Where should the language switcher go?

Most users look for the language switcher in the top-right corner, next to the main navigation. Unless you have a good reason to break that habit, put it there and keep it in the same position on every page. A second list of languages in the footer helps visitors who scroll to the end. On mobile, the switcher should either appear as a small button in the top bar or as a clear section inside the opened menu; a tiny link hidden at the very bottom of the menu is easily missed.

Flags or language names?

Flags represent countries; languages belong to people. Is English the UK or the US, Spanish Spain or Mexico, Arabic which country? A switcher made only of flags invites some visitors to misread it and puts others off. So always write the language name, in the language itself: a German speaker recognises “Deutsch” rather than “German”. You do not have to drop flags entirely; next to the name they speed up scanning. What matters is choosing one flag per language and using it consistently everywhere.

Sometimes country and language really are separate. For software sold worldwide in a single currency, the visitor's language matters more than their country; our Multi Score Screen scoreboard software for sports venues, for example, prices its plans in US dollars, so a language choice is enough on such a product site. If prices, shipping or legal texts change by country, offer language and country as separate menus.

Why emoji flags cause trouble

Flag emoji such as 🇩🇪 show up as two letters instead of a flag on some systems; common browsers on Windows do not draw flag emoji. That is why this site draws its flags as small inline SVGs: no request to an external file or service, the same look on every system, hidden from screen readers, and the language name always written next to them.

Where should a selection lead?

Sending a visitor who switches language to the home page is the most common mistake. Someone on the services page who switches to German wants the German services page. Every language link should point to the equivalent of the current page. If a page has no translation, say so and send the visitor to the closest page, such as the blog listing in that language, and do not output hreflang for untranslated pages. We cover the technical details in our hreflang guide.

Automatic redirects: be careful

Redirecting visitors automatically by browser language or IP address is tempting but carries two risks. The first is user experience: a Turkish speaker living in Germany is not happy to be forced onto the German version. The second is search engines: Google recommends against automatically redirecting users based on their perceived language and suggests linking to all language versions instead, because crawlers need to see every version. The safe pattern is to use the browser language as a suggestion on the first visit, remember the user's choice in a cookie and keep the switcher always available. The browser-language redirect in AYM Multilingual also remembers the visitor's choice.

Accessibility: a menu everyone can use

  • An accessible name: the language button should be announced clearly, for example “Language: English”.
  • State information: if you use a dropdown, the button should report whether the menu is open or closed.
  • Keyboard support: the menu opens with Enter or Space, moves with arrow keys and closes with Esc.
  • Language attributes: each link declares its target language so screen readers pronounce the name correctly.
  • Visible focus: keyboard users must clearly see which language is focused.
  • Decorative flags: hide flags from screen readers; the language name carries the information.

A simple structure that follows these principles looks like this:

<div class="lang">
  <button type="button" aria-expanded="false" aria-controls="lang-menu"
          aria-label="Language: Deutsch">
    <svg aria-hidden="true" viewBox="0 0 5 3">…</svg> DE
  </button>
  <ul id="lang-menu" hidden>
    <li><a href="/tr/hizmetler" hreflang="tr" lang="tr">Türkçe</a></li>
    <li><a href="/services" hreflang="en" lang="en">English</a></li>
    <li><a href="/de/dienstleistungen" hreflang="de" lang="de" aria-current="true">Deutsch</a></li>
  </ul>
</div>

How many languages before a dropdown?

With two or three languages, showing them side by side as links is fastest: one click to switch. From four languages up, a dropdown looks tidier. Mark the selected language, keep the order fixed (alphabetical or by market priority) and make the items large enough to tap comfortably on mobile.

Setting up a switcher in WordPress

Most multilingual plugins let you add the switcher as a menu item, widget, block or shortcode. Our own AYM Multilingual maps menus, header and footer per language and redirects by browser language while remembering the visitor's choice. If you are adding a language for the first time, plan the URL structure and translation workflow before the switcher; our guide on how to add a language to a WordPress site walks through it. A switcher is only as good as the content behind it, so see our article on localization vs translation too.

Checklist

  1. Is the switcher in the same place on every page and easy to find on mobile?
  2. Are languages written in their own names, with flags only as a cue?
  3. Does every link go to the equivalent of the current page?
  4. Does any automatic redirect act as a suggestion and remember the choice?
  5. Can the menu be used with a keyboard and a screen reader?

If you would like your multilingual site and its switcher set up professionally, see our multilingual WordPress service.

Share:XLinkedInWhatsApp

Frequently asked questions

Is it wrong to use flags in a language switcher?

No, but never on their own. Flags represent countries; always write the language name and use the flag as a supporting cue.

Should I redirect visitors automatically by browser language?

Forced redirects are not recommended. Use the browser language as a suggestion, remember the choice and link to all language versions.

Where should a visitor land after switching language?

On the equivalent of the current page in the chosen language. If there is no translation, say so and send them to the closest page.

Why do flags show as letters on Windows?

Common browsers on Windows do not draw flag emoji. Using flags as SVG images avoids the problem.

WordPress & multilingual sites

Localization vs Translation: The Difference and How to Apply It to Your Website

Translation moves text into another language; localization rebuilds the site for someone living in that market. We explain the difference with examples from our own keyword research.

WordPress & multilingual sites

Add a Language to a WordPress Site: A Step-by-Step Guide

You want to add English or another language to your existing WordPress site. The “Site Language” setting is not enough; here is how to do it with the right structure, priorities and SEO steps.

WordPress & multilingual sites

Translate WooCommerce Products: A Complete Multilingual Store Guide

Opening a WooCommerce store in a second language takes more than translating product descriptions. What to watch in checkout, emails, currency and SEO.