> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fetchski-attract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Your site in more than one language

> Add a language, translate your pages into it, and put it live when it's ready, with its own addresses and a language switcher for visitors.

Speak to more of your customers in their own language. Add a language, translate your pages at your own pace, and switch it on for visitors when it's ready. Each language gets its own addresses, such as `/fr/about-us`, and visitors get a language switcher in your site's header.

&#x20;**Who can do this:** Admins and Owners add and remove languages. Anyone who can edit a page can translate it: Contributors, Editors, Admins and Owners. Publishing a translation works like publishing any page.

## Before you start

* Know each language's code. It's the short lowercase code for the language, such as `fr` for French or `es` for Spanish. For a language as spoken in one country, add the country: `pt-br` for Portuguese in Brazil.
* Your site's first language is its **main language**. Its pages keep the addresses they have today. Every language you add gets its code at the start of its addresses.

## Add a language

**1. Open Languages**

Open the command palette (⌘K, or Ctrl+K on Windows) and choose **Languages**. The shortcut is T then ⇧L.

**2. Name your main language**

In **Main language**, write your site's first language as its speakers write it, such as "English". Visitors see this name in the language switcher.

**3. Add the new language**

Under **More languages**, add a language and fill in:

* **Name**: the language as its speakers write it, such as "Français". The switcher shows this name.
* **Code**: its language code, such as `fr`.
* **Public**: leave it at **No** for now. Until it's **Yes**, only people signed in to the CMS see the language, so you can translate in peace.

![The Languages window: Main language English, and under More languages one row named Français with Name Français, Code fr and Public set to No.](https://mintcdn.com/fetchski-attract-api/JTZEGvERTLgfkfin/images/cms/guides/build-pages/languages/guides-build-pages-languages-screen-light.png?fit=max\&auto=format\&n=JTZEGvERTLgfkfin\&q=85\&s=1cfa5bd87b5bcf7ef0c93891b205802f)

Add a language: its name, its code, and Public at No while you translate.

**4. Save**

Choose **Save**. The language is ready straight away: it gets its own home page, and its own copy of **Site settings** and **Site design**.

**5. Reload the page**

Reload your browser. The toolbar now shows a language menu with the current language's code, such as **EN**.

## Translate a page

**1. Open the page in your main language**

Go to the page on your site, as you would to edit it.

**2. Switch language**

In the toolbar, open the language menu (**EN**) and choose the new language. The page doesn't exist there yet, so the CMS asks: "Switch locales and localize page to Français?" Choose **Yes, localize this page and switch locales**.

**3. Choose what to copy**

The **Localize Content** window opens. Under **What content do you want to localize?**, **This document and related documents** is chosen for you. It brings along what the page shows, such as its images and team members.

Choose **This document** for the page alone. Then choose **Next**.

![The Localize Content window at its first step, Select Content: What content do you want to localize? with This document, This document and related documents (chosen) and Related documents only, and a Next button.](https://mintcdn.com/fetchski-attract-api/JTZEGvERTLgfkfin/images/cms/guides/build-pages/languages/guides-build-pages-languages-localize-light.png?fit=max\&auto=format\&n=JTZEGvERTLgfkfin\&q=85\&s=3098863fb51bb98317c6d02789d9f81b)

Choose what to copy into the new language.

**4. Check the language and copy**

Check the language is ticked under **Select Locales**, choose **Next**, then choose **Localize Content**.

**5. Translate**

You're now on the page in the new language: a draft, with your main language's words in it. Choose **Edit** and replace the words with your translation, section by section.

**6. Publish**

Choose **Publish** when the translation is ready, as with any page.

You can also start from any page or item: choose **More Options** (⋯) → **Localize...**. To translate many items at once, such as all your FAQs, open their list from the command palette, select them, and choose **Localize...**.

A page's address is translated too. Open the page settings window in the new language and change its **Slug**, such as `about-us` to `a-propos`. The language's code stays in front: `/fr/a-propos`.

> [!TIP]
>
> Translate the pages your menu links to first. A page whose parent page isn't translated yet can't be translated: the CMS says "Localize the parent page first".

## Translate your header, footer and banners

**Site settings** and **Site design** have their own copy in each language. Switch language in the toolbar, then open them to translate:

* **Site design**: the header's links, its **More** label and button, the footer's link groups, scrolling text, copyright line, note and social heading.
* **Site settings**: your tagline, the maintenance message, and every word of the cookie banner and cookie preferences.

A new language starts with your main language's links, which point at your main language's pages. Point each one at the translated page.

Everything else on those screens is shared by every language: your colors, fonts, logos, business name, contact details and social links. Change one in any language and it changes in all of them.

> [!NOTE]
>
> Shared settings go live from your main language only. To put a change to one of them live, switch to your main language and publish **Site settings** or **Site design** there. Publishing them in another language publishes that language's own words, never a shared change.

## Put the language live

When the pages that matter are translated and published:

1. Open **Languages** (⌘K, T then ⇧L).
2. Set the language's **Public** to **Yes**.
3. Choose **Save**.

![Parker's site header with the language switcher open under the EN button, listing English (current) and Français.](https://mintcdn.com/fetchski-attract-api/JTZEGvERTLgfkfin/images/cms/guides/build-pages/languages/guides-build-pages-languages-switcher-light.png?fit=max\&auto=format\&n=JTZEGvERTLgfkfin\&q=85\&s=5add949eba2ca39c00590d8e882a5a16)

Visitors pick their language in your site's header.

Visitors now see:

* **A language switcher** in your site's header, and a **Language** row in the menu on phones. Each language links to the same page in that language, or to that language's home page when the page isn't translated.
* **The language's own addresses**, such as `/fr/a-propos`. A page you haven't translated isn't there in that language.
* **Each page marked with its language**, for screen readers and browsers' translate buttons.

Search engines learn which pages are translations of each other, and your sitemap lists every public language.

## Remove a language

Open **Languages**, remove the language from **More languages**, and choose **Save**. Visitors stop seeing it at once. Its translations are kept: add the same code again and they come back.

## Good to know

> [!WARNING]
>
> A few things don't change with the language yet:
>
> * **Your main language is always marked as English** to browsers and search engines, even when your site is written in another language.
> * **Your site's own buttons and labels**, such as "Language", "Appearance" and "Open menu", stay in English in every language.
> * **Google reviews and Instagram posts** show as they are in every language. They aren't translated.
> * **The cookie declaration's list of cookies** is the same in every language.

* Each language's pages and items are separate drafts. Publishing the French page doesn't publish the English one, and the other way round.
* Items a section shows, such as team members and testimonials, show only once they're translated and published in that language.

## Troubleshooting

> [accordion] “…” is not a language code
>
> Use a lowercase code, such as `fr`, or a language and country, such as `pt-br`.

> [accordion] “en” is the main language’s code
>
> `en` belongs to your main language. Give the new language its own code.

> [accordion] A page’s address starts with “/…”, and the language would hide it
>
> A page's address already starts with that code, such as a page at `/es`. Give that page a new address first (its **Slug** in the page settings window), or use a different code.

> [accordion] “/…” is already one of the site’s own addresses
>
> Some codes are taken by your site's own addresses, such as `api` or `login`. Choose a different code.

> [accordion] The language menu doesn't show in the toolbar
>
> Reload the page after you save **Languages**. The menu shows only when your site has more than one language.

> [accordion] Visitors don't see the language switcher
>
> Check the language's **Public** is set to **Yes** in **Languages**. Until it is, only people signed in to the CMS see it.

## Related

> [card] [Drafts, publishing and scheduling](https://docs.fetchski-attract.com/guides/build-pages/publish-and-schedule.md)
>
> put each translation live.

> [card] [Pages and the page tree](https://docs.fetchski-attract.com/guides/build-pages/pages-and-the-page-tree.md)
>
> rename pages and change their addresses.

> [card] [Site design](https://docs.fetchski-attract.com/guides/site-design/index.md)
>
> the header and footer each language translates.

> [card] [Toolbar and command palette](https://docs.fetchski-attract.com/guides/get-started/toolbar-and-command-palette.md)
>
> every screen and shortcut.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.