Skip to content

Détails d'Implémentation

Source de Vérité

  • La langue active est stockée dans activeLocale (src/lib/stores/preferences.ts).
  • Le selecteur de langue de la sidebar appelle activeLocale.set(locale) (src/lib/sidebar/Sidebar.svelte).

Injection du Contexte

  • contextStore depend de facilityStore, areaStore et activeLocale.
  • createContextFromData reçoit la valeur courante de locale et renseigne context['locale'] et context['lang'].
  • lang est derivee depuis locale avec la forme courte en minuscules (ex: fr-FR -> fr, en_US -> en).
  • lang est une variable integree prioritaire et écrase une éventuelle clé CMS lang définie dans data_general.
  • Le contexte final continue d'inclure les variables techniques existantes (uid, ip, server, etc.).

Comportement Réactif

  • Un changement de activeLocale declenche automatiquement une nouvelle emission de contextStore.
  • Les composants utilisant Mustache.render(..., $contextStore.data) ré-évaluent les templates avec la nouvelle valeur.
  • Les deeplinks lances via performMenuAction('deeplink', ...) rendent aussi Mustache juste avant window.open(...), ce qui aligne leur comportement avec les autres flux dynamiques.

Couverture de Tests

  • src/lib/stores/contextStore.test.ts valide que contextStore.data.locale et contextStore.data.lang suivent le changement de langue (fr-FR -> en-US).
  • Les tests couvrent aussi la priorite de la variable integree lang face a une cle CMS homonyme.