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