Logo de Cecil Cecil
Sur cette page

Traduire un site en plusieurs langues

Cecil gère nativement les sites multilingues : il suffit de déclarer les langues, d’ajouter les pages traduites, puis de les relier entre elles et de traduire les templates.

Déclarer les langues

Définissez la langue principale et la liste des langues disponibles dans cecil.yml :

language: en
languages:
  - code: en
    name: English
    locale: en_US
  - code: fr
    name: Français
    locale: fr_FR
    config:
      title: "Mon site en français"

Les options placées sous la clé config d’une langue remplacent les options globales (ici le title du site).

Traduire une page

Dupliquez la page de référence et suffixez son nom de fichier avec le code de la langue :

pages/
├─ about.md    # la page de référence
└─ about.fr.md # la version française

Utilisez la variable slug pour traduire l’URL de la page :

---
title: À propos
slug: a-propos
---

about.md est publiée sur /about/ et about.fr.md sur /fr/a-propos/.

Relier les pages traduites

Chaque page expose ses traductions via page.translations. Ajoutez un sélecteur de langue à votre template :

{% for p in page.translations %}
  <a href="{{ url(p) }}" hreflang="{{ p.language }}">{{ site.language.name(p.language) }}</a>
{% endfor %}

Vous pouvez aussi inclure le partial intégré : {{ include('partials/languages.html.twig') }}.

Traduire les textes des templates

Encadrez les textes avec le tag ou le filtre trans :

{% trans %}Read more{% endtrans %}
{{ 'Read more'|trans }}

Ajoutez ensuite un fichier de traduction nommé d’après la locale de la langue dans le dossier translations :

# translations/messages.fr_FR.yaml
Read more: Lire la suite

Extrayez les textes de vos templates avec :

php cecil.phar util:translations:extract --locale=fr_FR --save