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

# Langues & i18n — vue d'ensemble

> Comment Le Commis gère le français et l'anglais : ce qui est traduit, ce qui ne l'est pas.

Le Commis expose deux langues : **`fr`** (le français, langue par défaut) et **`en`** (l'anglais). Il n'y a pas d'autre locale.

Le multilingue ne couvre **que le contenu des menus**. L'identité de l'établissement (nom, description, catégorie) n'est jamais localisée : elle est servie telle qu'elle a été saisie.

## Le multilingue est un choix de l'établissement

L'anglais n'est **pas** une traduction automatique produite à la volée par l'API. Les langues d'un menu sont décidées **au moment où l'établissement le génère**. Pour chaque menu, l'établissement choisit :

* **les langues produites** — le **français** (toujours présent par défaut), et éventuellement l'**anglais** ;
* **le format des fichiers** — soit **un fichier par langue** (vous obtenez alors des `language_scope` `fr` et `en` distincts), soit **un seul fichier couvrant plusieurs langues** (un `language_scope` `fr_en`).

C'est ce choix qui explique les trois valeurs de `language_scope` (`fr`, `en`, `fr_en`) que vous voyez sur les [fichiers du menu](/integrations/api/menus#fichiers-du-menu-champ-assets).

<Note>
  Conséquence : l'anglais n'est disponible que si l'établissement l'a produit. Un menu peut n'exister qu'en français — `?locale=en` renverra alors le texte français (repli `en → fr`) et il peut n'y avoir **aucun fichier anglais**. Contrôlez toujours `language_scope` avant d'afficher un fichier.
</Note>

## Ce qui est traduit

Seul le **contenu de menu** est multilingue :

* les **noms et descriptions d'items** ;
* les **noms de sections** d'un menu.

Ces champs respectent le paramètre `?locale` sur les endpoints menus. Voir [Choisir la langue](/i18n/selecting-language).

## Ce qui n'est PAS traduit

L'identité de l'établissement n'est pas localisée :

* `name`, `description`, `category` ;
* les coordonnées, l'adresse, les horaires.

<Note>
  Le champ `establishment.language` vaut **toujours `"fr"`**, en dur, quel que soit le contexte. Ne vous appuyez pas dessus pour deviner la langue d'une réponse — utilisez la locale que vous avez vous-même demandée.
</Note>

## Locale par défaut et valeurs invalides

| Situation                            | Comportement                                                              |
| ------------------------------------ | ------------------------------------------------------------------------- |
| `?locale` absent                     | Le contenu est servi en **`fr`**                                          |
| `?locale=en`                         | Le contenu est servi en **`en`** (avec repli FR si une traduction manque) |
| `?locale=` invalide (ex. `de`, `es`) | Coercé **silencieusement en `fr`**, aucune erreur                         |

Seuls les endpoints `/menus` et `/menus/{menu_type_slug}` consomment la locale (ainsi que la redirection `/r/menus`). Les endpoints `establishment` et `hours` ne sont pas localisés.

<Note>
  Le repli ne fonctionne que dans le sens **`en → fr`** sur le contenu textuel : un champ sans traduction anglaise retombe sur sa valeur française. Il n'y a aucun repli `fr → en`, ni aucun repli sur les fichiers du menu (champ `assets`). Voir [Comportement de repli](/i18n/fallback-behavior).
</Note>

## Pour aller plus loin

<CardGroup cols={2}>
  <Card title="Choisir la langue" icon="globe" href="/i18n/selecting-language">
    Le paramètre `?locale=fr|en` sur les endpoints menus, avec des exemples curl.
  </Card>

  <Card title="Comportement de repli" icon="arrows-left-right" href="/i18n/fallback-behavior">
    Le repli `en → fr` sur le contenu, et l'absence de repli sur les fichiers du menu.
  </Card>

  <Card title="Sites multilingues" icon="layer-group" href="/i18n/multilingual-sites">
    Bonnes pratiques de cache, de build et d'affichage pour un site fr/en.
  </Card>

  <Card title="content_revision" icon="rotate" href="/integrations/api/content-revision">
    Une révision commune à toutes les locales pour invalider votre cache.
  </Card>
</CardGroup>
