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

# Locales

A **locale** is a language the project supports. The locale catalog lives at the project level - it's the list every [region](https://docs.frontic.com/project-settings/regions.md) can pick from when declaring which languages to serve. A locale is identified by a short key (`en`, `de`, `fr-CA`) used in API responses and translation lookups.

Translatable fields on [Data Storages](https://docs.frontic.com/data-integration/data-storages.md) and [Blocks](https://docs.frontic.com/api-builder/blocks.md) store one value per locale. When a request resolves to a specific locale, the matching translation comes back; if the translation is missing, the region's default locale applies as a fallback.

## Configuring locales

Open **Settings → Locales** and add the languages your project supports. Each locale has:

* **Name** - human-readable label like "English" or "German".
* **Key** - the stable identifier (ISO 639-1 codes like `en`, `de`, or BCP-47 tags like `fr-CA` when you need to distinguish regional variants). Set on creation and locked afterwards - translations are stored against the locale's identity, so renaming would orphan them. To change a locale's key, delete and re-add the locale.

**project-settings/locales-list**

Project Settings Locales page listing English (United Kingdom) and German (Germany) with their keys en-GB and de-DE

![Project Settings Locales page listing English (United Kingdom) and German (Germany) with their keys en-GB and de-DE](https://mintcdn.com/frontic/8nGuRM1LMzfAjNYy/images/project-settings/locales-list-light.png?fit=max\&auto=format\&n=8nGuRM1LMzfAjNYy\&q=85\&s=8ae592c28bba17658c7bec245c41d22b)

Locales list - the project's language catalog

## Catalog vs. region support

The project locale catalog is the **master list**; regions pick a subset:

1. Add every language the project might ever serve to the catalog (e.g. `en`, `de`, `fr`, `es`).
2. On each [region](https://docs.frontic.com/project-settings/regions.md), enable the locales that region supports and mark one as the default.
3. A request bound to a region can only return translations for the locales that region allows.

Don't leave unused locales lying around. Every locale in the catalog has to be mapped in each [Data Sync](https://docs.frontic.com/data-integration/value-composer.md) and is rendered into every translatable response, so an unused locale adds work to the data pipeline without serving any traffic. If a region has stopped supporting a locale, drop it from the project catalog too.

## When to add a new locale

Add a locale when you're about to ship content in that language. Common triggers:

* A new market opens that needs its own language (expanding into France → add `fr`).
* A regional variant diverges enough to need its own strings (`fr-CA` for Canadian French where the copy reads differently from mainland French).
* Your translation team finishes a pass and you're ready to activate that language on a region.

Keep the catalog tight. Each extra locale multiplies the translation work across every translatable field; remove unused ones before they gather dust.

## Related

> [card] [Regions](https://docs.frontic.com/project-settings/regions.md)
>
> Pick which of the catalog locales apply in each market, with a default per region.

> [card] [Domains](https://docs.frontic.com/project-settings/domains.md)
>
> Bind URL paths like `demo-shop.com/de` to a specific locale at routing time.

> [card] [Multi-channel & region](https://docs.frontic.com/commerce-concepts/multi-channel-region.md)
>
> The full commerce-native composition of scopes, regions, locales, and domains.


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