Appearance
🗄️ Traductions CMS (Directus) ​
Ce document détaille comment l'application gère les contenus multilingues provenant de Directus.
Problématique ​
Le CMS peut retourner des contenus multilingues. Quand multilingual = true, les champs racine (title, content, excerpt, link_title) ne sont plus remplis et seules les traductions dans translations[] sont disponibles. L'application doit afficher le bon texte selon la langue active, avec un fallback prévisible.
Aperçu de la Solution ​
Nous appliquons une résolution de traduction centralisée :
activeLocaledétermine la langue principale.fallbackLocaleest calculé à partir denavigator.language(si différente defr-FR), sinonen-US.- Le helper
resolveTranslationFieldschoisit la meilleure traduction et renvoie des champs normalisés.
Modèle de Données ​
Un contenu multilingue expose :
multilingual: truetranslations: [{ languages_code, title, content, excerpt, link_title, ... }]
Le champ languages_code est utilisé pour la sélection de la langue.
Comportement ​
- Si
multilingual = true:- Utiliser
translationsuniquement. - Cascade :
activeLocale->fallbackLocale-> première traduction. - Si aucune traduction, retourner des champs vides.
- Utiliser
- Si
multilingual = false: utiliser les champs racine.
Notes UX ​
- Pas d'erreur visible si une traduction manque.
- La langue active peut ĂŞtre fournie par
?lang=fr-FRounavigator.language.
Guide d'Implémentation ​
Voir implementation.md pour les détails d'intégration.
Exemples de Code ​
Voir examples/README.md pour des exemples de données et d'utilisation.
Dépannage ​
Voir troubleshooting.md pour les cas d'erreur courants.
Compatibilité ​
Voir compatibility.md pour la matrice de compatibilité.
Performance ​
La résolution de traduction est locale, synchrone, et ne déclenche pas de requêtes réseau. Elle est appliquée au plus près des mappers pour limiter les recalculs en UI.