---
title: Configure languages in Xperience
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

## Add a new language

When creating a new language variant of content, you must add the desired language to the **Languages** application. To do so, you need to be a system administrator or have appropriate permission. The next step is to set the language for the backend. Lastly, the developers need to ensure the content in the desired language displays correctly.

When you **add a new language**, you'll define the **Language name** used internally in Xperience and the **Code name** used in the URLs (more about URLs below). The **Formatting culture** drives how XbyK handles culture-related information, like time, dates, or number format.

> **Warning:** The formatting culture values must be based on IETF or one of the ISO-639 standards.

![Language form in the Languages application for Deutsch, with the Code name set to de, the Formatting culture set to de-DE, the Default language checkbox cleared, and the Fallback language set to English.](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/language-set-up.png "Example of newly created language in the Languages application")

You can also **adjust an existing language** in the application; just open it and change the requested value.

> **Info:** However, changing the language's **Code name** or setting another language as the default will change the URL. This means your developers need to redirect all original URLs to the new ones. See more in the [Languages and URL](#languages-and-url) section.

To **remove an existing language**, use the bin button next to the language.

![Two rows of the language list, Czech and Deutsch, with the bin button in the Actions column of the Czech row highlighted.](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/remove-language.png "Remove the language using the bin button")

If the system already contains a translated version of some content, you cannot delete the language. For example, the screenshot above shows there already are Czech and German variants of an English content item, so the **Delete** button is disabled. Don't forget to go through:

- Content in the **Content hub**,
- Pages in all **website channels**,
- **Email channels**.

Before you delete the language, check if it's marked as the **Default language** or used as the **Primary language** of a channel. If so, make another language the **Default language** and the channel's **Primary language**.

![List of languages where Nederlands is marked as default. Hovering over its bin button shows the tooltip 'The default language cannot be deleted.'](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/remove-default-language.png "Xperience shows you if the language you want to delete is a default language")

## Languages are global

When you create a new channel, you define a **Primary language** your content will focus on. This will be the main language of your channel, but you can create content in any other language listed in the **Languages** application.

It's important to remember, however, that Xperience, by default, does not limit the channel languages in which you can publish content. While creating a language, you cannot restrict the languages allowed for this channel.

Languages in Xperience are, by default, global. This means that when a language exists, editors can use it to translate content. Similarly, if a language has a fallback language, you cannot opt out of this behavior in a specific channel.

If your project needs to be more restrictive, developers can customize Xperience and introduce a per-channel language setting. For a practical example, look at the Kbank demo settings.

![Setting keys page of the custom Kbank demo settings application listing an AllowedLanguageNames key for each Kbank channel. The personal website key allows only en, and the other channel keys allow all languages with the value \*.](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/kbank_custom_language_settings.png "Language setting keys in Kbank")

![List of languages in the Kbank Languages application: Czech, Deutsch, English marked as default, Español, Français, and Nederlands, each with its code name.](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/kbank_languages.png "List of languages in Kbank")

The global nature of languages in Xperience can impact other content objects besides content. When you delete a language, Xperience removes translated variants of consent agreements, taxonomy names, or title tags. So, when you decide to remove a language, proceed with caution.

## Fallback languages

As mentioned in the [previous guide](https://docs.kentico.com/modules/work-with-multilingual/multilingual-variant-of-content.md#what-is-a-fallback-language), a fallback language serves as a backup for content not published in the targeted multilingual variant.

### How fallback language works

Let's say you have a website in Spanish, and its fallback language is German. You also have English as a fallback for German. A visitor goes to the Spanish version of the website, and there is content that was not published in Spanish. Xperience shows the content in the fallback language, which is German. But if even the German version doesn't exist, it shows the next in line, English.

If there's a fallback, the website's URL will still appear as Spanish, even though some content shows in German or English.

### Defining fallback languages

Instead of one universal fallback language, you can set up a different fallback for each language, or create a fallback chain.
For example, you can create a fallback chain of five languages where the content will show in its fallback language if one language doesn't work. And if that fallback language doesn't work, the content shows in that fallback language's fallback language. See the chain in the box below (however unrealistic). If the first one doesn't work, Xperience shows the content in the second one. If the second one doesn't work, it shows the third one, and so on.

> **Info:** Here is an example of the fallback chain:
>
> German → Czech → French → Spanish → English

To change the fallback language, open the **Languages** application, open the language, and select its **Fallback language**. In our example, if German doesn't work, it'll show content in Czech. The following screenshot shows where to set up the fallback language.

![Language form for Deutsch with the highlighted Fallback section, where the Fallback language field is set to Czech.](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/choosing-fallback-language.png "Choose a fallback language in the language settings")

Similarly to the previous step, set up the fallback language for Czech. Open the Czech language and set its **Fallback language** to French. Continue like this until you have the whole chain set up.

### Opt out of language fallback

Suppose your company doesn't want a fallback language for a specific language variant. In that case, you can remove the fallback language.

Instead of choosing a **Fallback language**, remove it using the cross button.

![Language form for Czech with the Fallback language field set to Français. The highlighted cross button in the field shows the tooltip 'Clear selection'.](https://docs.kentico.com/docsassets/modules/configure-languages-in-xperience/removing-fallback-language.png "Remove the fallback language")

But what if you don't define the fallback language, and the desired page doesn't exist in the target language? In that case, the server returns a 404 error, and the visitor sees a blank page unless your developers have configured a custom error page. For the developer setup, see [Serve custom error pages](https://docs.kentico.com/documentation/developers-and-admins/development/routing/serve-custom-error-pages.md).

## Languages and URL

URLs for pages in the [primary language of a website channel](https://docs.kentico.com/documentation/developers-and-admins/configuration/website-channel-management.md) don't include the language's **Code name**. For example, suppose English is set as the **Primary language** of the website channel. In that case, the URLs of pages in English will be _domain.com/page_, for example _kbank.com/personal_.

For pages in a non-primary language, Xperience inserts the language's **Code name** into the URL path after the site's root ('/'). For example, suppose English is set as the **Primary language** of the website channel. In that case, the URLs of pages in Spanish will be in the _kbank.com/es/personal_ format.

> **Warning:** As we mentioned before, the languages in Xperience are global and Kentico doesn't monitor changes in global objects. This means developers have to handle redirects of all pages indexed in the search engines from the old, now broken, URLs to the new ones.

## To sum up

You can add, adjust, or remove a fallback language. If a language has no fallback, visitors who open an untranslated page receive a 404 error.
You can create a chain of fallbacks or set a different fallback for each language variant. There doesn't have to be just one universal fallback for everything; each language can have its own fallback.
Xperience creates a code name for the language in the URL. This code name doesn't update automatically, so if you change it in settings, redirect the old pages.
