Internationalisation
Traductions typées, pluralisation, formatage de dates/nombres et changement de langue avec Paraglide JS.
Sélection de la langue
Ordre de détection : préfixe URL → Cookie → Langue de base (anglais)
Langue actuelle: Français (fr)
Formatting locale: fr-FR
Messages traduits
Pluralisation
ICU MessageFormat handles pluralization rules per language.
Formatage des dates et nombres
Formatting uses the browser's Intl API, decoupled from the translation locale. A German user in Switzerland gets German text but Swiss number formatting.
Content Translation (Database)
The tc() helper translates JSON fields from the database, falling back through: current locale → English → first available.
Database Schema Pattern
// JSON columns for translated content
title: jsonb('title').$type<Record<string, string>>()
// Data: { "en": "Hello", "de": "Hallo", "fr": "Bonjour" }Sécurité de type
Toutes les clés de messages sont vérifiées à la compilation avec un support IntelliSense complet. Les clés manquantes ou les paramètres incorrects provoquent des erreurs de build, pas des erreurs d'exécution.
Compile-time Guarantees
// ✅ Type-safe with autocomplete
m.greeting({ name: 'Alice' });
// ❌ Compile error — missing parameter
m.greeting();
// ❌ Compile error — unknown message key
m.unknownKey();