This is because you loop through all but the current locales. Remove the `without` filter to loop them all. > `{% set otherLocales = craft.i18n.getSiteLocaleIds()|without(craft.locale) %}` . Add "current" class: To assign the current locale's link a class of "current", compare the looped locale to the current locale and set a variable that you can later test for. (In the example code I use the [ternary operator][3] for short output syntax.) . Example Code: With my example code below you first create an array of all the locales you want the language switch to include, and then loop through it. With this technique you can define the order of the output manually or exclude locales from the loop. {# Configure and loop through selected site locales #} {% set locales = ['en', 'hu'] %} {% for locale in locales %} {# Check if locale equals the requested page locale #} {% set current = false %} {% if locale == craft.locale %} {% set current = true %} {% endif %} {# Is this an entry page? #} {% if entry is defined %} {# Find the current entry in the other locale #} {% set localeEntry = craft.entries.id(entry.id).locale(locale).first() %} {# Make sure that it's actually localized to this locale #} {% if localeEntry and localeEntry.locale == locale %} {# Output a link to it #} <a href="{{ localeEntry.getUrl() }}" class="nav-link{{ current ? ' current'}}">{{ craft.i18n.getLocaleById(locale).name }}</a> {% else %} {# Output a link to the hompage #} <a href="{{ craft.config.siteUrl[locale] }}" class="nav-link{{ current ? ' current'}}">{{ craft.i18n.getLocaleById(locale).name }}</a> {% endif %} {# Not an entry page #} {% else %} {# Output the same path with the locale's base URL (`siteUrl`) #} <a href="{{ craft.config.siteUrl[locale] ~ craft.request.getPath() }}" class="nav-link{{ current ? ' current'}}">{{ craft.i18n.getLocaleById(locale).name }}</a> {% endif %} {% endfor %} *Code edits done to implement a lookup of the (translated) locale name as described [here][4] by Brandon Kelly* . Notes: - The easiest (and recommended) way to use this language switch is to exclusively use entry pages (channel entries, structure entries, or singles) on your site. - All non entry pages have to have the same URL path / slug for each locale (eg. `http://craft.dev/de/meineindexseite/` and `http://craft.dev/en/meineindexseite/`), translated URL parts won't work for non entry pages with this code. - If you only use entry pages or if you are using [localized template folders][1] you should be save to remove the `entry is defined` conditional (incl. the else part) altogether. - `craft.config.siteUrl[localeId]` only works if [siteUrl is configured][2] to take care of localized URLs [1]: http://buildwithcraft.com/docs/templating-overview#template-localization [2]: http://buildwithcraft.com/docs/config-settings#siteUrl [3]: http://twig.sensiolabs.org/doc/templates.html#other-operators [4]: https://craftcms.stackexchange.com/a/880/125