Voyons, avec la variable {{ page.date }}, comment formater les dates dans Jekyll en français (ou tout autre langue), à l’aide du puissant langage de template liquid.

La variable {{ page.date }} permet de récupérer la date d’une page dans Jekyll. Le problème c’est que lorsqu’on veut afficher cette date sur le site, le formatage produit de l’anglais. En effet, {{ page.date | date: "%b %-d, %Y" }} produira par exemple Apr 29, 2017. On peut évidemment échanger les places de %b et %-d (qui donnent respectivement le nom du mois et le quantième 1), mais il n’existe pas de formatage % qui donne le mois en français.

Heureusement, le langage de template liquid nous permet de résoudre cela aisément.

Le code

Le code suivant permet d’écrire la date au format jj mois aaaa, le mois traduit en français, et en tenant compte du fait que pour le premier jour du mois, il faudra afficher 1er et non 1.

Pour faire cela proprement, je recommende d’écrire le code suivant dans un fichier date.html, à placer dans le dossier _include. Ainsi il suffira de l’inclure où on le souhaite avec {% include date.html date=page.date %}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{% assign j = include.date | date: "%-d" %}
{% assign m = include.date | date: "%-m" %}

{% if j == '1' %}
1er
{% else %}
{{j}}
{% endif %}
{% case m %}
  {% when '1' %}janvier
  {% when '2' %}février
  {% when '3' %}mars
  {% when '4' %}avril
  {% when '5' %}mai
  {% when '6' %}juin
  {% when '7' %}juillet
  {% when '8' %}août
  {% when '9' %}septembre
  {% when '10' %}octobre
  {% when '11' %}novembre
  {% when '12' %}décembre
{% endcase %}
{{ include.date | date: "%Y" }}

Ce code est inspiré de 2 et 3.

Échapper du code liquid

En bonus, voilà comment échapper du code liquid, ce qui m’a permis d’écrire le code ci-dessus dans Jekyll : il faut inclure le code entre les balises {% raw %} et {% endraw %}.

Enfin, échapper du code qui sert à échapper du code, voilà un sujet de discussion bien cocasse4….

Notes et références