Aller au contenu

Internationalisation

Le paquet packages/i18n (ADR 0037) porte les textes et les formats. Il n’a aucun écran : le back-office et l’application terrain l’importeront.

Besoin Exigence Fonction
Tout texte existe en français et en anglais EX-070 traduire(langue, cle, params) ; parité des clés vérifiée par test
Langue de l’utilisateur, sinon de l’entreprise, sinon français EX-072 choisirLangue({ utilisateur, organisation })
Langue d’un document indépendante de l’interface EX-073 la langue est un argument de chaque fonction
Libellés de référence bilingues EX-074 libelleDans(libelle, langue, langueOrganisation)
Troisième langue sans toucher au code EX-076 déposer src/catalogues/{langue}.json
Messages d’erreur de l’API et motifs de contrôle EX-070 messageErreur, libelleMotif

La mémorisation du choix sur l’appareil et le sélecteur de langue (EX-071) viendront avec les premiers écrans.

Les calculs restent en entiers ; la conversion n’a lieu qu’à l’affichage.

Donnée Exemple en français Fonction
Grammes 750 g, 1,25 kg, 1,25 t formaterGrammes
Centièmes de point 70 % formaterCentiemesPoint
Montant en unités mineures 12 345,67 € ; 655 957 F CFA formaterMontant (décimales lues dans la devise)
Date 30/09/2026 formaterDate (une date seule n’est jamais décalée ; un instant est lu dans le fuseau de l’organisation)

Une espace insécable sépare le nombre de son unité.

  1. Copier src/catalogues/fr.json en {code}.json (deux ou trois lettres minuscules) et traduire les valeurs, y compris meta.locale (es-ES) et meta.nom.
  2. Lancer pnpm --filter @biotrace/i18n test : le script enregistre le fichier, les tests vérifient les clés et les paramètres.
  3. Côté données : app.organisation.langue n’accepte que fr et en, et le royaume Keycloak ne propose que ces deux langues (écart EC-056).

Une clé absente d’une langue se replie sur le français, puis sur la clé elle-même.