Skip to content

🗄️ 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 :

  • activeLocale dĂ©termine la langue principale.
  • fallbackLocale est calculĂ© Ă  partir de navigator.language (si diffĂ©rente de fr-FR), sinon en-US.
  • Le helper resolveTranslationFields choisit la meilleure traduction et renvoie des champs normalisĂ©s.

Modèle de Données ​

Un contenu multilingue expose :

  • multilingual: true
  • translations: [{ 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 translations uniquement.
    • Cascade : activeLocale -> fallbackLocale -> première traduction.
    • Si aucune traduction, retourner des champs vides.
  • 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-FR ou navigator.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.