Appearance
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
contextStoredepend defacilityStore,areaStoreetactiveLocale.createContextFromDatareçoit la valeur courante de locale et renseignecontext['locale']etcontext['lang'].langest derivee depuislocaleavec la forme courte en minuscules (ex:fr-FR->fr,en_US->en).langest une variable integree prioritaire et écrase une éventuelle clé CMSlangdéfinie dansdata_general.- Le contexte final continue d'inclure les variables techniques existantes (
uid,ip,server, etc.).
Comportement Réactif
- Un changement de
activeLocaledeclenche automatiquement une nouvelle emission decontextStore. - 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 avantwindow.open(...), ce qui aligne leur comportement avec les autres flux dynamiques.
Couverture de Tests
src/lib/stores/contextStore.test.tsvalide quecontextStore.data.localeetcontextStore.data.langsuivent le changement de langue (fr-FR->en-US).- Les tests couvrent aussi la priorite de la variable integree
langface a une cle CMS homonyme.