> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Module i18n

Le contrat de locale que toutes les surfaces partagent.

## Avant de commencer

Ouvrez votre projet supastack téléchargé dans Visual Studio Code en utilisant Fichier → Ouvrir le dossier, puis choisissez Terminal → Nouveau terminal. La racine du référentiel est le dossier contenant package.json, les applications et les packages. Exécutez la commande ci-dessous et laissez son terminal ouvert. Si une commande n'est pas reconnue, terminez le guide d'installation de l'outil avant de continuer.

Lisez d’abord le didacticiel de la plateforme. Un serveur est le processus d'application qui répond aux requêtes du navigateur ou du téléphone. Le Web lit apps/web/.env.local, Expo lit apps/mobile/.env.local et les commandes de migration de base de données lisent root .env. La démonstration sans base de données/tableau de bord est distincte des comptes réels/auth, qui nécessitent une migration Postgres. Un paiement sur téléphone ou sur ordinateur uniquement nécessite un backend Web exécuté séparément.

[Installez les outils et récupérez le code](https://supastack.dev/fr/docs/web/before-you-start.md)

[Apprendre les commandes, les fichiers et la configuration](https://supastack.dev/fr/docs/web/terminal-basics.md)

[Terminez le didacticiel Web de première exécution](https://supastack.dev/fr/docs/web/ship-in-5-minutes.md)

```
corepack pnpm --filter @supastack/web dev
```


## Configuration et paramètres

packages/i18n possède l'ensemble des locales et le contrat de résolution : SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, isAppLocale, resolveLocale, localePath et getDictionary. Routes web, chaînes mobile et mails transactionnels lisent tous le même package.

L'ordre de résolution est préfixe de chemin → cookie → Accept-Language → défaut. localePath(locale, path) produit le href canonique — sans préfixe pour la locale par défaut, /{locale}/… sinon — et la couche proxy l'applique.

```
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";

const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;
```


## Processus d’implémentation

Ajoutez une chaîne visible utilisateur d'abord aux types du dictionnaire, puis dans chaque locale — la suite de complétude de traduction échoue sur les clés manquantes et sur l'anglais resté non traduit.

Ne branchez jamais la logique produit sur la locale ; les dictionnaires sont de la présentation. Formatez dates, nombres et pluriels via les APIs Intl avec la locale résolue plutôt que des gabarits de chaînes.


## Vérification et dépannage

Après avoir touché des clés, lancez les tests du package i18n plus la suite de complétude site-content. Vérifiez au passage une route préfixée par locale, le sélecteur de langue et la détection Accept-Language avec un cookie effacé.


## Suivant

[Espaces de travail](https://supastack.dev/fr/docs/modules/workspaces.md)
