Skip to content

Internationalisation (i18n)

L'application est internationalisée avec vue-i18n (mode Composition, legacy: false). Règle de base : aucun texte visible n'est en dur dans un composant — tout passe par t().

Langues

Français (par défaut et locale de référence), allemand, anglais. La liste SUPPORTED_LANGUAGES (src/i18n/index.ts) reprend celle du dépôt d'inspiration (.lovable-ref/src/i18n) sous la forme { code, label, short }.

Catalogues

Les traductions vivent dans src/i18n/locales/{fr,de,en}.ts. fr.ts est la forme de référence ; de.ts et en.ts sont typés Translations (typeof fr), donc toute clé manquante ou en trop échoue au vue-tsc. Les clés reprennent exactement celles de la référence pour que les futurs portages d'écrans s'alignent sans renommage.

index.ts augmente DefineLocaleMessage, ce qui type les clés passées à t().

Le catalogue validation.* regroupe les messages des règles de validation de formulaire (required, email, minLength avec interpolation {min}), consommés par Regle — voir Validation de formulaires.

Détection et persistance

resolveInitialLanguage() choisit la langue au démarrage : choix persisté d'abord (clé localStorage rdt_lang, partagée avec la référence), puis préférences du navigateur (sous-balise principale, ex. fr-CHfr), enfin la langue par défaut. persistLanguage() enregistre le choix. L'ordre localStorage → navigateur reproduit celui de la référence.

Sur les pages invitées (routes guestPage : connexion, invitation, mots de passe), un paramètre ?lang valide prime sur tout le reste : la garde de langue du routeur l'applique puis le persiste avant le premier rendu (le montage attend router.isReady()), sans modifier resolveInitialLanguage(). Priorité effective sur ces pages : ?lang → localStorage → navigateur → défaut. Voir Routage & gardes pour la mécanique (application, injection, valeurs invalides).

Points d'entrée

  • i18n — l'instance branchée dans main.ts.
  • createAppI18n(locale?) — fabrique une instance neuve (utile pour isoler les tests).
  • src/components/LocaleSwitcher.vue — sélecteur FR / DE / EN : change la locale globale et persiste le choix ; sur une route guestPage, synchronise aussi ?lang dans l'URL via router.replace (URL partageable, langue préservée par les redirections du flux invité).

Le skill inspiration-to-vue détaille comment extraire la copie traduite depuis les catalogues de la référence lors d'un portage d'écran.

Contributors

No contributors

Changelog

No recent changes