Configuration multilingue de Craft CMS : Guide complet

Configuration multilingue de Craft CMS : Guide complet

Valerie Gaudette
Valerie Gaudette
January 19, 2026
Dernière mise à jour : February 15, 2026
January 19, 2026

Craft CMS gère les sites multilingues différemment de la plupart des systèmes de gestion de contenu. Au lieu de dépendre de modules de traduction, il utilise une architecture multisite native où chaque langue devient son propre site. Cette approche vous donne un contrôle précis sur le contenu à traduire et celui qui reste partagé entre toutes les langues.

Ce guide vous accompagne à travers le processus complet de configuration de la création des sites jusqu'à l'implémentation des sélecteurs de langue et des balises SEO. À la fin, vous aurez une installation Craft multilingue fonctionnelle avec une séparation adéquate du contenu et des flux de travail de traduction. En tant que guide complet de localisation Craft CMS, cette ressource couvre tout ce dont vous avez besoin pour implémenter un CMS de site web multilingue.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Craft CMS 4 ou 5 installé et fonctionnel
  • Un accès administrateur à Réglages → Sites
  • Une connaissance de base des gabarits Twig
  • Un plan des langues dont vous avez besoin
  • Une décision sur la structure des URL (chemins, sous-domaines ou domaines séparés)

Note pour les équipes : La configuration des sites fait partie du Project Config. Ajoutez et configurez les sites dans votre environnement de développement, puis déployez les changements de configuration. Ne créez pas de sites directement en production. Comprendre la configuration multilingue de Craft CMS commence par une préparation adéquate de l'environnement. 

Étape 1 : Comprendre l'architecture

Le système multilingue de Craft repose sur deux concepts.

Sites : Chaque version linguistique de votre site web est un « site » distinct dans Craft. Un site possède sa propre URL de base, son paramètre de langue, et peut avoir du contenu unique.

Groupes de sites : Les sites connexes (comme toutes les versions linguistiques de votre site principal) appartiennent à un groupe. Les relations de contenu fonctionnent au sein des groupes, et certains paramètres de propagation dépendent des groupes. Comprendre les groupes de sites Craft CMS est fondamental pour la configuration multisite de Craft CMS.

Par exemple, un groupe « Site principal » pourrait contenir :

  • Anglais (États-Unis) (site principal)
  • Français (France)
  • Allemand (Allemagne)
  • Espagnol (Espagne)

Chaque site peut avoir une structure d'URL différente :

example.com/en/about    (path-based)
en.example.com/about    (subdomain)
example.de/uber-uns     (separate domain)

Les URL basées sur les chemins sont le choix le plus courant. Elles sont plus simples à gérer et gardent l'autorité SEO consolidée sur un seul domaine.

Étape 2 : Création des sites

Allez dans Réglages → Sites et créez vos sites :

  • Créez un groupe de sites (p. ex., « Site principal »)
  • Ajoutez votre site principal (généralement l'anglais) avec :
    • Nom : « English (US) »
    • Identifiant : english
    • Langue : en-US
    • URL de base : @web/en/ (utilisant une variable d'environnement)
    • Marquer comme principal : Oui
  • Ajoutez les sites des langues supplémentaires :
    • Nom : « Français »
    • Identifiant : french
    • Langue : fr-FR
    • URL de base : @web/fr/

Répétez pour chaque langue. L'identifiant devient important pour les requêtes dans les gabarits plus tard. Ceci complète la création initiale des sites multilingues Craft CMS.

Craft 5 a une limite souple de 100 sites. Pour la plupart des projets, c'est amplement suffisant. Les projets multilingues typiques utilisent de 2 à 15 langues. Les capacités multisites de Craft CMS 5 accommodent facilement même les grands projets internationaux.

Étape 3 : Configuration de la propagation des sections

Maintenant, vous devez indiquer à Craft comment les entrées doivent se propager à travers vos sites. Allez dans Réglages → Sections et modifiez chaque section.

Options de méthode de propagation :

  • Tous les sites : L'entrée apparaît automatiquement dans chaque site
  • Groupe de sites uniquement : L'entrée reste dans son groupe de sites
  • Langue uniquement : L'entrée apparaît dans les sites ayant la même langue
  • Site actuel uniquement : L'entrée existe seulement là où elle a été créée
  • Personnalisé : Laisse les éditeurs choisir pour chaque entrée

Pour la plupart des sites multilingues, « Tous les sites » fonctionne le mieux. Quand quelqu'un crée un article de blogue en anglais, il apparaît automatiquement (prêt à être traduit) en français, allemand et dans les autres sites.

Nous avons constaté que les options « Tous les sites » ou « Groupe de sites uniquement » couvrent 90 % des cas d'utilisation. « Site actuel uniquement » est utile pour du contenu spécifique à une région qui ne devrait pas apparaître ailleurs. Des paramètres de propagation Craft CMS appropriés assurent que le contenu circule correctement entre vos sites linguistiques.

Étape 4 : Définition des méthodes de traduction des champs

C'est là que beaucoup de projets se trompent. Créer des sites et configurer la propagation ne vous amène qu'à mi-chemin. Vous devez aussi indiquer à Craft quels champs doivent être traduits.

Allez dans Réglages → Champs et définissez la méthode de traduction pour chaque champ :

  • Non traduisible : Codes de produits, identifiants, dates, tout ce qui est universel
  • Traduire pour chaque site : Corps de texte, titres, descriptions, la plupart des champs de contenu
  • Traduire pour chaque groupe de sites : Paramètres qui varient entre les groupes mais pas à l'intérieur
  • Traduire pour chaque langue : Contenu partagé par les sites de même langue (en-US et en-UK)

Sélectionner la méthode de traduction de champ Craft CMS appropriée assure que les éditeurs de contenu peuvent travailler indépendamment dans chaque langue.

Pour un blogue typique, réglez vos champs Titre et Corps sur « Traduire pour chaque site ». Laissez des éléments comme la date de publication sur « Non traduisible ».

Les blocs Matrix ajoutent de la complexité. Si vos blocs Matrix se propagent à travers les sites, vous devez aussi configurer les méthodes de traduction pour les champs à l'intérieur de ces blocs. Sinon, le contenu reste partagé même quand vous pensez traduire. La traduction Matrix de Craft CMS nécessite cette attention supplémentaire aux détails.

Depuis Craft 5.3, les champs relationnels (comme les ressources) supportent aussi les méthodes de traduction. Cela vous permet d'avoir différentes images par langue (utile pour des captures d'écran localisées ou des photos culturellement appropriées).

Étape 5 : Construction du sélecteur de langue

Voici un gabarit Twig pour un sélecteur de langue qui renvoie vers la même entrée dans différentes langues :

{% set defined_sites = currentSite.group.sites %}

<ul class="language-switcher">
{% for site in defined_sites %}
    {% set defined_entry = entry.id ? craft.entries.id(entry.id).siteId(site.id).one() : null %}
    <li>
        <a href="{{ defined_entry ? defined_entry.url : site.baseUrl }}" 
           {% if site.id == currentSite.id %}aria-current="page"{% endif %}>
            {{ site.language|slice(0, 2)|upper }}
        </a>
    </li>
{% endfor %}
</ul>

Ce code récupère tous les sites dans le groupe du site actuel, boucle à travers chacun, trouve l'entrée équivalente dans ce site (si elle existe), et crée un lien vers l'entrée traduite ou se rabat sur la page d'accueil du site. Ce patron de gabarit Twig multilingue est l'approche standard pour les implémentations de sélecteur de langue Craft CMS.

Étape 6 : Ajout des balises Hreflang

Les moteurs de recherche ont besoin des balises hreflang pour comprendre votre structure linguistique. Des balises hreflang Craft CMS appropriées sont essentielles pour les balises SEO multilingues. Ajoutez ceci dans le <head> de votre gabarit de mise en page :

{% for site in currentSite.group.sites %}
    {% set defined_entry = entry.id ? craft.entries.id(entry.id).siteId(site.id).one() : null %}
    {% if defined_entry %}
        <link rel="alternate" hreflang="{{ site.language|replace('_', '-') }}" 
              href="{{ defined_entry.url }}" />
    {% endif %}
{% endfor %}

<link rel="alternate" hreflang="x-default" href="{{ entry.url }}" />

La balise x-default indique aux moteurs de recherche quelle version afficher quand aucune correspondance de langue n'existe. Habituellement, elle pointe vers votre langue principale.

Étape 7 : Traduction des chaînes statiques

Le contenu des entrées se traduit via l'administration Craft. Mais qu'en est-il des libellés de boutons, du texte des menus et des autres chaînes d'interface codées en dur dans les gabarits?

Enveloppez ces chaînes avec le filtre |t :

<button>{{ "Read More"|t }}</button>
<span>{{ "Published on"|t }}</span>

Puis créez des fichiers de traduction dans translations/<locale>/site.php :

// translations/fr-FR/site.php
return [
    'Read More' => 'Lire la suite',
    'Published on' => 'Publié le',
];

Pour les équipes gérant plusieurs langues, considérez l'intégration avec Crowdin pour la gestion des traductions. Craft a une documentation spécifiquement pour ce flux de travail. La traduction de chaînes statiques dans Craft fait partie du système d'i18n (internationalisation) plus large de Craft CMS.

Erreurs courantes à éviter

Oublier les méthodes de traduction des champs. C'est le problème le plus courant. Les éditeurs passent au français, modifient le contenu, et se demandent pourquoi la version anglaise a aussi changé. La solution : vérifiez que les champs de contenu sont réglés sur « Traduire pour chaque site ».

Confondre propagation et traduction. La propagation contrôle si les entrées existent à travers les sites. La traduction contrôle si les valeurs des champs sont partagées ou indépendantes. Vous avez besoin des deux correctement configurés.

Confusion avec les blocs Matrix. Notre expérience montre que les blocs Matrix prennent les gens au dépourvu. Si les blocs se propagent mais que les champs internes ne sont pas configurés pour être traduits, vous vous retrouvez avec du contenu partagé qui ne devrait pas l'être.

Balises hreflang manquantes sur toutes les pages. Les balises hreflang devraient apparaître sur chaque page, pas seulement sur la page d'accueil. Assurez-vous que votre gabarit de mise en page gère les entrées, les pages de catégories et toutes les routes personnalisées.

Étapes de vérification

Après la configuration, testez votre installation :

  • Créez une entrée de test dans votre langue principale
  • Passez à un autre site linguistique et confirmez que l'entrée apparaît
  • Modifiez l'entrée dans la langue secondaire et vérifiez que la version de la langue principale reste inchangée
  • Vérifiez que le sélecteur de langue renvoie vers les bonnes URL traduites
  • Consultez le code source de la page pour confirmer la présence des balises hreflang
  • Testez le formatage des dates, les dates devraient s'afficher dans des formats appropriés à la locale
{# Locale-aware date formatting #}
{{ entry.postDate|date('long') }}
{# English: January 15, 2024 #}
{# French: 15 janvier 2024 #}
{# German: 15. Januar 2024 #}

Options de flux de travail de traduction

Le flux de travail intégré de Craft fait en sorte que les éditeurs traduisent le contenu directement dans le panneau de contrôle. Pour des besoins plus complexes, considérez ces extensions :

Multi Translator gère la traduction en lot en utilisant DeepL, Google Cloud Translation ou OpenAI. Il fonctionne avec Matrix et le contenu imbriqué.

Translations by Acclaro s'intègre avec des services de traduction professionnels pour les projets à plus grand volume.

L'intégration Crowdin aide à gérer les grands projets de traduction avec des équipes externes.

La traduction automatique fonctionne bien pour les premières ébauches. Les équipes avec lesquelles nous travaillons l'utilisent souvent pour obtenir un point de départ, puis font réviser le contenu destiné aux clients par des traducteurs humains. Un bon flux de travail de traduction Craft CMS combine l'automatisation avec la révision humaine pour de meilleurs résultats.

Conclusion

Construire un site multilingue dans Craft CMS se résume à comprendre trois choses : les sites définissent votre structure linguistique, la propagation contrôle la disponibilité des entrées, et les méthodes de traduction des champs déterminent ce qui est traduit. Configurez correctement ces trois éléments, et le reste (gabarits, balises SEO, chaînes statiques) suit naturellement. Votre implémentation multilingue Craft CMS évoluera en douceur à mesure que vous ajouterez des langues.

Le blocage le plus courant est la distinction entre propagation et traduction. Une fois que ça clique, le système devient simple.

Si vous planifiez un projet Craft multilingue et voulez valider votre architecture avant de construire, nous pouvons vous aider à définir la structure du site, la configuration des champs et le flux de travail de traduction qui convient aux besoins de votre équipe de contenu.

Share this article